Electron System Firmware - OTA

There are a few threads out there related to updating System Firmware OTA but I can’t find a clear answer on this. How does the Electron handle system firmware updates OTA?

For example, say I want to update from 0.6.1 to 0.6.2 OTA. Is there any way to see the current system firmware version or update it manually? (through Console or otherwise)

Also, what will happen if I try to flash an app OTA compiled with 0.6.2 onto a 0.6.1 device? I believe Photon automatically handles the system firmware update in this case but I’m not sure about the Electron.

Any details would be appreciated because I’ll need to handle this when necessary for several Electrons out in the wild.



Pretty sure you can’t update the Electron firmware OTA but only through DFU direct USB connection these days.

@rickkas7 does have a way of upgrading firmware if you have it on a SD card that’s connected to a Electron.

I think the windows upgrade program has been discontinued.

@RWB, system updates via OTA are possible - it’s just not very clearly documented if and how Safe Mode Healer would kick in for product devices.
Also SMH won’t update non-product devices by default. You’d need CLI to do that wired or OTA.
Also updating pre 0.5.3 Electrons to anything greater 0.5.3 isn’t straight forward.

It behaves a little differently depending on whether you have a product or non-product Electron.

Product Electron

This works basically like a Photon does. If you flash a binary that requires a newer system firmware version than is one the device, the safe mode healer kicks in and the device system firmware is upgraded.

If device was running a version prior to 0.5.3, such as the factory default of 0.4.8, it will be upgraded in two steps, first to 0.5.3, then to a later version if needed. This will of course use a lot of data, and may take some time over 2G in particular.

Non-Product Developer Electron

Safe-mode healer is disabled for non-product Electrons due to the possibility of very large and surprising data usage. Most developers will probably prefer to upgrade developer devices by USB, but you can do it OTA if desired.

You basically flash all of the system parts in order. For example, using the CLI:

particle flash electron1 system-part1-0.5.3-electron.bin
particle flash electron1 system-part2-0.5.3-electron.bin

If the Electron has a version of system firmware prior to 0.5.3, you must upgrade to 0.5.3 first! This is very important if you want to upgrade a factory new 0.4.8 device to the current firmware 0.6.2. You must upgrade to 0.5.3 first, then to the desired version.

Also, 0.6.0 and later have 3 parts, so make sure you flash all 3.


Thanks everyone for the input and thanks for the detailed explanation, @rickkas7. :grinning:

Is there any way to approximate the data usage of an OTA firmware or system firmware upgrade ahead of time so we’ll know what to expect?


The data usage will be pretty much the sum of the size of the binaries you’ll need to send to the device.
So for 0.6.1 to 0.6.2 you’ll have to send the three system parts (~285KB) (plus maybe a bootloader ~16KB) plus your own application binary.

Coming from pre 0.5.3 you’ll have to consider that stepping stone demand too.

To get these figures look here


Thank you for the clarification, @ScruffR!

1 Like