Po-util: The Ultimate Local Particle Experience for Linux and macOS

Hi @awardblvr,

Please update po-util with:

po update

And then use the blynk library optimized for po-util:

po lib rm blynk-library
po lib purge blink-library
po lib get https://github.com/nrobinson2000/blynk
po lib add blynk

2017-7-29: UPDATE

I have found a method for Linux to open devices on the default baud rate of 14400 to put them into DFU mode. No more 19200 baud workaround!

Also, po-util now installs all of its dependencies and components in ~/.po-util to stay more organized. Below are the instructions to remove the old components and update po-util on macOS and Linux:

$ cd ~/github
$ rm -rf particle pi redbearduo dfu-util
$ rm -f ~/.po
$ rm -rf ~/bin/gcc-arm-embedded #Linux Only
$ sudo rm -f /usr/local/bin/arm-non-eabi* #Linux Only
$ bash <(curl -sL https://master.po-util.com/install)

I had the arduino IDE up and functional.

arduino IDE 1.8.3
I had Teensyduino 1.3.7 working too
I have the Raspberry agent installed on the latest raspbian
these worked today.

I am on RPI 3

I can still compile on the arduino IDE for teensy and other boards but the serial monitor freezes.
I installed po-utils today.

the serial monitor in the arduino IDE stops after only a few lines

pi@TELEZrpi3:~ $ type po
po is /usr/local/bin/po
pi@TELEZrpi3:~ $ which po
pi@TELEZrpi3:~ $ po list

Found the following Particle Devices:

Electron: /dev/ttyACM0

USB_Serial: /dev/ttyACM1

pi@TELEZrpi3:~ $

I wonder what happened to my serial port for serial monitor in the Arduino IDE

well did some other installs…

I am building ATOM on the rpi3…

I got the serial monitor working at 19200…for now

I will try to monitor the electron and see if that works

I did get apm and atom on my rpi3.

after a bit of flipping through


Nice. I haven’t tested po-util on raspberry pi much. Are you able to build projects?

Well it appears that I have NPM APM and the particle cli stuff installed and functional on the rpi3. po utils is installed so I could now do a po update…first I will run an image…but the Aruduino Ide and Teensyduino and all the other stuff I put on this box appears functional…i supose I can even tweak my own pi agent on this machine with itself.

I will count my blessings and run an image …

I even like the performance…

#2017-8-20: UPDATE

Po-util now uses gcc-arm 5.3 to be compatible with newer firmware.

Update on Linux:

po update
po install

Update on macOS:

brew uninstall gcc-arm-none-eabi-49
po update
po install

You can now use po-util.com/raw to view the po-util site in a more minimal form and access some handy redirect links.

I’ve made some updates to po-util recently:

  • A lot of the code has been cleaned up
  • Flash and Ram usage for firmware is displayed when firmware is built
  • If the project you are building or the platform you are building for is different from what it was the last time you built, the firmware will automatically clean before building

Preview the new features here.

Also, for now I’ve only implemented these features for Mac, as the Linux version needs an overhaul. You can view the Trello board here: https://trello.com/b/TSB40DMC/po-util

Thank you so much!

1 Like

The Linux version now has the features mentioned above.

You can get the update with:

$ po update

As always you can install with:

$ bash <(curl -sL master.po-util.com/install)

The Trello board can be viewed here: https://trello.com/b/TSB40DMC/po-util

If anyone is interested in contributing to po-util, whether it be donations, publicity, code, documentation, etc, you can contact me here on the Particle Community with a PM, Join the Gitter Room, or Make an issue.


How to use this po-util tool in Visual Studio Code? Can I use same Atom Build shortcut?


Po-util uses the build package for atom to provide the shortcuts.

I bet there is a similar way to do this in Visual Studio Code but I haven’t looked into it because I don’t use Visual Studio Code personally.

Supporting multiple IDE’s is a goal for po-util.

Have you checked out CLion? It looks really neat…

After maintaining po-util for 2 years I have announcement to make. I have released the next generation of po-util, and named it po. I’ve refactored much of the script, broke it up into modular components, and reunited the Mac and Linux versions into a single, stable project.

All future development will be on po, but I will keep the old versions of po-util around.

Feel free to check it out, star it on GitHub, or install po.

1 Like

I’ve made a lot of improvements recently, notably refactoring code and adding a few more commands, like the reboot command which allows you to quickly force a reboot on a device.


$ po reboot # Reboot an automatically chosen device
$ po reboot -d /dev/ttyACM0 # Reboot a specific device

Also, the Linux DFU sticking problem has been resolved.

As always you can install po using:

$ bash <(curl -sL get.po-util.com)

You can join the Gitter room as well to get the latest info or to get po support.

1 Like

I’ve added a new feature that makes it easier to choose which version of Device OS you want to use when compiling.

You can now run po versions to get the list of all Device OS versions.


$ po versions
Finding Particle Device OS versions...
Use one of these versions with 'po config'

You can then select a version with po config:

$ po config release/v0.8.0-rc.8
$ po update # only necessary if the version has been released sooner than you've updated po

You can get this new feature by updating your po installation:

$ po update
1 Like

If you had to pay a price for po-util what would you be willing to pay? (I’m not planning on monetizing po-util but I’m curious about the value it has.)

And yes, I’ll be adding Mesh support ASAP.

If you’ve got a few minutes, why don’t you offhand a feature comparison chart b/t other tools and po-util? I’ve used it and I’m not even sure what all it can do!

1 Like

Here are the most distinctive features:
(There are many more but they are more technical.)

  • Po-util is the only comprehensive local Particle development experience. The installer can prepare a Mac or Linux machine for Particle development in minutes.

  • Po-util has a distinct flow for building and uploading firmware. You can compile a project and flash the firmware to a Particle device with a single command.

  • Po-util supports all Particle devices, even Raspberry Pi and Redbear Duo.

  • Po-util has an Atom integration that provides shortcuts for compiling projects and uploading firmware over USB or wirelessly.

  • Po-util has a library manager that can automatically download and link libraries from Particle or GitHub directly into your project. It also has an example manager that can list and import example projects from downloaded libraries.

  • Every po-util project is initialized as a Git repository that is Travis CI ready so you can test your code compilation on Travis CI.

  • Po-util can package projects as a folder and a .zip so that your projects can be compiled with tools other than po-util or on computers that don’t have the libraries your project may depend on.

  • Po-util has commands for controlling the state of Particle devices. There are commands to put devices into and out of listening mode, dfu mode, and safe mode.

  • Po-util is actively developed and you can reach out to me with any comments or suggestions.