Particle Device OS Updates Thread

Device OS 2.1.0-rc.1 Release Candidate (LTS) is available in the Web IDE, Particle Workbench and Particle CLI for (Photon/P1/Electron/Argon/Boron/B SoM/B5 SoM/Tracker).

released on April 15th, 2021

Note: This is a Release Candidate and is not intended for production yet. This is the first Release Candidate for the upcoming Device OS release 2.1.0 (LTS) with critical bugfixes and backports from 3.x release line.

To learn more about LTS release line, read our blog post.

You can view information about Device OS versions, upgrades and downgrades here.


2.1.0-rc.1

FEATURES

  • [Cellular] Send modem firmware version to the cloud as part of the system describe message #2265
  • Network.isOn() and Network.isOff() APIs to query the network interface power state #2205
  • [Electron] Proactively attempt to recover from a number of failed cellular registration states #2301

ENHANCEMENTS

  • [Cellular] Update ICCID/IMSI to APN map with a new Kore ICCID prefix #2276
  • [B5 SoM / Quectel] Improve warm and cold boot behavior #2300
  • Update Workbench dependencies #2299
  • Improve I2C reset procedure to be less destructive and issue STOP condition as soon as possible #2303
  • [Cellular] Perform PMIC/FuelGauge/RTC I2C bus reset on boot to avoid accidental writes after a non-graceful reset #2303
  • [Argon] Reduce cloud keep-alive timeout to 25 seconds from 30 seconds #2304
  • [Electron] Build system parts with LTO enabled #2235
  • Upate MbedTLS to 2.22.0 #2117
  • [Gen 3] Ethernet FeatherWing power state management #2258

BUGFIXES

  • [Gen 2] Fix D0 alternate-function being unconditionally reset when calling Serial1.end() #2256
  • [Boron / B SoM] Fix external SIM getting stuck in initialization #2263
  • [BLE] Return false in BlePeerDevice::getCharacteristicByDescription() if expected characteristic was not found #2266
  • [Gen 3] Fix UART DMA RX transfer size issues causing DMA writes outside of the RX buffer #2264
  • [Gen 3] Fix ChannelStream::waitEvent() timeout calculation #2267
  • [Gen 3] Use PIN_INVALID when initializing SPI peripheral to avoid overriding the pin mode of the default CS pin on reinitialization #2275
  • [Electron] Increase AT+COPS timeout to 5 minutes #2281
  • [Electron] Fix Sleep 2.0 APIs taking up to 10 minutes to power-off the cellular modem while it’s attempting network registration #2284
  • [B5 SoM / Tracker] Fix warm boot sometimes requiring modem reset #2289
  • Fix Particle.unsubscribe() not preserving system subscriptions #2293
  • Querying the value of an empty string variable causes an error #2297
  • [Gen 3] Add workaround for Nordic nRF52840 anomaly 219 (TWIM: I2C timing spec is violated at 400 kHz) #2303
  • [Gen 3] Fix micros/millis/unixtime becoming non-monotonic 2a4fcb82b #2303
  • Fix the issue that the Particle.disconnect() doesn’t clear the auto-connect flag #2306

INTERNAL

  • Startup SLO automated tests #2277 #2274
  • Allow clearing session data and running custom setup code in integration tests #2280

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v2.1.0-rc.1/particle_device-os@2.1.0-rc.1.zip


Programming and Debugging

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

1 Like

Device OS 2.1.0 Default Release (LTS) is available in the Web IDE, Particle Workbench and Particle CLI for (Photon/P1/Electron/Argon/Boron/B SoM/B5 SoM/Tracker).

released on April 29th, 2021

Note: This is a Release and may be used for production. This is the first minor Device OS Release in the LTS line with critical bugfixes and backports from 3.x release line.

To learn more about LTS release line, read our blog post.

You can view information about Device OS versions, upgrades and downgrades here.


2.1.0

FEATURES

  • [Cellular] Send modem firmware version to the cloud as part of the system describe message #2265
  • Network.isOn() and Network.isOff() APIs to query the network interface power state #2205
  • [Electron] Proactively attempt to recover from a number of failed cellular registration states #2301

ENHANCEMENTS

  • [Cellular] Update ICCID/IMSI to APN map with a new Kore ICCID prefix #2276
  • [B5 SoM / Quectel] Improve warm and cold boot behavior #2300
  • Update Workbench dependencies #2299
  • Improve I2C reset procedure to be less destructive and issue STOP condition as soon as possible #2303
  • [Cellular] Perform PMIC/FuelGauge/RTC I2C bus reset on boot to avoid accidental writes after a non-graceful reset #2303
  • [Argon] Reduce cloud keep-alive timeout to 25 seconds from 30 seconds #2304
  • [Electron] Build system parts with LTO enabled #2235
  • Upate MbedTLS to 2.22.0 #2117
  • [Gen 3] Ethernet FeatherWing power state management #2258

BUGFIXES

  • [Electron] Fix unintended modem reset after an ongoing network registartion attempt is actively cancelled by the application #2307
  • Correctly restore network interface power state after waking up from STOP or ULTRA_LOW_POWER sleep modes #2308
  • [Gen 2] Fix D0 alternate-function being unconditionally reset when calling Serial1.end() #2256
  • [Boron / B SoM] Fix external SIM getting stuck in initialization #2263
  • [BLE] Return false in BlePeerDevice::getCharacteristicByDescription() if expected characteristic was not found #2266
  • [Gen 3] Fix UART DMA RX transfer size issues causing DMA writes outside of the RX buffer #2264
  • [Gen 3] Fix ChannelStream::waitEvent() timeout calculation #2267
  • [Gen 3] Use PIN_INVALID when initializing SPI peripheral to avoid overriding the pin mode of the default CS pin on reinitialization #2275
  • [Electron] Increase AT+COPS timeout to 5 minutes #2281
  • [Electron] Fix Sleep 2.0 APIs taking up to 10 minutes to power-off the cellular modem while it’s attempting network registration #2284
  • [B5 SoM / Tracker] Fix warm boot sometimes requiring modem reset #2289
  • Fix Particle.unsubscribe() not preserving system subscriptions #2293
  • Querying the value of an empty string variable causes an error #2297
  • [Gen 3] Add workaround for Nordic nRF52840 anomaly 219 (TWIM: I2C timing spec is violated at 400 kHz) #2303
  • [Gen 3] Fix micros/millis/unixtime becoming non-monotonic 2a4fcb82b #2303
  • Fix the issue that the Particle.disconnect() doesn’t clear the auto-connect flag #2306

INTERNAL

  • [ci] Remove build directory after finishing the build job #2311
  • Startup SLO automated tests #2277 #2274
  • Allow clearing session data and running custom setup code in integration tests #2280

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v2.1.0/particle_device-os@2.1.0.zip


Programming and Debugging

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

Branches

release/stable and master branches have been updated to point to v2.1.0 tag.

1 Like

Device OS 3.1.0-rc.1 Release Candidate is available in the Web IDE, Particle CLI and Workbench for (Photon/P1/Electron/Argon/Boron/B SoM/B5 SoM/Tracker).

Released on June 22nd, 2021

Note: This is a Release Candidate and is not intended for production yet.

This is a release candidate (RC) on non-LTS feature development branch (3.x). To learn more about our new LTS release line, read our blog post.

You can view information about Device OS versions, upgrades and downgrades here.

Gen 3 256KB application binary support

Device OS 3.1 brings support for 256KB application binaries to all Gen 3 platforms (Argon, Boron, B SoM, B5 SoM, Tracker). A few important aspects of this change:

  1. Compatibility with 128KB applications built with < Device OS 3.1 versions is maintained. Devices can still run them even if other parts have been upgraded to Device OS 3.1+.
  2. Upgrade process OTA (including product-based upgrades) is transparent.
  3. When upgrading locally (using DFU or Serial), make sure to update the bootloader first, as it has some logic managing compatibility between 128KB and 256KB application types. See this page on steps how to perform the update.
  4. If using standalone Particle CLI installation, make sure it’s updated to >= 2.12.0 version, which includes support for 256KB applications.

3.1.0-rc.1

FEATURES

  • [Gen 3] 256KB application support #2322
  • Support for DTLS connection IDs #2249
  • GCC 10 support #2288
  • [Gen 3] BLE LESC support #2262
  • [Gen 3] BLE 5 PHY_CODED (long range) scanning and advertising support #2287 #2298 #2321
  • [Tracker] AB1805 native watchdog support #2316
  • [Boron / B SoM / Electron] Support for SARA R410 05.12 modem firmware #2317 #2319 #2318
  • Add an API to get the maximum supported size of event data #2315

ENHANCEMENTS

  • [Argon] Cache ESP32 MAC address in persistent storage to improve boot-up times #2327
  • [Cellular] Inhibit Cellular URCs before going into sleep to prevent them from triggering wake-up #2295 #2321
  • [Gen 3] Remove XIP support for accessing the external flash #2302 #2321
  • [Photon / P1] Enable LTO #2288
  • Trigger a compiler error when a function returning a value does not do so #2323
  • [Gen 3] Fix non-MBR-based bootloader updates #2327

BUGFIXES

  • [Cellular] Prevent ICCID querying errors when not connected to a cellular network by using airplane mode CFUN=4 #2328
  • [Photon / P1] Make sure to close all sockets when deinitializing WICED WLAN connectivity subsystem #2313 #2321
  • [Gen 2] Fix unexpected network connection establishment after exiting sleep mode when only Network.on() was called #2309
  • [Gen 2] Fix unexpected network connection establishment when the modem or WiFi initialization failes, but only Network.on() was called #2309
  • Correctly restore network interface power state after waking up from STOP or ULTRA_LOW_POWER sleep modes #2308
  • Fix the issue that the Particle.disconnect() doesn’t clear the auto-connect flag #2306
  • [Electron] Fix unintended modem reset after an ongoing network registartion attempt is actively cancelled by the application #2307
  • Fix Particle.unsubscribe() not preserving system subscriptions #2293
  • Querying the value of an empty string variable causes an error #2297

INTERNAL

  • [ci] Remove build directory after finishing the build job #2311
  • [ci] Fix MarkupSafe weirdness #2314
  • Add an integration test to validate network/cloud connection time SLOs #2312 #2320 #2321
  • Allow clearing session data and running custom setup code in integration tests #2280
  • Add .bundleignore for Workbench Device OS source code bundles #2326
  • Manage GCC dependencies with .workbench/manifest.json d94f08030

Programming and Debugging

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

1 Like

2.2.0-rc.1

FEATURES

  • [Boron / B SoM / Electron] Support for SARA R410 05.12 modem firmware #2317 #2319 #2318

ENHANCEMENTS

  • [Gen 3] Remove XIP support for accessing the external flash #2302 #2321
  • Trigger a compiler error when a function returning a value does not do so #2323
  • [Argon] Cache ESP32 MAC address in persistent storage to improve boot-up times #2327
  • [Cellular] Add CellularSignal::isValid() and CellularSignal::operator bool() APIs #2212

BUGFIXES

  • [Gen 2] Fix unexpected network connection establishment after exiting sleep mode when only Network.on() was called #2309
  • [Gen 2] Fix unexpected network connection establishment when the modem or WiFi initialization failes, but only Network.on() was called #2309
  • [Photon / P1] Make sure to close all sockets when deinitializing WICED WLAN connectivity subsystem #2313 #2321
  • [B5 SoM / Tracker] Fixes external flash DFU definition on in bootloader to use 4KB sectors 399b8a0 #2321
  • Fix non-MBR-based bootloader updates #2327

INTERNAL

  • Add an integration test to validate network/cloud connection time SLOs #2312 #2320 #2321
  • [ci] Fix MarkupSafe weirdness #2317
  • Add .bundleignore for Workbench Device OS source code bundles #2326
  • Manage GCC dependencies with .workbench/manifest.json d94f08030

Device OS 3.1.0 Release is available in the Web IDE, Particle CLI and Workbench for (Photon/P1/Electron/Argon/Boron/B SoM/B5 SoM/Tracker).

Released on July 13th, 2021

Note: This is a Release and may be used for production. Any known issues are likely slated for a future version, see GitHub issues.

This is a release on non-LTS feature development branch (3.x). To learn more about our new LTS release line, read our blog post.

You can view information about Device OS versions, upgrades and downgrades here.

Gen 3 256KB application binary support

Device OS 3.1 brings support for 256KB application binaries to all Gen 3 platforms (Argon, Boron, B SoM, B5 SoM, Tracker). A few important aspects of this change:

  1. Compatibility with 128KB applications built with < Device OS 3.1 versions is maintained. Devices can still run them even if other parts have been upgraded to Device OS 3.1+.
  2. Upgrade process OTA (including product-based upgrades) is transparent.
  3. When upgrading locally (using DFU or Serial), make sure to update the bootloader first, as it has some logic managing compatibility between 128KB and 256KB application types. See this page on steps how to perform the update.
  4. If using standalone Particle CLI installation, make sure it’s updated to >= 2.12.0 version, which includes support for 256KB applications.

3.1.0

FEATURES

  • [Gen 3] 256KB application support #2322
  • Support for DTLS connection IDs #2249
  • GCC 10 support #2288
  • [Gen 3] BLE LESC support #2262
  • [Gen 3] BLE 5 PHY_CODED (long range) scanning and advertising support #2287 #2298 #2321
  • [Tracker] AB1805 native watchdog support #2316
  • [Boron / B SoM / Electron] Support for SARA R410 05.12 modem firmware #2317 #2319 #2318
  • Add an API to get the maximum supported size of event data #2315

ENHANCEMENTS

  • [Argon] Cache ESP32 MAC address in persistent storage to improve boot-up times #2327
  • [Cellular] Inhibit Cellular URCs before going into sleep to prevent them from triggering wake-up #2295 #2321
  • [Gen 3] Remove XIP support for accessing the external flash #2302 #2321
  • [Photon / P1] Enable LTO #2288
  • Trigger a compiler error when a function returning a value does not do so #2323
  • [Gen 3] Fix non-MBR-based bootloader updates #2327

BUGFIXES

  • Do not reset the DTLS session on socket errors #2335 #2337
  • [Cellular] Prevent ICCID querying errors when not connected to a cellular network by using airplane mode CFUN=4 #2328
  • [Photon / P1] Make sure to close all sockets when deinitializing WICED WLAN connectivity subsystem #2313 #2321
  • [Gen 2] Fix unexpected network connection establishment after exiting sleep mode when only Network.on() was called #2309
  • [Gen 2] Fix unexpected network connection establishment when the modem or WiFi initialization failes, but only Network.on() was called #2309
  • Correctly restore network interface power state after waking up from STOP or ULTRA_LOW_POWER sleep modes #2308
  • Fix the issue that the Particle.disconnect() doesn’t clear the auto-connect flag #2306
  • [Electron] Fix unintended modem reset after an ongoing network registartion attempt is actively cancelled by the application #2307
  • Fix Particle.unsubscribe() not preserving system subscriptions #2293
  • Querying the value of an empty string variable causes an error #2297

INTERNAL

  • [ci] Remove build directory after finishing the build job #2311
  • [ci] Fix MarkupSafe weirdness #2314
  • Add an integration test to validate network/cloud connection time SLOs #2312 #2320 #2321
  • Allow clearing session data and running custom setup code in integration tests #2280
  • Add .bundleignore for Workbench Device OS source code bundles #2326
  • Manage GCC dependencies with .workbench/manifest.json d94f08030

Programming and Debugging

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

Device OS 2.2.0-rc.2 Release Candidate (LTS) is available in the Web IDE, Particle Workbench and Particle CLI for (Photon/P1/Electron/Argon/Boron/B SoM/B5 SoM/Tracker).

released on August 27th, 2021

Note: This is a Release Candidate and is not intended for production yet. This is the second Release Candidate for the upcoming Device OS release 2.2.0 (LTS) with critical bugfixes and backports from 3.x release line.

To learn more about LTS release line, read our blog post.

You can view information about Device OS versions, upgrades and downgrades here.


2.2.0-rc.2

ENHANCEMENTS

  • Refactor system describe/info JSON generation to reduce size and remove invalid modules from it #2347 #2349

BUGFIXES

  • Clear module slots in DCT when preparing for an OTA update #2346
  • Do not reset the DTLS session on socket errors #2335 #2337
  • [Argon / Tracker] Avoid power leakage through ESP32 ESPBOOT pin #2342
  • Fix parsing of JSON strings with more than 127 tokens #2348

INTERNAL

  • [CI] Generate public Codefresh URL in Slack notifications #2333
  • [Photon / P1] system part 2 size optimizations #2349
  • [Electron] Increase MBEDTLS_SSL_MAX_CONTENT_LEN to 900 #2349

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v2.2.0-rc.2/particle_device-os@2.2.0-rc.2.zip


Programming and Debugging

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

Device OS 2.2.0 Default Release (LTS) is available in the Web IDE, Particle Workbench and Particle CLI for (Photon/P1/Electron/Argon/Boron/B SoM/B5 SoM/Tracker).

released on September 15th, 2021

Note: This is a Release and may be used for production. This is the second minor Device OS Release in the LTS line with critical bugfixes and backports from 3.x release line.

To learn more about LTS release line, read our blog post.

You can view information about Device OS versions, upgrades and downgrades here.


2.2.0

FEATURES

  • [Boron / B SoM / Electron] Support for SARA R410 05.12 modem firmware #2317 #2319 #2318

ENHANCEMENTS

  • [Gen 3] Remove XIP support for accessing the external flash #2302 #2321
  • Trigger a compiler error when a function returning a value does not do so #2323
  • [Argon] Cache ESP32 MAC address in persistent storage to improve boot-up times #2327
  • [Cellular] Add CellularSignal::isValid() and CellularSignal::operator bool() APIs #2212
  • Refactor system describe/info JSON generation to reduce size and remove invalid modules from it #2347 #2349

BUGFIXES

  • [Gen 2] Fix unexpected network connection establishment after exiting sleep mode when only Network.on() was called #2309
  • [Gen 2] Fix unexpected network connection establishment when the modem or WiFi initialization failes, but only Network.on() was called #2309
  • [Photon / P1] Make sure to close all sockets when deinitializing WICED WLAN connectivity subsystem #2313 #2321
  • [B5 SoM / Tracker] Fixes external flash DFU definition on in bootloader to use 4KB sectors 399b8a0 #2321
  • Fix non-MBR-based bootloader updates #2327
  • Clear module slots in DCT when preparing for an OTA update #2346
  • Do not reset the DTLS session on socket errors #2335 #2337
  • [Argon / Tracker] Avoid power leakage through ESP32 ESPBOOT pin #2342
  • Fix parsing of JSON strings with more than 127 tokens #2348

INTERNAL

  • Add an integration test to validate network/cloud connection time SLOs #2312 #2320 #2321
  • [ci] Fix MarkupSafe weirdness #2317
  • Add .bundleignore for Workbench Device OS source code bundles #2326
  • Manage GCC dependencies with .workbench/manifest.json d94f08030
  • [CI] Generate public Codefresh URL in Slack notifications #2333
  • [Photon / P1] system part 2 size optimizations #2349
  • [Electron] Increase MBEDTLS_SSL_MAX_CONTENT_LEN to 900 #2349

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v2.2.0/particle_device-os@2.2.0.zip


Programming and Debugging

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

Branches

release/stable and master branches have been updated to point to v2.2.0 tag.

Device OS 2.0.2 Default Release (LTS) is available in the Web IDE, Particle Workbench and Particle CLI for (Photon/P1/Electron/Argon/Boron/B SoM/B5 SoM/Tracker).

released on September 24th, 2021

Note: This is a Release and may be used for production.

To learn more about LTS release line, read our blog post.

You can view information about Device OS versions, upgrades and downgrades here.


2.0.2

FEATURES

  • [Electron] Optional feature to use HSE/LSI as RTC clock source instead of LSE (external 32KHz XTAL) #2354

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v2.0.2/particle_device-os@2.0.2.zip


Programming and Debugging

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

Branches

release/stable and master branches have been updated to point to v2.0.2 tag.

1 Like

Device OS 2.3.0-rc.1 Release Candidate (LTS) is available in the Web IDE, Particle Workbench and Particle CLI for (Photon/P1/Electron/Argon/Boron/B SoM/B5 SoM/Tracker).

released on October 6th, 2021

Note: This is a Release Candidate and is not intended for production yet. This is the first Release Candidate for the upcoming Device OS release 2.3.0 (LTS) with critical bugfixes and backports from 3.x release line.

To learn more about LTS release line, read our blog post.

You can view information about Device OS versions, upgrades and downgrades here.


2.3.0-rc.1

FEATURES

  • [Boron / B SoM ] Support for SARA R510 #2359 #2365
  • [Electron] Optional feature to use HSE/LSI as RTC clock source instead of LSE (external 32KHz XTAL) #2354

INTERNAL

  • Fix gcovr installation #2365

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v2.3.0-rc.1/particle_device-os@2.3.0-rc.1.zip


Programming and Debugging

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

Device OS 3.2.0-rc.1 Release Candidate is available in the Web IDE, Particle CLI and Workbench for (Photon/P1/Electron/Argon/Boron/B SoM/B5 SoM/Tracker).

Released on November 12th, 2021

Note: This is a Release Candidate and is not intended for production yet.

This is a release candidate (RC) on non-LTS feature development branch (3.x). To learn more about our new LTS release line, read our blog post.

You can view information about Device OS versions, upgrades and downgrades here.

Gen 3 256KB application binary support

Device OS 3.1 and further releases bring support for 256KB application binaries to all Gen 3 platforms (Argon, Boron, B SoM, B5 SoM, Tracker). A few important aspects of this change:

  1. Compatibility with 128KB applications built with < Device OS 3.1 versions is maintained. Devices can still run them even if other parts have been upgraded to Device OS 3.1+.
  2. Upgrade process OTA (including product-based upgrades) is transparent.
  3. When upgrading locally (using DFU or Serial), make sure to update the bootloader first, as it has some logic managing compatibility between 128KB and 256KB application types. See this page on steps how to perform the update.
  4. If using standalone Particle CLI installation, make sure it’s updated to >= 2.12.0 version, which includes support for 256KB applications.

3.2.0-rc.1

FEATURES

  • [wiring] acquireSerialXBuffer() API support for UART #2375
  • [Boron / B SoM ] Support for SARA R510 #2359 #2365
  • [Electron] Optional feature to use HSE/LSI as RTC clock source instead of LSE (external 32KHz XTAL) #2354
  • [Gen 3] BLE: Add ability to set and scan extended advertisement size (when using Coded PHY) #2331

ENHANCEMENTS

  • Enable GCC -Wextra when building Device OS to enable additional diagnostics provided by GCC. Fix issues uncovered #2340
  • Refactor system describe/info JSON generation to reduce size and remove invalid modules from it #2347 #2349
  • [Boron / B SoM / R510] Add additional modem responsiveness check on warm boot to avoid triggering R510-specific initialization issue #2373

BUGFIXES

  • [Gen 3] BLE: fix unintialized scan_phys in default scan parameters, preventing scanning from working unless BLE.setScanPhy() is manually set #2338 #2345
  • [Argon / Tracker] Avoid power leakage through ESP32 ESPBOOT pin #2342
  • Fix parsing of JSON strings with more than 127 tokens #2348
  • Clear module slots in DCT when preparing for an OTA update #2346
  • [Gen 3] Increase BLE operation timeout to ensure that BLE events are correctly handled and do not trigger an assertion #2371
  • [Argon] Fix occasional WiFI setup issue over BLE #2372
  • [Gen 3] Ensure that invalid modules are not presented to the cloud in System Describe message #2374
  • [Gen 3] BLE: Fix copy-constructor and assignment operator issues in wiring APIs #2376

INTERNAL

  • [Photon / P1] system part 2 size optimizations #2349
  • Fix gcovr installation on CI #2361 #2364
  • [test] Increase cloud connection timeout to 9 min for on-device tests where applicable #2369
  • [test] Enable wiring/ble_central_peripheral and wiring/ble_scanner_broadcaster tests to be run under device-os-test-runner #2376

Programming and Debugging

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

Device OS 3.2.0 Release is available in the Web IDE, Particle CLI and Workbench for (Photon/P1/Electron/Argon/Boron/B SoM/B5 SoM/Tracker).

Released on January 18th, 2021

Note: This is a Release and may be used for production. Any known issues are likely slated for a future version, see GitHub issues.

This is the first release on non-LTS feature development branch (3.x). To learn more about our new LTS release line, read our blog post.

You can view information about Device OS versions, upgrades and downgrades here.


3.2.0

FEATURES

  • [wiring] acquireSerialXBuffer() API support for UART #2375
  • [Boron / B SoM ] Support for SARA R510 #2359 #2365
  • [Electron] Optional feature to use HSE/LSI as RTC clock source instead of LSE (external 32KHz XTAL) #2354
  • [Gen 3] BLE: Add ability to set and scan extended advertisement size (when using Coded PHY) #2331

ENHANCEMENTS

  • Enable GCC -Wextra when building Device OS to enable additional diagnostics provided by GCC. Fix issues uncovered #2340
  • Refactor system describe/info JSON generation to reduce size and remove invalid modules from it #2347 #2349
  • [Boron / B SoM / R510] Add additional modem responsiveness check on warm boot to avoid triggering R510-specific initialization issue #2373

BUGFIXES

  • Fix hardfault handler to SOS again #2381
  • [Gen 3] Fix LittleFS truncate causing file corruption #268 #2385
  • [Gen 3] HAL - Only skip modules that fail integrity check from module info #2387
  • [Gen 3] BLE: fix unintialized scan_phys in default scan parameters, preventing scanning from working unless BLE.setScanPhy() is manually set #2338 #2345
  • [Argon / Tracker] Avoid power leakage through ESP32 ESPBOOT pin #2342
  • Fix parsing of JSON strings with more than 127 tokens #2348
  • Clear module slots in DCT when preparing for an OTA update #2346
  • [Gen 3] Increase BLE operation timeout to ensure that BLE events are correctly handled and do not trigger an assertion #2371
  • [Argon] Fix occasional WiFI setup issue over BLE #2372
  • [Gen 3] Ensure that invalid modules are not presented to the cloud in System Describe message #2374
  • [Gen 3] BLE: Fix copy-constructor and assignment operator issues in wiring APIs #2376

INTERNAL

  • Fix compilation errors on recent Linux distros with GCC 11 and updated system header files #2383
  • [Photon / P1] system part 2 size optimizations #2349
  • Fix gcovr installation on CI #2361 #2364
  • [test] Increase cloud connection timeout to 9 min for on-device tests where applicable #2369
  • [test] Enable wiring/ble_central_peripheral and wiring/ble_scanner_broadcaster tests to be run under device-os-test-runner #2376

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v3.2.0/particle_device-os@3.2.0.zip


Programming and Debugging

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

Device OS 2.3.0 Default Release (LTS) is available in the Web IDE, Particle Workbench and Particle CLI for (Photon/P1/Electron/Argon/Boron/B SoM/B5 SoM/Tracker).

released on January 25th, 2022

Note: This is a Release and may be used for production. This is the second minor Device OS Release in the LTS line with critical bugfixes and backports from 3.x release line.

To learn more about LTS release line, read our blog post.

You can view information about Device OS versions, upgrades and downgrades here.


2.3.0

FEATURES

  • [Boron / B SoM ] Support for SARA R510 #2359 #2365
  • [Electron] Optional feature to use HSE/LSI as RTC clock source instead of LSE (external 32KHz XTAL) #2354

ENHANCEMENTS

  • [Boron / B SoM / R510] Add additional modem responsiveness check on warm boot to avoid triggering R510-specific initialization issue #2373

INTERNAL

  • Fix gcov installation #2361

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v2.3.0/particle_device-os@2.3.0.zip


Programming and Debugging

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

Branches

release/stable and master branches have been updated to point to v2.3.0 tag.

Device OS 3.3.0-rc.1 Release Candidate is available in the Web IDE, Particle CLI and Workbench for (Photon/P1/Electron/Argon/Boron/B SoM/B5 SoM/Tracker).

Released on March 18th, 2022

Note: This is a Release Candidate and is not intended for production yet.

This is a release candidate (RC) on non-LTS feature development branch (3.x). To learn more about our new LTS release line, read our blog post.

You can view information about Device OS versions, upgrades and downgrades here.

Gen 3 256KB application binary support

Device OS 3.1 and further releases bring support for 256KB application binaries to all Gen 3 platforms (Argon, Boron, B SoM, B5 SoM, Tracker). A few important aspects of this change:

  1. Compatibility with 128KB applications built with < Device OS 3.1 versions is maintained. Devices can still run them even if other parts have been upgraded to Device OS 3.1+.
  2. Upgrade process OTA (including product-based upgrades) is transparent.
  3. When upgrading locally (using DFU or Serial), make sure to update the bootloader first, as it has some logic managing compatibility between 128KB and 256KB application types. See this page on steps how to perform the update.
  4. If using standalone Particle CLI installation, make sure it’s updated to >= 2.12.0 version, which includes support for 256KB applications.

3.3.0-rc.1

FEATURES

  • [Gen3] BLE Provisioning Mode #2382 #2379 #2405
  • System.off() API support for unsubscribing from system events/handlers #2390

ENHANCEMENTS

  • Enables stack overflow detection in all builds #2392
  • Adds LOG_C_VARG() logging macro to support vargs from user apps #2393
  • Adds os_thread_dump* introspection functions to wrap the FreeRTOS functions #2394
  • [ci] Migration to CircleCI #2395
  • Adds ability to override the panic handler in user applications #2384
  • [gen3] SystemPowerConfiguration::socBitPrecision(uint8_t bits)) API added #2401

BUGFIXES

  • Thread/interrupt safety for system_event_t subscriptions #2390

INTERNAL

  • Removes WiFiTesting mode and Setup over Serial1 #2386
  • [gen3] Add GCC feature ‘build-id’ into the system part1, monolithic and user apps #2391 #2400
  • Moves legacy makefile-based unit tests to CMake #2396
  • Makes system_version.h compliant with C; Coalesce FreeRTOS task list internals into single location #2399
  • Improves reliability of a few tests #2406

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v3.3.0-rc.1/particle_device-os@3.3.0-rc.1.zip


Programming and Debugging

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

Device OS 3.3.0 Release is available in the Web IDE, Particle CLI and Workbench for (Photon/P1/Electron/Argon/Boron/B SoM/B5 SoM/Tracker).

Released on April 4th, 2022

Note: This is a Release and may be used for production.

This is a release on non-LTS feature development branch (3.x). To learn more about our new LTS release line, read our blog post.

You can view information about Device OS versions, upgrades and downgrades here.


3.3.0

FEATURES

  • [Gen3] BLE Provisioning Mode #2382 #2379 #2405
  • System.off() API support for unsubscribing from system events/handlers #2390
  • CoAP Blockwise transfer for Describe messages #2377 #2417

ENHANCEMENTS

  • Enables stack overflow detection in all builds #2392
  • Adds LOG_C_VARG() logging macro to support vargs from user apps #2393
  • Adds os_thread_dump* introspection functions to wrap the FreeRTOS functions #2394
  • [ci] Migration to CircleCI #2395
  • Adds ability to override the panic handler in user applications #2384
  • [gen3] SystemPowerConfiguration::socBitPrecision(uint8_t bits)) API added #2401

BUGFIXES

  • Thread/interrupt safety for system_event_t subscriptions #2390
  • [gen3] BLE: introduce wiring APIs to change ATT MTU #2398
  • [gen3] Dummy setup code should not return error #2411

INTERNAL

  • Removes WiFiTesting mode and Setup over Serial1 #2386
  • [gen3] Add GCC feature ‘build-id’ into the system part1, monolithic and user apps #2391 #2400
  • Moves legacy makefile-based unit tests to CMake #2396
  • Makes system_version.h compliant with C; Coalesce FreeRTOS task list internals into single location #2399
  • Improves reliability of a few tests #2406
  • [test] fixes integration slo/connect_time #2412
  • [ci] fixes gcovr report generation #2409
  • Updates C++ standard version to C++17 (gnu variant) #2414
  • [test] improves wiring/no_fixture_long_running NETWORK_XX test timing #2415
  • [test] improves wiring/no_fixture LISTENING & NETWORK test timing #2416

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v3.3.0/particle_device-os@3.3.0.zip


Programming and Debugging

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

Device OS 4.0.0-beta.1 Beta Pre-Release is available in the Web IDE, Particle CLI and Workbench for (Argon/Boron/B SoM/B5 SoM/Tracker/E SoM X).

Released on July 28th, 2022

Note: This is a Beta Pre-Release for testing only. API’s may change before a Release Candidate is created.

This is the first public release in the Device OS 4.x LTS line, based on new Features/Enhancements/Bugfixes and Breaking Changes from the 3.x release line.

Note: If you are upgrading from 2.x, please review the changelogs for 3.0.0/3.1.0/3.2.0/3.3.0 below.

Note: Critical Bugfixes from 3.x will already be backported in the latest 2.3.0, and some other Bugfixes may only apply to previous 3.x releases. Internal changes are omitted in the 3.x changelog list below, however the full changelog may be found at the Device OS repo.

To learn more about LTS release line, read our blog post.

You can view information about Device OS versions, upgrades and downgrades here.

Gen 3 256KB application binary support

Device OS v3.1.x and further releases bring support for 256KB application binaries to all Gen 3 platforms (at that time: Argon, Boron, B SoM, B5 SoM, Tracker). A few important aspects of this change:

  1. Compatibility with 128KB applications built with < Device OS 3.1 versions is maintained. Devices can still run them even if other parts have been upgraded to Device OS 3.1+.
  2. Upgrade process OTA (including product-based upgrades) is transparent.
  3. When upgrading locally (using DFU or Serial), make sure to update the bootloader first, as it has some logic managing compatibility between 128KB and 256KB application types. See this page on steps how to perform the update.
  4. If using standalone Particle CLI installation, make sure it’s updated to >= 2.12.0 version, which includes support for 256KB applications.

4.0.0-beta.1

BREAKING CHANGES

  • Deprecate/remove the PRODUCT_ID macro #2446. Users may now use the same binary for multiple Products that share the same device Platform and Functionality. Including this macro will cause a build error and show the following message:

    The PRODUCT_ID macro must be removed from your firmware source code.
    The same compiled firmware binary may be used in multiple products that share the same platform and functionality.

DEPRECATION

  • [deprecation][gen2] supply secure #2442
  • [deprecation] Adds warning to some deprecated API’s that will be removed in Device OS 5.x #2445
  • [deprecation] remove setup_done flag and add deprecation notice #2447

FEATURES

  • [esomx] Adds support for new platform esomx #2443 #2459
  • [esomx] Determine flash part at runtime #2456
  • [gen3][quectel] Adds support for BG95-M1, BG95-MF, BG77, and EG91-NAX #2458
  • [ota] new API System.updateStatus() #2344

ENHANCEMENTS

  • [gen3] wifi: add dhcp dns info to wifi config #2440
  • [ota] Additional state for firmware update checks #2344
  • Use a custom content type with CID packets when resuming the session #2441

BUGFIXES

  • [gen3] port newlib stdin/stdout/stderr memory leak workaround #2467
  • [esomx] map ADC channels to the correct pins #2495
  • [gen3] hal: fix power leak on Boron #2452
  • [gen3] fixes hardfault during low level USB peripheral initialization under an atomic section #2448
  • [gen3] Device unable to enter listening mode with button press #2451
  • Return relevant error from control request to enter listening mode #2419

INTERNAL

  • [gcc] Allow overriding the platform ID on the GCC platform #2462
  • [gcc] Enable OTA updates on the GCC platform #2464
  • [gcc] Fix GCC platform on some versions of GCC; Fix building of wiring/api tests on CI #2483
  • [workbench] Update workbench buildscripts to 1.11.0 #2465
  • [workbench] Stop ignoring device os scripts directory #2471
  • [workbench] Remove redundant toolchain overrides #2489
  • [workbench] update-device-os-workbench-manifest-json #2457
  • [wifi] Add stubs to allow setting common country code and channel plan in P2 #2473 #2485
  • [tests] Change PWM pins to better match e-series pinout for E SoM X. Fix other tests #2463
  • [tests] Misc changes to tests from 5.x #2466
  • [tests][esomx] disable RGB pwm channel(s) when running pwm tests #2494
  • [tests] Wi-Fi resolve test improvements #2454
  • [ci] test-build-system-tune-timeouts #2455
  • [ci] minor update sc-101315/device-os-manifest #2449
  • [ci] chore/ci-less-frequent-cross-platform-build-checks #2434
  • [ci] feature/sc-100324/ci-build-cross-platform #2418
  • [docs] Update dependencies for ARM GCC 10.2.1 #2431
  • [gen3] suppress certain reviewed GCC warnings [sc-100940] #2420

3.3.0

FEATURES

  • [Gen3] BLE Provisioning Mode #2382 #2379 #2405
  • System.off() API support for unsubscribing from system events/handlers #2390
  • CoAP Blockwise transfer for Describe messages #2377 #2417

ENHANCEMENTS

  • Enables stack overflow detection in all builds #2392
  • Adds LOG_C_VARG() logging macro to support vargs from user apps #2393
  • Adds os_thread_dump* introspection functions to wrap the FreeRTOS functions #2394
  • [ci] Migration to CircleCI #2395
  • Adds ability to override the panic handler in user applications #2384
  • [gen3] SystemPowerConfiguration::socBitPrecision(uint8_t bits)) API added #2401

BUGFIXES

  • Thread/interrupt safety for system_event_t subscriptions #2390
  • [gen3] BLE: introduce wiring APIs to change ATT MTU #2398
  • [gen3] Dummy setup code should not return error #2411

3.2.0

FEATURES

  • [wiring] acquireSerialXBuffer() API support for UART #2375
  • [Boron / B SoM ] Support for SARA R510 #2359 #2365
  • [Electron] Optional feature to use HSE/LSI as RTC clock source instead of LSE (external 32KHz XTAL) #2354
  • [Gen 3] BLE: Add ability to set and scan extended advertisement size (when using Coded PHY) #2331

ENHANCEMENTS

  • Enable GCC -Wextra when building Device OS to enable additional diagnostics provided by GCC. Fix issues uncovered #2340
  • Refactor system describe/info JSON generation to reduce size and remove invalid modules from it #2347 #2349
  • [Boron / B SoM / R510] Add additional modem responsiveness check on warm boot to avoid triggering R510-specific initialization issue #2373

BUGFIXES

  • [Gen 3] BLE: fix unintialized scan_phys in default scan parameters, preventing scanning from working unless BLE.setScanPhy() is manually set #2338 #2345
  • [Argon / Tracker] Avoid power leakage through ESP32 ESPBOOT pin #2342
  • Fix parsing of JSON strings with more than 127 tokens #2348
  • Clear module slots in DCT when preparing for an OTA update #2346
  • [Gen 3] Increase BLE operation timeout to ensure that BLE events are correctly handled and do not trigger an assertion #2371
  • [Argon] Fix occasional WiFI setup issue over BLE #2372
  • [Gen 3] Ensure that invalid modules are not presented to the cloud in System Describe message #2374
  • [Gen 3] BLE: Fix copy-constructor and assignment operator issues in wiring APIs #2376
  • Fix hardfault handler to SOS again #2381
  • [Gen 3] Fix LittleFS truncate causing file corruption #268 #2385
  • [Gen 3] HAL - Only skip modules that fail integrity check from module info #2387

3.1.0

FEATURES

  • [Gen 3] 256KB application support #2322
  • Support for DTLS connection IDs #2249
  • GCC 10 support #2288
  • [Gen 3] BLE LESC support #2262
  • [Gen 3] BLE 5 PHY_CODED (long range) scanning and advertising support #2287 #2298 #2321
  • [Tracker] AB1805 native watchdog support #2316
  • [Boron / B SoM / Electron] Support for SARA R410 05.12 modem firmware #2317 #2319 #2318
  • Add an API to get the maximum supported size of event data #2315

ENHANCEMENTS

  • [Argon] Cache ESP32 MAC address in persistent storage to improve boot-up times #2327
  • [Cellular] Inhibit Cellular URCs before going into sleep to prevent them from triggering wake-up #2295 #2321
  • [Gen 3] Remove XIP support for accessing the external flash #2302 #2321
  • [Photon / P1] Enable LTO #2288
  • Trigger a compiler error when a function returning a value does not do so #2323
  • [Gen 3] Fix non-MBR-based bootloader updates #2327

BUGFIXES

  • Do not reset the DTLS session on socket errors #2335 #2337
  • [Cellular] Prevent ICCID querying errors when not connected to a cellular network by using airplane mode CFUN=4 #2328
  • [Photon / P1] Make sure to close all sockets when deinitializing WICED WLAN connectivity subsystem #2313 #2321
  • [Gen 2] Fix unexpected network connection establishment after exiting sleep mode when only Network.on() was called #2309
  • [Gen 2] Fix unexpected network connection establishment when the modem or WiFi initialization failes, but only Network.on() was called #2309
  • Correctly restore network interface power state after waking up from STOP or ULTRA_LOW_POWER sleep modes #2308
  • Fix the issue that the Particle.disconnect() doesn’t clear the auto-connect flag #2306
  • [Electron] Fix unintended modem reset after an ongoing network registartion attempt is actively cancelled by the application #2307
  • Fix Particle.unsubscribe() not preserving system subscriptions #2293
  • Querying the value of an empty string variable causes an error #2297

3.0.0

BREAKING CHANGES

  • [Cellular] Remove rssi and qual from Cellular.RSSI() #2212
  • [Gen 3] BLE API consistency enhancements #2222

FEATURES

  • [Electron] Proactively attempt to recover from a number of failed cellular registration states #2301
  • [Cellular] Battery presence detection when charging is disabled #2272
  • Increase the maximum DTLS packet size and payload of the cloud primitives #2260
  • [Cellular] Send modem firmware version to the cloud as part of the system describe message #2265
  • [Gen 3] OTAv3 protocol #2199
  • [Tracker] ESP32 WiFi scanning support #2250
  • [Cellular] SystemPowerFeature::DISABLE_CHARGING configuration option to enable or disable charging #2257
  • Network.isOn() and Network.isOff() APIs to query the network interface power state #2205
  • [Gen 3] BLE legacy pairing #2237
  • [Cellular] Query cellular signal while trying to register on a network #2232
  • [Tracker] WiFi/GNSS/FuelGauge sleep wake-up sources #2200
  • Configure multiple pins as wakeup source at a time #2228 #2231

ENHANCEMENTS

  • [Argon] Reduce cloud keep-alive timeout to 25 seconds from 30 seconds #2304
  • Improve I2C reset procedure to be less destructive and issue STOP condition as soon as possible #2303
  • [Cellular] Perform PMIC/FuelGauge/RTC I2C bus reset on boot to avoid accidental writes after a non-graceful reset #2303
  • [Cellular] System power management improvements #2272 #2290
  • [Cellular] Update ICCID/IMSI to APN map with a new Kore ICCID prefix #2276
  • Disable some of the elliptic-curves not in use to save flash space #2273
  • [Cellular] Update LTE signal strength/quality parameters (RSRP/RSRQ) mapping to percentages #2285
  • [B5 SoM / Quectel] Improve warm and cold boot behavior #2300
  • [Gen 3] Custom logging categories for AT parser and GSM 07.10 multiplexer to differentiate between cellular modem and ESP32 on Tracker platforms #2267
  • [Tracker] Reduce code size of GSM 07.10 multiplexer implementation making sure that ESP32 and cellular NCP client use the same template variant of it #2267
  • [Electron] Speed up modem power-on #2268
  • [Tracker] Cache ESP32 NCP firmware version in non-volatile memory #2269
  • [Gen 3] Network interface management improvements #2217
  • [Gen 3] SPI.transfer() support for constant buffers residing in flash #2196
  • [Gen 3] Add characteristic discovery to BleService #2203
  • [Gen 3] BLE Scanned/Connected/Disconnected/Data Received callbacks in C++ style #2224
  • [Gen 3] BLE scanning filter #2223
  • [Electron] Build system parts with LTO enabled #2235
  • Add more operators for BleAddress, BleUuid and IPAddress#2216
  • Upate MbedTLS to 2.22.0 #2117
  • [Tracker] ESP32 NCP firmware updated to version 0.0.7
  • Use PARTICLE_ prefix for LED defines in order not to pollute global namespace #2247
  • [Gen 3] Ethernet FeatherWing power state management #2258
  • [Cellular] Changes how signal strength and quality percentages are calculated to provide a more accurate representation of signal conditions #2236

BUGFIXES

  • [Gen 3] Add workaround for Nordic nRF52840 anomaly 219 (TWIM: I2C timing spec is violated at 400 kHz) #2303
  • [Gen 3] Fix micros/millis/unixtime becoming non-monotonic 2a4fcb82b #2303
  • [Gen 3] Use PIN_INVALID when initializing SPI peripheral to avoid overriding the pin mode of the default CS pin on reinitialization #2275
  • [Argon / Tracker] Make sure that ESP32 NCP power state is correctly initialized on boot #2279
  • [Electron] Increase AT+COPS timeout to 5 minutes #2281
  • [Electron] Fix Sleep 2.0 APIs taking up to 10 minutes to power-off the cellular modem while it’s attempting network registration #2284
  • [B5 SoM / Tracker] Fix warm boot sometimes requiring modem reset #2289
  • [Boron / B SoM] Fix external SIM getting stuck in initialization #2263
  • [BLE] Return false in BlePeerDevice::getCharacteristicByDescription() if expected characteristic was not found #2266
  • [Gen 3] Fix UART DMA RX transfer size issues causing DMA writes outside of the RX buffer #2264
  • [Gen 3] Fix ChannelStream::waitEvent() timeout calculation #2267
  • [Gen 3] Fix warm boot feature regression introduced in 3.0.0-beta.1 #2269
  • [Gen 3] Disconnect from the server on OTAv3 update errors #2270
  • [Gen 2] Fix D0 alternate-function being unconditionally reset when calling Serial1.end() #2256
  • [Gen 3] Fix an issue with BLE.scan() deadlocking #2220

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v4.0.0-beta.1/particle_device-os@4.0.0-beta.1.zip


Programming and Debugging

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

Device OS 5.0.0 Release is available in the Web IDE, Particle CLI and Workbench for (Argon/Boron/B SoM/B5 SoM/Tracker/Tracker M/E SoM X/P2).

Released on August 19th, 2022

Note: This is a Release and may be used for production.

This is a release on non-LTS feature development branch (5.x). To learn more about our new LTS release line, read our blog post.

You can view information about Device OS versions, upgrades and downgrades here.

Gen 3 256KB application binary support

Device OS v3.1.x and further releases bring support for 256KB application binaries to all Gen 3 platforms (at that time: Argon, Boron, B SoM, B5 SoM, Tracker). A few important aspects of this change:

  1. Compatibility with 128KB applications built with < Device OS 3.1 versions is maintained. Devices can still run them even if other parts have been upgraded to Device OS 3.1+.
  2. Upgrade process OTA (including product-based upgrades) is transparent.
  3. When upgrading locally (using DFU or Serial), make sure to update the bootloader first, as it has some logic managing compatibility between 128KB and 256KB application types. See this page on steps how to perform the update.
  4. If using standalone Particle CLI installation, make sure it’s updated to >= 2.12.0 version, which includes support for 256KB applications.

5.0.0

BREAKING CHANGE

  • [esomx] Remove undefined pins from esomx pinmap #2505

FEATURES

  • P2 Support #2466
  • Tracker M Support #2492 #2518 #2522
  • [p2] Allow setting WiFi country code and channel plan #2485 #2473
  • [rtl872x] Implement HAL event group for UART #2493
  • [rtl872x] Implement APIs to set/get BLE address #2508

ENHANCEMENTS

  • [p2][wifi] Add more complete WiFi network configuration information for P2 #2474
  • [p2][photon2] Add VBAT_MEAS pin and charging indication pin for Photon2 #2482
  • [ethernet][p2] Allow ethernet detection on P2 #2478
  • Register without waiting for CSD connections #2404

BUGFIXES

  • [p2] usart: flush DMA FIFO data when required #2477
  • [gen3] port newlib stdin/stdout/stderr memory leak workaround #2467
  • [p2] Flash supports page write and other fixes #2470
  • [esomx] map ADC channels to the correct pins #2495
  • [rtl872x] Fix millis() rollover #2501
  • [p2][gen3] fixes for attachInterrupt() / noInterrupts() / interrupts() APIs #2503
  • [rtl872x] hal: fix issue that uart rx dma may hang up. #2502
  • [rtl872x] hal: implement i2c sleep and fix the reset APIs #2497
  • [p2] attachInterrupt() should not configure input pullup/pulldown/nopull #2507
  • [p2] PWM HAL fixes #2511
  • Disable direct logging in listening mode #2512
  • Ensure task yield and system thread pump in system_delay_pump #2519 #2521

INTERNAL

  • [p2] deprecate tinker-fqc app #2479 #2480 #2481
  • Update devtools .bundleignore for P2 SDK files #2475
  • Fix GCC platform on some versions of GCC; Fix wiring/api tests for P2; Fix building of wiring/api tests on CI #2483
  • [p2] Fix DCache alignment #2476
  • [p2] fixes INTERRUPTS_01_isisr_willpreempt_servicedirqn test #2486
  • Remove redundant toolchain overrides #2489
  • Enable OTA updates on the GCC platform #2464
  • Allow overriding the platform ID on the GCC platform #2462
  • [workbench] Update workbench buildscripts to 1.11.0 #2465
  • [tests] Change PWM pins to better match e-series pinout for E SoM X. Fix other tests #2463
  • [tests] Fix broken tone and servo tests for p2 platform, also EEPROM_03 for all. #2469
  • [workbench] Stop ignoring device os scripts directory #2471
  • [p2] Simplify burn in LED blink, work around System.millis() reset #2491
  • [tests][esomx] disable RGB pwm channel(s) when running pwm tests #2494
  • [rtl872x] Poll micros instead of rom DelayUs function. Tweak 1ms test #2499
  • [ci] branch pattern changes for test-build-system #2509
  • [p2] PWM fixture tests #2511
  • [test] fixes race condition with wiring/no_fixture TIME_17 #2513
  • [services] device tree stubs #2515
  • [tests] integration: bump binary-version-reader and device-constants dependency for P2-related module manipulation fixes #2516

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v5.0.0/particle_device-os@5.0.0.zip


Programming and Debugging

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

1 Like

Device OS 4.0.0 LTS Release is available in the Web IDE, Particle CLI and Workbench for (Argon/Boron/B SoM/B5 SoM/Tracker/E SoM X).

Released on August 30th, 2022

Note: This is a Release and may be used for production.

This is the first public release in the Device OS 4.x LTS line, based on new Features/Enhancements/Bugfixes and Breaking Changes from the 3.x release line.

Note: If you are upgrading from 2.x, please review the changelogs for 3.0.0/3.1.0/3.2.0/3.3.0 below.

Note: Critical Bugfixes from 3.x will already be backported in the latest 2.3.0, and some other Bugfixes may only apply to previous 3.x releases. Internal changes are omitted in the 3.x changelog list below, however the full changelog may be found at the Device OS repo.

To learn more about LTS release line, read our blog post.

You can view information about Device OS versions, upgrades and downgrades here.

Gen 3 256KB application binary support

Device OS v3.1.x and further releases bring support for 256KB application binaries to all Gen 3 platforms (at that time: Argon, Boron, B SoM, B5 SoM, Tracker). A few important aspects of this change:

  1. Compatibility with 128KB applications built with < Device OS 3.1 versions is maintained. Devices can still run them even if other parts have been upgraded to Device OS 3.1+.
  2. Upgrade process OTA (including product-based upgrades) is transparent.
  3. When upgrading locally (using DFU or Serial), make sure to update the bootloader first, as it has some logic managing compatibility between 128KB and 256KB application types. See this page on steps how to perform the update.
  4. If using standalone Particle CLI installation, make sure it’s updated to >= 2.12.0 version, which includes support for 256KB applications.

4.0.0

BREAKING CHANGES

  • Deprecate/remove the PRODUCT_ID macro #2446. Users may now use the same binary for multiple Products that share the same device Platform and Functionality. Including this macro will cause a build error and show the following message:

    The PRODUCT_ID macro must be removed from your firmware source code.
    The same compiled firmware binary may be used in multiple products that share the same platform and functionality.

DEPRECATION

  • [deprecation][gen2] supply secure #2442
  • [deprecation] Adds warning to some deprecated API’s that will be removed in Device OS 5.x #2445
  • [deprecation] PRODUCT_ID macro #2446
  • [deprecation] remove setup_done flag and add deprecation notice #2447

FEATURES

  • [ota] new API System.updateStatus() #2344
  • [esomx] Adds support for new platform esomx #2443 #2459 #2505 #2495
  • [gen3] Determine flash part at runtime #2456
  • [gen3][quectel] Adds support for BG95-M1, BG95-MF, BG77, and EG91-NAX #2458
  • System.hardwareInfo() API #2526 #2529

ENHANCEMENTS

  • [gen3] wifi: add dhcp dns info to wifi config #2440
  • [ota] Additional state for firmware update checks #2344
  • Use a custom content type with CID packets when resuming the session #2441

BUGFIXES

  • [gen3] fixes hardfault during low level USB peripheral initialization under an atomic section #2448
  • [gen3] Device unable to enter listening mode with button press #2451
  • Return relevant error from control request to enter listening mode #2419
  • [gen3] hal: fix power leak on Boron #2452
  • [gen3] port newlib stdin/stdout/stderr memory leak workaround #2467
  • [gen3] fixes interrupts() API: should not clear pending interrupts #2504
  • Ensure that RTOS context switch is performed in tight delay(1) loops #2519 #2520 #2524

INTERNAL

  • [ci] minor update sc-101315/device-os-manifest #2449
  • [ci] chore/ci-less-frequent-cross-platform-build-checks #2434
  • [docs] Update dependencies for ARM GCC 10.2.1 #2431
  • [gen3] suppress certain reviewed GCC warnings [sc-100940] #2420
  • [ci] feature/sc-100324/ci-build-cross-platform #2418
  • [test] Wi-Fi resolve test improvements #2454
  • [workbench] update-device-os-workbench-manifest-json #2457
  • [ci] test-build-system-tune-timeouts #2455
  • Allow overriding the platform ID on the GCC platform #2462
  • Enable OTA updates on the GCC platform #2464
  • Fix GCC platform on some versions of GCC; Fix building of wiring/api tests on CI #2483
  • [workbench] Update workbench buildscripts to 1.11.0 #2465
  • [workbench] Stop ignoring device os scripts directory #2471
  • [workbench] Remove redundant toolchain overrides #2489
  • [wifi] Add stubs to allow setting common country code and channel plan in P2 #2473 #2485
  • [tests] Change PWM pins to better match e-series pinout for E SoM X. Fix other tests #2463
  • [tests] Misc changes to tests from 5.x #2466
  • [tests][esomx] disable RGB pwm channel(s) when running pwm tests #2494
  • Streamline .bundleignore between 5.x and 4.x codebases #2496
  • branch pattern changes for test-build-system #2510
  • [test] fixes race condition with wiring/no_fixture TIME_17 #2514

3.3.0

FEATURES

  • [Gen3] BLE Provisioning Mode #2382 #2379 #2405
  • System.off() API support for unsubscribing from system events/handlers #2390
  • CoAP Blockwise transfer for Describe messages #2377 #2417

ENHANCEMENTS

  • Enables stack overflow detection in all builds #2392
  • Adds LOG_C_VARG() logging macro to support vargs from user apps #2393
  • Adds os_thread_dump* introspection functions to wrap the FreeRTOS functions #2394
  • [ci] Migration to CircleCI #2395
  • Adds ability to override the panic handler in user applications #2384
  • [gen3] SystemPowerConfiguration::socBitPrecision(uint8_t bits)) API added #2401

BUGFIXES

  • Thread/interrupt safety for system_event_t subscriptions #2390
  • [gen3] BLE: introduce wiring APIs to change ATT MTU #2398
  • [gen3] Dummy setup code should not return error #2411

3.2.0

FEATURES

  • [wiring] acquireSerialXBuffer() API support for UART #2375
  • [Boron / B SoM ] Support for SARA R510 #2359 #2365
  • [Electron] Optional feature to use HSE/LSI as RTC clock source instead of LSE (external 32KHz XTAL) #2354
  • [Gen 3] BLE: Add ability to set and scan extended advertisement size (when using Coded PHY) #2331

ENHANCEMENTS

  • Enable GCC -Wextra when building Device OS to enable additional diagnostics provided by GCC. Fix issues uncovered #2340
  • Refactor system describe/info JSON generation to reduce size and remove invalid modules from it #2347 #2349
  • [Boron / B SoM / R510] Add additional modem responsiveness check on warm boot to avoid triggering R510-specific initialization issue #2373

BUGFIXES

  • [Gen 3] BLE: fix unintialized scan_phys in default scan parameters, preventing scanning from working unless BLE.setScanPhy() is manually set #2338 #2345
  • [Argon / Tracker] Avoid power leakage through ESP32 ESPBOOT pin #2342
  • Fix parsing of JSON strings with more than 127 tokens #2348
  • Clear module slots in DCT when preparing for an OTA update #2346
  • [Gen 3] Increase BLE operation timeout to ensure that BLE events are correctly handled and do not trigger an assertion #2371
  • [Argon] Fix occasional WiFI setup issue over BLE #2372
  • [Gen 3] Ensure that invalid modules are not presented to the cloud in System Describe message #2374
  • [Gen 3] BLE: Fix copy-constructor and assignment operator issues in wiring APIs #2376
  • Fix hardfault handler to SOS again #2381
  • [Gen 3] Fix LittleFS truncate causing file corruption #268 #2385
  • [Gen 3] HAL - Only skip modules that fail integrity check from module info #2387

3.1.0

FEATURES

  • [Gen 3] 256KB application support #2322
  • Support for DTLS connection IDs #2249
  • GCC 10 support #2288
  • [Gen 3] BLE LESC support #2262
  • [Gen 3] BLE 5 PHY_CODED (long range) scanning and advertising support #2287 #2298 #2321
  • [Tracker] AB1805 native watchdog support #2316
  • [Boron / B SoM / Electron] Support for SARA R410 05.12 modem firmware #2317 #2319 #2318
  • Add an API to get the maximum supported size of event data #2315

ENHANCEMENTS

  • [Argon] Cache ESP32 MAC address in persistent storage to improve boot-up times #2327
  • [Cellular] Inhibit Cellular URCs before going into sleep to prevent them from triggering wake-up #2295 #2321
  • [Gen 3] Remove XIP support for accessing the external flash #2302 #2321
  • [Photon / P1] Enable LTO #2288
  • Trigger a compiler error when a function returning a value does not do so #2323
  • [Gen 3] Fix non-MBR-based bootloader updates #2327

BUGFIXES

  • Do not reset the DTLS session on socket errors #2335 #2337
  • [Cellular] Prevent ICCID querying errors when not connected to a cellular network by using airplane mode CFUN=4 #2328
  • [Photon / P1] Make sure to close all sockets when deinitializing WICED WLAN connectivity subsystem #2313 #2321
  • [Gen 2] Fix unexpected network connection establishment after exiting sleep mode when only Network.on() was called #2309
  • [Gen 2] Fix unexpected network connection establishment when the modem or WiFi initialization failes, but only Network.on() was called #2309
  • Correctly restore network interface power state after waking up from STOP or ULTRA_LOW_POWER sleep modes #2308
  • Fix the issue that the Particle.disconnect() doesn’t clear the auto-connect flag #2306
  • [Electron] Fix unintended modem reset after an ongoing network registartion attempt is actively cancelled by the application #2307
  • Fix Particle.unsubscribe() not preserving system subscriptions #2293
  • Querying the value of an empty string variable causes an error #2297

3.0.0

BREAKING CHANGES

  • [Cellular] Remove rssi and qual from Cellular.RSSI() #2212
  • [Gen 3] BLE API consistency enhancements #2222

FEATURES

  • [Electron] Proactively attempt to recover from a number of failed cellular registration states #2301
  • [Cellular] Battery presence detection when charging is disabled #2272
  • Increase the maximum DTLS packet size and payload of the cloud primitives #2260
  • [Cellular] Send modem firmware version to the cloud as part of the system describe message #2265
  • [Gen 3] OTAv3 protocol #2199
  • [Tracker] ESP32 WiFi scanning support #2250
  • [Cellular] SystemPowerFeature::DISABLE_CHARGING configuration option to enable or disable charging #2257
  • Network.isOn() and Network.isOff() APIs to query the network interface power state #2205
  • [Gen 3] BLE legacy pairing #2237
  • [Cellular] Query cellular signal while trying to register on a network #2232
  • [Tracker] WiFi/GNSS/FuelGauge sleep wake-up sources #2200
  • Configure multiple pins as wakeup source at a time #2228 #2231

ENHANCEMENTS

  • [Argon] Reduce cloud keep-alive timeout to 25 seconds from 30 seconds #2304
  • Improve I2C reset procedure to be less destructive and issue STOP condition as soon as possible #2303
  • [Cellular] Perform PMIC/FuelGauge/RTC I2C bus reset on boot to avoid accidental writes after a non-graceful reset #2303
  • [Cellular] System power management improvements #2272 #2290
  • [Cellular] Update ICCID/IMSI to APN map with a new Kore ICCID prefix #2276
  • Disable some of the elliptic-curves not in use to save flash space #2273
  • [Cellular] Update LTE signal strength/quality parameters (RSRP/RSRQ) mapping to percentages #2285
  • [B5 SoM / Quectel] Improve warm and cold boot behavior #2300
  • [Gen 3] Custom logging categories for AT parser and GSM 07.10 multiplexer to differentiate between cellular modem and ESP32 on Tracker platforms #2267
  • [Tracker] Reduce code size of GSM 07.10 multiplexer implementation making sure that ESP32 and cellular NCP client use the same template variant of it #2267
  • [Electron] Speed up modem power-on #2268
  • [Tracker] Cache ESP32 NCP firmware version in non-volatile memory #2269
  • [Gen 3] Network interface management improvements #2217
  • [Gen 3] SPI.transfer() support for constant buffers residing in flash #2196
  • [Gen 3] Add characteristic discovery to BleService #2203
  • [Gen 3] BLE Scanned/Connected/Disconnected/Data Received callbacks in C++ style #2224
  • [Gen 3] BLE scanning filter #2223
  • [Electron] Build system parts with LTO enabled #2235
  • Add more operators for BleAddress, BleUuid and IPAddress#2216
  • Upate MbedTLS to 2.22.0 #2117
  • [Tracker] ESP32 NCP firmware updated to version 0.0.7
  • Use PARTICLE_ prefix for LED defines in order not to pollute global namespace #2247
  • [Gen 3] Ethernet FeatherWing power state management #2258
  • [Cellular] Changes how signal strength and quality percentages are calculated to provide a more accurate representation of signal conditions #2236

BUGFIXES

  • [Gen 3] Add workaround for Nordic nRF52840 anomaly 219 (TWIM: I2C timing spec is violated at 400 kHz) #2303
  • [Gen 3] Fix micros/millis/unixtime becoming non-monotonic 2a4fcb82b #2303
  • [Gen 3] Use PIN_INVALID when initializing SPI peripheral to avoid overriding the pin mode of the default CS pin on reinitialization #2275
  • [Argon / Tracker] Make sure that ESP32 NCP power state is correctly initialized on boot #2279
  • [Electron] Increase AT+COPS timeout to 5 minutes #2281
  • [Electron] Fix Sleep 2.0 APIs taking up to 10 minutes to power-off the cellular modem while it’s attempting network registration #2284
  • [B5 SoM / Tracker] Fix warm boot sometimes requiring modem reset #2289
  • [Boron / B SoM] Fix external SIM getting stuck in initialization #2263
  • [BLE] Return false in BlePeerDevice::getCharacteristicByDescription() if expected characteristic was not found #2266
  • [Gen 3] Fix UART DMA RX transfer size issues causing DMA writes outside of the RX buffer #2264
  • [Gen 3] Fix ChannelStream::waitEvent() timeout calculation #2267
  • [Gen 3] Fix warm boot feature regression introduced in 3.0.0-beta.1 #2269
  • [Gen 3] Disconnect from the server on OTAv3 update errors #2270
  • [Gen 2] Fix D0 alternate-function being unconditionally reset when calling Serial1.end() #2256
  • [Gen 3] Fix an issue with BLE.scan() deadlocking #2220

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v4.0.0/particle_device-os@4.0.0.zip


Programming and Debugging

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

Branches

release/stable and master branches have been updated to point to v4.0.0 tag.

2 Likes

Device OS 5.0.1 Release is available in the Web IDE, Particle CLI and Workbench for (Argon/Boron/B SoM/B5 SoM/Tracker/Tracker M/E SoM X/P2).

Released on September 3rd, 2022

Note: This is a Release and may be used for production.

This is a release on non-LTS feature development branch (5.x). To learn more about our new LTS release line, read our blog post.

You can view information about Device OS versions, upgrades and downgrades here.

Gen 3 256KB application binary support

Device OS v3.1.x and further releases bring support for 256KB application binaries to all Gen 3 platforms (at that time: Argon, Boron, B SoM, B5 SoM, Tracker). A few important aspects of this change:

  1. Compatibility with 128KB applications built with < Device OS 3.1 versions is maintained. Devices can still run them even if other parts have been upgraded to Device OS 3.1+.
  2. Upgrade process OTA (including product-based upgrades) is transparent.
  3. When upgrading locally (using DFU or Serial), make sure to update the bootloader first, as it has some logic managing compatibility between 128KB and 256KB application types. See this page on steps how to perform the update.
  4. If using standalone Particle CLI installation, make sure it’s updated to >= 2.12.0 version, which includes support for 256KB applications.

5.0.1

FEATURES

  • Added APIs for hardware configuration for reading OTP format #2526
  • [trackerM] Update demux driver and pinmap to support more latest hardware

BUGFIXES

  • Secures DCT initialization from getting interrupted between creating DCT file and filling it with 0xff to default state #2530
  • [trackerM] Fix hal dynalib tables #2523

INTERNAL

  • [trackerM] Fix interrupt based tests #2527

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v5.0.1/particle_device-os@5.0.1.zip


Programming and Debugging

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

1 Like

Device OS 5.1.0 Release is available in the Web IDE, Particle CLI and Workbench for (Argon/Boron/B SoM/B5 SoM/Tracker/Tracker M/E SoM X/P2).

Released on September 30th, 2022

Note: This is a Release and may be used for production.

This is a release on non-LTS feature development branch (5.x). To learn more about our new LTS release line, read our blog post.

You can view information about Device OS versions, upgrades and downgrades here.

5.1.0

FEATURES

  • [rtl8721x][p2] supports BLE GATT client, BLE central role and pairing APIs #2542

ENHANCEMENTS

  • [rtl872x] Improve ADC accuracy #2546
  • [rtl8721x] update rtl872x.tcl script for latest openocd version #2525
  • [hal] wifi: add generic ‘world’ country code as not every country code is exposed through API #2539
  • [rtl8721x] Increase power management thread stack size for Tracker M #2535
  • [trackerM]Fix MCP23S17 driver to allow mirrored (shared) interrupts #2533

BUGFIXES

  • [rtl872x] usb: make sure CDC line coding struct is packed #2541
  • [rtl872x] hal: fix fetching of MAC addresses #2537
  • [tests] Fix listening mode tests on trackerM #2534
  • [wiring] ApplicationWatchdog: fixes potential 2x timeout required to fire #2536
  • [p2][gen3]Fix BLE control request channel sending malformed packets #2538
  • [tests/trackerm] Add workaround for TrackerM ota tests #2544

INTERNAL

  • Use new prtcl compile/clean commands for internal CI builds #2543
  • Improve COAP message logging #2498
  • HAL wiring api calls to access exflash read/write functions for OTP flash page #2540

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v5.1.0/particle_device-os@5.1.0.zip


Programming and Debugging

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

1 Like

Device OS 4.0.1-rc.1 Release Candidate is available in the Web IDE, Particle CLI and Workbench for (Argon/Boron/B SoM/B5 SoM/Tracker/E SoM X).

Released on October 26th, 2022

Note: This is a Release Candidate and is not intended for production yet. This is the first Release Candidate for the upcoming Device OS release 4.0.1 (LTS) with critical bugfixes and backports from 5.x release line

To learn more about LTS release line, read our blog post.

You can view information about Device OS versions, upgrades and downgrades here.

Gen 3 256KB application binary support

Device OS v3.1.x and further releases bring support for 256KB application binaries to all Gen 3 platforms (at that time: Argon, Boron, B SoM, B5 SoM, Tracker). A few important aspects of this change:

  1. Compatibility with 128KB applications built with < Device OS 3.1 versions is maintained. Devices can still run them even if other parts have been upgraded to Device OS 3.1+.
  2. Upgrade process OTA (including product-based upgrades) is transparent.
  3. When upgrading locally (using DFU or Serial), make sure to update the bootloader first, as it has some logic managing compatibility between 128KB and 256KB application types. See this page on steps how to perform the update.
  4. If using standalone Particle CLI installation, make sure it’s updated to >= 2.12.0 version, which includes support for 256KB applications.

4.0.1-rc.1

BUGFIXES

  • [wiring] ApplicationWatchdog: fixes potential 2x timeout required to fire #2536
  • [gen3]Fix BLE control request channel sending malformed packets #2538
  • Fix issue with platform_ncp_get_info(0) for quectel platforms #2532
  • Secures DCT initialization from getting interrupted between creating DCT file and filling it with 0xff to default state #2530

INTERNAL

  • Use new prtcl compile/clean commands for internal CI builds #2543
  • Increase timeouts for internal CI builds on windows #2545
  • HAL wiring api calls to access exflash read/write functions for OTP flash page #2540
  • [hal] wifi: add generic ‘world’ country code as not every country code is exposed through API #2539

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v4.0.1-rc.1/particle_device-os@4.0.1-rc.1.zip


Programming and Debugging

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