Particle Device OS Updates Thread

Firmware 0.7.0-rc.1 Pre-release is out on the Web IDE for Core/Photon/P1/Electron

released on production servers June 29th, 2017

:pencil: Please read all notes in the Notes Festival :tada: below

Note: There are 2 known issues with 0.7.0-rc.1 where when using SYSTEM_THREAD(ENABLE) that are already fixed and will be released in 0.7.0-rc.2. See details here to see if it will affect you.

Note: This is a pre-release and is not intended for production yet. We've tested this pre-release to the best of our ability and we want to know what you think now! Please understand that some care and attention is necessary when testing this pre-release, and be sure to upgrade to the final release when it's available. It will not be available by default. To use you must select the version dropdown from the devices drawer. Downgrading back to the current release info is at the bottom of this post.

Note: You must update your Electron to v0.5.3 first before attempting to use OTA or YModem transfer to update to >= v0.6.0. If you use DFU over USB, you can update to >= v0.6.0 directly, but make sure you have installed >= v1.21.0 of the CLI first.

Note about Downgrading [Photon/P1]: First downgrade system-part2 back to 0.6.2. Any attempts to write to the DCT while the device is in DFU mode will fail now. At this point, attempting to downgrade system-part1 will fail silently, since the new bootloader (v100) cannot access DCT and read module update info, thus, in order to downgrade from 0.7.0-rc.1 to 0.6.2, photon/p1 firmware modules should be flashed in the following order with 0.6.2 system binaries: system-part2 -> bootloader (v11) -> system-part1.

Note about Downgrading [Electron]: Downgrade in normal order with 0.6.2 system binaries: system-part3 -> system-part2 -> system-part1 -> bootloader (v11).

0.6.2 bootloaders have been added to this release below for convenience.

0 7 0-rc 1

0.7.0-rc.1 Changelog



  • [PR #1242] [Photon/P1/Electron] DFU transfer speeds increased! v100 bootloader is now 41% faster than v7 and 60% faster than the latest v11.
  • [PR #1236] [Fixes #1201] [Fixes #1194] Added type-safe wrapper for enum-based flags for Particle.publish() which enables logical OR'ed flag combinations PRIVATE | WITH_ACK
  • [PR #1247] Adds error checking to WiFi.setCredentials(), will return true if credentials has been stored successfully, or false otherwise.
  • [PR #1248] Added an overload to map() function that takes double arguments.
  • [PR #1296] [Photon/P1] [Docs] Added support for setting a custom DNS hostname, default is device ID.
  • [PR #1260] [Implements #1067] Adds ability to interrupt the blinking cyan cloud connection with the SETUP/MODE button.
  • [PR #1271] [Implements #1180] [Photon/P1] Constrains WiFi.RSSI() to -1dBm max.
  • [PR #1270] Removes spark/device/ota_result event and instead sends OTA'd module info as a payload in UpdateDone message, or as an ACK to UpdateDone.
  • [PR #1300] Restores public server key and server address if missing
  • [PR #1325] Use backup registers instead of DCT to store system flags to avoid chance of a DCT corruption.
  • [PR #1306] Bootloader module dependency and integrity checks have been added to system-part2. If they fail, the device is forced into safe mode and a new bootloader will be OTA transferred to the device.
  • [PR #1329] Adds a verification and retry scheme to the bootloader flashing routine.
  • [PR #1330] [Electron] Added CRC checking to the Electron DCD implementation so that write errors are detected. Added a critical section around flash operations and around DCD operations to make them thread safe.
  • [PR #1307] [Photon/P1] New version of WICED adds CRC checking to the DCT implementation so that write errors are detected. Added a critical section around flash operations and around DCT operations to make them thread safe.
  • [PR #1269] [Closes #1165] Cloud connection can be closed gracefully allowing confirmable messages to reach the cloud before the connection is terminated


  • [PR #1246] Fixes possible corruption of event data in multi-threaded firmware
  • [PR #1234] [Fixes #1139] [Electron] spark/hardware/max_binary event was sent in error, adding 69 more bytes of data to handshake (full or session resume). Also fixes other preprocessor errors.
  • [PR #1236] [Fixes #1201] [Fixes #1194] Sanitized Particle.publish() overloads.
  • [PR #1237] Fixes potential memory leak and race condition issues in RGB.onChange() function.
  • [PR #1247] Previously no null pointer checks on password argument of WiFi.setCredentials().
  • [PR #1248] [Fixes #1193] Fixes divide by zero on incorrect parameters of map() function.
  • [PR #1254] [Fixes #1241] WiFi.connecting() was returning false while DHCP is resolving, will now remain true.
  • [PR #1296] [Fixes #1251] [Photon/P1] Default Wi-Fi DNS hostname changed to device ID, to avoid spaces in name which may cause issues.
  • [PR #1255] [Fixes #1136] [Core] Interrupts were disabled by default.
  • [PR #1259] [Fixes #1176] Makes System.sleep(mode, seconds) a synchronous operation in multithreaded firmware. This ensures the device is in a well-defined state before entering sleep mode.
  • [PR #1315] Fixes Particle Publish flag implicit conversion issue. e.g. Particle.publish("event", "data", NO_ACK); was previously changing event's TTL instead disabling acknowledgement of the event)
  • [PR #1316] Fixes LED indication when network credentials are cleared by holding the SETUP button for >10 seconds.
  • [PR #1270] [Fixes #1240] TCP Firmware will not ACK every chunk in Fast OTA mode now.
  • [PR #1302] [Fixes #1282] [Electron] Wire1 was not working correctly.
  • [PR #1326] Renamed system_error enum to system_error_t to avoid conflicts with std::system_error class.
  • [PR #1286] Improves stability of TCP server implementation: 1) Update server's list of clients on a client destruction (thanks @tlangmo!), 2) TCPClient now closes underlying socket on destruction.
  • [PR #1327] [Fixes #1098] [Photon/P1] Previously, when entering Sleep-stop mode: System.sleep(D1, RISING, 60); while in the process of making a Wi-Fi connection resulted in some parts of the radio still being initialized, consuming about 10-15mA more than normal.
  • [PR #1336] Fixes an issue with Serial when receiving consecutive multiple 64-byte transmissions from Host
  • [PR #1337] Fixed system attempting to enter listening mode every 1ms when the SETUP button is pressed.
  • [PR #1289] Fixes a stack overlap with system-part2 static RAM on Photon/P1
  • [PR #1289] Fixes a memory leak when Thread is terminated
  • [PR #1289] Fixes a deadlock in SoftAP, when connection is terminated prematurely
  • [PR #1340] [Electron] Fixes the monolithic build


  • [PR #1313] Compilation fixes for GCC platform
  • [PR #1323] USB vendor requests should be executed on system thread instead of being processed in ISR.
  • [PR #1338] Do not read or write feature flags from an ISR

System Binaries (all devices) & Device Upgrader (Photon & Electron)

Release 0.7.0-rc.1 Prerelease (Core/Photon/P1/Electron) ยท particle-iot/device-os ยท GitHub

Programming and Debugging

You can view specific programming and debugging notes for this version of firmware here.