As of today, the Device Cloud will automatically perform over-the-air Device OS updates when required for all Particle devices. This will make it much easier to upgrade to the latest and greatest version of Device OS.
Device OS is Particle’s lightweight operating system for embedded IoT devices (formally known as system firmware). Every Particle device runs Device OS on its microcontroller to simplify firmware development.
There are two main components of Device OS: the application layer (the logic you write), and the system layer (the code written and maintained by Particle). These layers have dependencies on one another that must be carefully managed.
Upgrading Device OS versions
Application firmware that is written in the Web or Desktop IDEs are compiled against a specific version of Device OS system firmware before being sent to a device to run. That is, the Device OS acts as a translator — taking the human-readable code you write and translating into a binary that the device is able to run.
When you flash an application firmware that is compiled against a newer version of Device OS, the device will enter safe mode (RGB LED breathing magenta). Safe mode prevents the device from running the incompatible application firmware that will cause it to hard fault. In this mode, the device connects to the Particle Device Cloud but does not run the application firmware.
The Device Cloud will then automatically upgrade the Device OS version over-the-air to resolve dependencies. After blinking magenta for a while (receiving the new Device OS versions), the device will reconnect to the Particle Device Cloud and start running the application firmware.
What has changed?
Previously, for cellular devices (Electron and E SoM), the automatic resolution of Device OS dependencies was turned off. We did this with the intent to help you keep cellular data usage (and in turn, overage costs incurred) low.
It turns out that without this automatic resolution process, it becomes quite tricky to manage firmware dependencies on a Particle device. What is normally a painless process that “just works” quickly turns into a puzzle of file downloads, CLI wizardry, and strict ordering.
Now, the Device Cloud will heal cellular devices that require a Device OS version upgrade automatically, the same way it always has for Wi-Fi devices.
Why make this change?
It became clear that disabling automatic version resolution and constantly warning about cellular data usage was causing more harm than benefit. We’ve recognized this friction in the developer community and want to make things better.
In parallel, we’ve also increased the included amount of cellular data to 3MB per device/month as part of our new pricing. This gives you more breathing room to take advantage of helpful features like this without incurring data overage costs.
What changes will I notice?
- Cellular devices will automatically upgrade to a newer version of Device OS if it receives application firmware compiled against a newer Device OS.
- Developer tools like the Web IDE and CLI will no longer prevent your from sending application firmware that will cause your cellular device to enter safe mode, or warn you about cellular data usage each time you want to flash. These changes will be rolled out over the next few weeks.
- You may notice a slight uptick in the amount of cellular data consumed per month by cellular devices as a result of these changes.
What will stay the same?
- When flashing a specific Electron, developer tools like the Web IDE and CLI still default to compiling for the Device OS version currently on the device to avoid unexpected data usage from Device OS upgrades.
- You will still be able to update Device OS versions locally using the Particle CLI.
We’re confident that with this change, the developer experience building with Particle continues to improve. We’re always grateful to you, the community, for sharing your feedback with us and helping evolve the platform for the better. If you have questions about the new changes, please let us know in the forum.