Skip to content

Device OS 1.4.0 Default Release is out on the Web IDE for (Core/Photon/P1/Electron/Argon/Boron/Xenon/A SoM/B SoM/X SoM)

released on production servers September 10th, 2019

✏️ Please read all notes below :bowtie:

Note: This is a Release and may be used for production. Any known issues are likely slated for a future version, (check Github issues). It is available by default for all devices. To use, select the 1.4.0 version dropdown from the devices drawer.
Downgrading back to a previous release info is at the bottom of this post.

Note: If you have previously last used one of the prerelease versions of 1.4.0-rc.x on a device, please re-flash it with 1.4.0.

Note: OTA or YModem transfer on Electron (sequence required)

  1. First Update to 0.5.5 (if the current version is less than that)
  2. Then update to 0.6.4 (if the current version is less than that)
  3. Then update to 0.7.0 (if the current version is less than that)
  4. Then update to 1.2.1 (if the current version is less than that)
  5. Then update to 1.4.0

Note: DFU over USB on Electron/Photon/P1 (sequence not required)

  • You may update to 1.4.0 directly first, flash the system firmware (attached above) in order 1,2(,3) to the device using particle flash --usb <system-part.bin>. See the next note about the bootloader if you are offline!

Note: P1/Photon Bootloader
The Cloud will automatically update the bootloader on P1/Photon devices if your device is online. If your device does not connect to the cloud and it is offline, you should flash the bootloader to the device using particle flash --serial <bootloader.bin>. This should be done after upgrading system firmware. The Electron bootloader is applied automatically from it's own system parts.

Note: Argon/Boron/Xenon/Argon-SoM/Boron-SoM/Xenon-SoM Bootloader
If your device is offline, the bootloader must be manually updated using particle flash --serial <bootloader.bin>. This can be done before or after upgrading system firmware.

Note: Argon/Boron/Xenon/Argon-SoM/Boron-SoM/Xenon-SoM SoftDevice
If your device is offline, the SoftDevice must be manually updated using the CLI. See the instructions below.

Note: Downgrading [Electron/Photon/P1] OTA or YModem transfer:
If you need to downgrade, you must downgrade to 1.2.1, then 0.7.0, then 0.6.3(Photon/P1), 0.6.4(Electron) to ensure that the bootloader downgrades automatically. When downgrading to older versions, downgrade to 1.2.1, then 0.7.0 first, then 0.6.3(Photon/P1), 0.6.4(Electron), then to an older version such as 0.5.5.


Note: If your Gen 2 Photon/P1 or Gen 3 device does not have a Cloud connection, it is recommended to update system firmware via CLI with particle update. Electron bootloaders are still contained in system firmware and will update automatically as needed.
Note: If your Gen 3 device does not have a Cloud connection, this release will also require manually updating the SoftDevice via CLI. The instructions are available in the release notes and the SoftDevice binaries are available in the Github release.
This release contains v500 bootloaders.

SoftDevice update

This Device OS release will automatically update the SoftDevice for devices connected to the cloud.


particle-cli version 1.47.0.

Upgrading using particle update

  1. Put the device into DFU mode
  2. Run particle update

DeviceOS, bootloader and SoftDevice should get correctly updated.

Upgrading OTA

  1. Upgrade to 1.4.0
  2. Manually flash 1.4.0 bootloader: particle flash <deviceId> boron-bootloader@1.4.0.bin
  3. Flash SoftDevice: particle flash <deviceId> boron-softdevice@1.4.0.bin

Upgrading using YModem

  1. Upgrade to 1.4.0
  2. Put the device into listening mode (blinking blue) by holding MODE button
  3. Manually flash 1.4.0 bootloader: particle flash --serial boron-bootloader@1.4.0.bin
  4. Flash SoftDevice: particle flash --serial boron-softdevice@1.4.0.bin

Upgrading using DFU (--usb only works for SoftDevice, not bootloader yet)

  1. Upgrade Device OS to 1.4.0
  2. Update the bootloader to 1.4.0 with the OTA or YModem process above
  3. Put the device into DFU mode (blinking yellow)
  4. Flash the SoftDevice: particle flash --usb boron-softdevice@1.4.0.bin


  • [Gen 3] Introduces BLE.begin() and BLE.end() wiring APIs #1890
  • [Gen 3] Exposes POSIX select() and poll() from socket HAL dynalib #1895



  • Fixes an issue in IPAddress::operator bool() causing the operator to return false for valid IPv6 addresses #1912
  • Fixes #1865, TCPClient::connect() return values #1909
  • [Gen 2] [LTE] fixes slow to close TCP sockets on SARA-R410M-02B [ch35609] #1909
  • [Gen 3] Subscribes both notification and indication if both properties are present in peer BLE characteristic #1901
  • [Gen 3] Restricts BleCharacteristic templated getValue() and setValue() arguments to be standard layout #1901
  • [Gen 3] BleUuid comparison operators are no longer case-sensitive #1902
  • [Gen 3] Fixes BleCharacteristic constructor template to accept characteristic and service UUID arguments with different types #1902
  • Fixes SerialLogHandler interfering with the Serial setup console in listening mode #1909
  • Fixes a regression introduced in 1.1.0 where the system layer was always sending its handshake messages even if the session was resumed causing increased data usage #1905
  • Properly seeds rand() in multiple threads including system thread. Fixes ephemeral port allocation in LwIP on Gen 3 platforms #1905
  • Control requests that reset the device (e.g. particle usb dfu) no longer cause unnecessary reconnection to the cloud #1905
  • Initialize user module in monolithic builds #1905
  • [Gen 3] Fixes heap and application static RAM overlap introduced in 1.3.0-rc.1 #1898
  • Fixes tinker build errors when building with LOG_SERIAL=y #1898
  • [Gen 3] Restored default BLE device address is incorrect. #1891
  • [Gen 3] Read BLE device name might be contracted. #1891
  • [Gen 3] operator& of the BleCharacteristicProperty enum class doesn't work as expected. #1891
  • [Gen 3] The length of got advertising and scan response data is not updated. #1891
  • Fixes dynalib alignment issue when compiling relatively large applications potentially due to an unconfirmed bug in GCC by moving the dynalib into a separate section (.dynalib) #1894
  • [Gen 3] Fixes incorrect handling of MODULE_INFO_FLAG_DROP_MODULE_INFO in the bootloader #1897
  • [Gen 3] Adds a dummy suffix to the NCP and SoftDevice modules' module info with unique SHA to cause the communication layer to detect the change in SYSTEM DESCRIBE after NCP or SoftDevice update #1897


  • Minor enhancements in wiring/no_fixture and wiring/no_fixture_long_running tests #1912
  • [Git] Fixes whitespace issues in .gitmodules #1910
  • [Gen 3] Adds wiring/no_fixture_ble, wiring/ble_central_peripheral and wiring/ble_scanner_broadcaster on-device tests #1901
  • Update release script to include Electron without DEBUG_BUILD=y and tinker-serial-debugging apps for Gen 3 #1903
  • [Photon / P1] Changes to support building combined images for the recent releases #1887
  • wiring/no_fixture test adjustments for Gen 2 and Gen 3 platforms #1898
  • Coveralls test coverage reports generated by Travis #1896

System Binaries (all devices)

Programming and Debugging

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

QA Report Summary for Particle Device OS

You can view results of tests run this release here.

Assets 66
You can’t perform that action at this time.