All Projects → nrobinson2000 → po-util

nrobinson2000 / po-util

Licence: GPL-3.0 License
Classic Edition of po-util: The Ultimate Local Particle Experience for Linux and macOS

Programming Languages

shell
77523 projects
C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to po-util

neopo
A lightweight solution for local Particle development.
Stars: ✭ 19 (-62.75%)
Mutual labels:  toolchain, firmware, particle
Elinux
嵌入式 Linux 知识库 (elinux.org) 中文翻译计划;本项目发起人发布了《360° 剖析 Linux ELF》视频课程,欢迎订阅:https://www.cctalk.com/m/group/88089283
Stars: ✭ 193 (+278.43%)
Mutual labels:  toolchain, firmware
Have It
The fastest NPM install does nothing because you already have it
Stars: ✭ 75 (+47.06%)
Mutual labels:  offline, installer
data-api-suite
Monorepo that includes libraries, Serverless Framework plugins and development tools to simplify and enhance the development, deployment and use of the Data API for Aurora Serverless.
Stars: ✭ 23 (-54.9%)
Mutual labels:  local, offline
Lxrunoffline
A full-featured utility for managing Windows Subsystem for Linux (WSL)
Stars: ✭ 3,005 (+5792.16%)
Mutual labels:  utility, installer
K8s Offline
Offline installation package for kubernetes.
Stars: ✭ 72 (+41.18%)
Mutual labels:  offline, installer
Gort
Command Line Interface (CLI) for RobotOps
Stars: ✭ 425 (+733.33%)
Mutual labels:  firmware, particle
angular-http-cache
Speed up your remote requests by automatically caching them on client and add support for offline navigation.
Stars: ✭ 25 (-50.98%)
Mutual labels:  local, offline
deadlines
A simple, offline deadline tracker made with Vue.js and localForage.
Stars: ✭ 22 (-56.86%)
Mutual labels:  local, offline
particle-cookbook
A collection of programming snippets, tips, and tricks for developing with Particle IoT devices
Stars: ✭ 20 (-60.78%)
Mutual labels:  particle-photon, particle
Tasmota-specials
Tasmota unofficial firmware builds. Install via Tasmota WebInstaller
Stars: ✭ 54 (+5.88%)
Mutual labels:  firmware, installer
facebook-send-api-emulator
Facebook Messenger Emulator & Facebook Send API Emulator functionality allowing you to test web hooks on developer's machine.
Stars: ✭ 24 (-52.94%)
Mutual labels:  local, offline
smcutil
SMC utility for modifying and examining Apple's SMC payloads.
Stars: ✭ 30 (-41.18%)
Mutual labels:  utility, firmware
tdme2
TDME2 - ThreeDeeMiniEngine2 is a lightweight, multi-platform 3D engine including tools suited for 3D game/application development using C++
Stars: ✭ 86 (+68.63%)
Mutual labels:  installer, particle
springboard
Springboard jumpstarts your projects for you. Hello, warp speed.
Stars: ✭ 13 (-74.51%)
Mutual labels:  utility
go-ethutil
Ethereum utility functions for Go.
Stars: ✭ 17 (-66.67%)
Mutual labels:  utility
SetupBuilder
Gradle plugin for building setups for different platforms.
Stars: ✭ 75 (+47.06%)
Mutual labels:  installer
zarch
The Ultimate Script For Arch Linux
Stars: ✭ 49 (-3.92%)
Mutual labels:  installer
leon
🧠 Leon is your open-source personal assistant.
Stars: ✭ 8,560 (+16684.31%)
Mutual labels:  offline
pinetime-hypnos
Zephyr firmware for the nRF52832 PineTime smartwatch
Stars: ✭ 52 (+1.96%)
Mutual labels:  firmware

This tool has been deprecated. Please upgrade to neopo.

Particle Offline Utility: The Ultimate Local Particle Experience for Linux and macOS

Join the chat at https://gitter.im/po-util/Lobby Build Status Circle CI

Particle Offline Utility, pronounced po-util, is a tool for installing and using the Particle Toolchain on Linux and macOS.

po-util makes it easy for developers to download the Particle Toolchain and install the required dependencies to quickly begin creating projects using the Particle Platform.

po-util features a responsive experience, giving developers the tools they need for seamless local development, providing understandable commands for simplifying complex tasks like properly compiling and flashing firmware.

Install

There are two versions of po-util. The first is po-util Classic, which is designed for Linux distributions. The second is po-util Homebrew Edition, which is designed for macOS.

The quickest and easiest way to install po-util on Linux or macOS is to run the following:

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

Note: Both versions of po-util have the same features. In December 2016, Homebrew Edition was forked from po-util in order to allow po-util to be installed with Homebrew. The original po-util was renamed to Classic, and was made Linux exclusive. Both Classic and Homebrew Edition continue to be developed and maintained in parallel.

Key Features

Library Manager

The library manager makes it easy to use Particle libraries when developing with po-util locally by using git to download Particle libraries hosted on GitHub and save them to a ~/.po-util/lib directory so that they make be linked inside of projects later. Read more about the Library Manager here.

Full dependency setup

po-util installs all of the dependencies required for local Particle Development, including the ARM toolchain, dfu-util, nodejs, particle-cli and the Particle firmware.

Local compilation and support for flashing over USB or OTA

Building firmware locally for Electrons, Photons and P1s, and automatically flashing over USB using dfu-util or Over The Air using particle-cli. Sequentially flashing multiple devices at once over the air is also supported.

Shortcuts for Building in Atom

po-util supports shortcuts for Atom, the popular open- source IDE by GitHub. The shourcuts provide quick access to commonly used commands for po-util, including: building firmware, flashing firmware over USB, and flashing firmware Over The Air. Read more about the shortcuts here.

Project Structure

The directory structure of a full po-util project is arranged like so:

firmware/
├ main.cpp
└ lib1/
  ├ lib1.cpp
  ├ lib1.h
  └ ...
bin/
├ firmware.bin
└ ...
 ci/
 devices.txt
 libs.txt
 .atom-build.yml
 .travis.yml
 .gitignore
 .git/
 README.md
  • All user code is kept inside of firmware/.
  • The compiled binary will be named firmware.bin, and it will be in bin/.
  • You can keep track of which devices are in a project and list which ones to be flashed Over The Air in devices.txt.
  • Libraries are kept track of in libs.txt.
  • Atom shortcuts are configured in.atom-build.yml.
  • Every po-util project is initialized as a repository with scripts in ci/ to use Travis CI for testing.

Project setup

When using po-util, your code is arranged into projects with the structure described above. This not only lets you easily work on many projects on one computer, but it provides a standardized way of building locally.

Creating a project with po-util is simple when you use po init to initialize a project by creating the necessary files. Below is an example:

$ po init DEVICE_TYPE someProject

You can set DEVICE_TYPE to either photon, P1, electron, core, pi, or duo. This is necessary for generating the Atom shortcuts file appropriately.

More Information

Here is some more information about using po-util.

Writing Firmware

po-util compiles any .cpp and .h files found in the firmware/ directory, but not .ino files, so #include "Particle.h" must be present in your main.cpp file. This is done for you when you run the po init command to create a project directory.

Building Firmware

To compile firmware, simply run po DEVICE_TYPE build, substituting DEVICE_TYPE for photon, P1, or electron. To compile and flash firmware to your device using dfu-util, simply run po DEVICE_TYPE flash. To clean the project, run po DEVICE_TYPE clean.

DFU Commands

To upload precompiled code over USB, run po DEVICE_TYPE dfu. To put your device into dfu mode, run po dfu-open. To get your device out of dfu mode, run po dfu-close.

Over The Air (OTA) Uploading

To upload precompiled code over the air using particle-cli, run po DEVICE_TYPE ota DEVICE_NAME, where DEVICE_NAME is the name of your device in the Particle cloud. You must be logged into particle-cli to use this feature. You can log into particle-cli with particle cloud login.

You can also flash code to multiple devices at once by passing the -m or --multi argument to ota. This would look like po DEVICE_TYPE ota -m. This relies on a file called devices.txt that you must create in your po-util project directory.

NOTE: This is different from the product firmware update feature in the Particle Console because it updates the firmware of devices one at a time and only if the devices are online when the command is run.

Testimonials

"I think you identified a common pain point for a lot of users, and the automated installation of the Particle toolchain is a problem that we've been focused on a lot recently ... you should already feel proud of yourself because you have made a meaningful contribution to the community. We are all very thankful for it - our community regularly impresses us, and you are certainly not an exception."

Will Hart, Particle General Manager


"I found that po-util works wonders by condensing the many disparate steps required to automate command-line interactions with Particle products into simple, clear commands. No need to futz with the weird serial stuff on Linux, and nicely full featured. So much better than pressing the buttons, even if you aren’t automating anything else. Highly recommend!"

Justice Reed, Head of Hardware, Amper Technologies


"It has been nearly flawless and a HUGE productivity booster... I cannot believe your steps worked installing so many utils and dependencies perfectly... The Particle world owes you a big debt. If there were Emmy awards for Particle contribs, you would get one."

Andrew Ward, Particle Community Member


"Nice! This is great stuff. Definitely helpful for the local dev / offline use case. Thanks for sharing."

Avidan Ross, Particle Investor


"Thanks a lot for this amazing tool. I finally managed to get everything as I wanted: to be able to work off-line."

Yannick, Particle Community Member


"Po-util is a very handy script - thanks for sharing."

H.S, Particle Community Member


"I can't heart this enough!"

Josh Fisher, Particle Community Member

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].