Skip to content

Releases: particle-iot/device-os

v6.6.0 (Argon/Boron/B-SoM/B5-SoM/Tracker/Tracker-M/E-SoM-X/M-SoM/P2)

Choose a tag to compare

@technobly technobly released this 13 Oct 20:51

Device OS 6.6.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/M-SoM/P2).

Released on October 13th, 2026

See documentation about Device OS versions, their current state, upgrades and downgrades here.


6.6.0

FEATURES

  • [Cellular] eSIM-aware IDLE cellular state: with no enabled eSIM profile the modem stays on and reachable over AT but does not try to register #2953
  • [system] Allow reading and clearing the last panic info over USB #2949

ENHANCEMENTS

  • [Cellular] Registration backoff for deactivated SIMs: after the first hour of failed registration attempts, retries space out to 1/2/4 hours with the radio off #2959
  • [Gen 4] RNG: switch to mbedTLS CTR_DRBG over an ADC-based entropy source #2950 #2965
  • [system] Re-send the system describe when the ICCID changes (e.g. an eSIM profile switch) #2953
  • [Gen 4] Backup RAM persists to the filesystem instead of a dedicated flash page #2948
  • [build] Parallel build support (make -jXX) and ccache #2941
  • [system] Non-blocking cloud handshake: the system loop keeps running while the DTLS and CoAP handshake is in progress #2937
  • [Gen 4] Enable mbedTLS restartable ECP so handshake ECC operations don't block the system loop #2964
  • [Gen 4] Speed up AES operations by moving AES tables from PSRAM into SRAM (MBEDTLS_AES_ROM_TABLES off) #2965
  • Generate a heap panic if heap operation would cause a deadlock due to disabled scheduler #2944 #2958

BUGFIXES

  • [Cellular] Detect and recover from an unresponsive modem AT interface while connected, reset connection state on every disconnect() exit path #2940
  • [Cellular] [R510] Allow more time for the modem to answer AT after a parser error before hard resetting it #2940
  • [Cellular] cellular_device_info() uses the cached info without taking the NCP client lock when the modem is off #2952
  • [Cellular] [Quectel] APDU channel reliability fixes #2953
  • [M SoM] Fix power leakage in STOP/ULP sleep mode (PB12/SWD_DATA pull-ups) #2936
  • [Gen 3] usb: fix non-blocking Serial writes asserting on a full TX buffer and receiving with a null buffer #2939
  • [Gen 3] [Gen 4] Fix malloc deadlocks when allocating with the scheduler suspended (SPI/I2C init, TCPServer constructor), __malloc_lock trylocks the mutex before panicking #2944 #2958
  • [Gen 4] backup ram: initialize the retained system area on cold boot #2948
  • [third_party] littlefs: fix truncate followed by a write tripping the pcache assert #2947
  • [third_party] mbedtls: security fixes backported from 2.22.0 #2942
  • [system] ledger: fix a HardFault on cloud disconnect during a ledger update, encode the result and error message in responses #2957
  • [system] Disconnect from the cloud when the network interface carrying the cloud connection goes down and resume the session on reconnect; Cellular.disconnect() / WiFi.disconnect() on that interface now disconnect from the cloud first #2964
  • [wiring] Fix SystemSleepConfiguration move assignment leaking wakeup sources (memory lost on every sleep cycle when reusing a configuration); fix network wakeup source/reason sizes and SystemSleepResult self-assignment #2968
  • [wiring] pinAvailable() no longer initializes SPI; pins used by SPI/I2C/UART peripherals are detected from the pin function on Gen 3 and Gen 4 #2961
  • [Gen 4] I2C: fix slave mode SCL hold and interrupt storm #2960
  • [Cellular] [Quectel] EG91: recover from an unresponsive AT interface during PPP data dial #2962
  • [Cellular] cellular_device_info() ignores and does not cache invalid ICCIDs, falls back to cached info if the modem query fails #2962
  • [third_party] FreeRTOS: vEventGroupDelete() frees memory outside the scheduler-suspended section #2965

INTERNAL

  • [build] Back-write the real module hash and CRC into the linked ELF files, so an ELF can be matched against the module hash a device reports #2949
  • [Gen 3] Flash space savings: disable x509 certificate parsing on LOW_FLASH_SPACE platforms, compact USB string mapping table in USB driver #2954
  • [Tracker] Stub out Wi-Fi code unused on scan-only platforms to save flash space #2954
  • [Gen 3] NFC driver can be compiled out for debugging purposes #2953
  • [ci] Faster CI builds #2941
  • [test] Env var suite fixes: drop the empty env var set OTA workaround, make sure product level env vars are cleared #2943 #2955
  • [hal] HAL_PLATFORM_STRICT_HEAP_LOCK_PANIC debug option to panic on any heap access while the scheduler is suspended #2963
  • [ci] Don't ship test ELF files in CI release artifacts #2956
  • [test] Sync the device public key before running tests, entropy source qualification test, EG91 PPP stall and power saving test reliability #2965 #2962 #2967

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v6.6.0/particle_device-os@6.6.0.zip

v6.5.0 (Argon/Boron/B-SoM/B5-SoM/Tracker/Tracker-M/E-SoM-X/M-SoM/P2)

Choose a tag to compare

@avtolstoy avtolstoy released this 17 Jul 17:02

Device OS 6.5.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/M-SoM/P2).

Released on July 17th, 2026

See documentation about Device OS versions, their current state, upgrades and downgrades here.


6.5.0

FEATURES

  • Multi-byte read()/peek()/write() APIs for hardware UARTs and USB Serial #2935
  • Per-interface cloud keepalive environment variables (PARTICLE_CLOUD_KEEP_ALIVE, PARTICLE_CELLULAR_CLOUD_KEEP_ALIVE, PARTICLE_WIFI_CLOUD_KEEP_ALIVE, PARTICLE_ETHERNET_CLOUD_KEEP_ALIVE) and Particle.getKeepAlive() #2916
  • Power manager PARTICLE_POWER_INPUT_CURRENT and PARTICLE_POWER_CHARGE_CURRENT environment variables #2928 #2929

ENHANCEMENTS

  • Tethering and cellular (PPP) throughput and reliability improvements (adaptive LCP echo, dedicated PPP TX queue) #2932
  • [network] SO_LINGER support for faster TCP pcb/pbuf cleanup #2932
  • [Gen 4] network: improved TCP performance (larger windows/buffers) #2932
  • [M SoM] M635: Enable 2G fallback support #2933

BUGFIXES

  • [Gen 4] Allow USB CDC (Serial) buffers to be resized with acquireSerialBuffer() after first initialization #2932
  • [Gen 4] usart: fix event handling in interrupt mode UARTs causing reads/writes through waitEvent() (e.g. PPP tethering) to only progress on poll timeouts #2932
  • [Gen 4] usart: fix RTS/CTS hardware flow control being silently disabled due to slow clock domain register access #2932
  • [Gen 4] usart: fix FIFO overflow behavior under RTS flow control #2932
  • [Gen 4] usart: fix DMA-mode USART (NCP or Serial2 on P2/Photon2) available()/peek() not accounting for data still residing in the GDMA FIFO e316605
  • [Gen 4] usart: fix received data loss when entering sleep with DMA-mode (Serial2) UART e316605
  • [Gen 4] usart: fix TX buffer handling in interrupt mode e316605
  • [Gen 3] usart: fix interrupt/normal context race condition causing TX transmissions to never start #2932
  • [Gen 3] usart: fix multi-byte peek() not seeing all the data reported by available() e316605
  • [network] tethering: fix TCP MSS clamping in NAT #2932
  • [Gen 4] [Cellular] muxer: prevent USB starvation and busy looping under heavy cellular traffic #2932
  • [network] lwip: fix tcp_pcb double-free in tcp_input_delayed_close() #2932
  • [system] Apply cloud keepalive based on the active network interface when the cloud connection moves between interfaces (ACM) #2916
  • [Gen 4] usb: fix control interface class driver consuming dataIn/dataOut events for unrelated endpoints #2922
  • [Gen 4] usb: distinguish between the host halting reads from USB Serial and a slow host #2932
  • tethering: Fix blocking behavior on writes when tethering over USB #2932
  • [hal] fix os_thread_join() accessing a stale/freed task TCB #2932
  • [hal] fix idle hook priority bump when there are threads pending cleanup, keeping terminated thread resources from being freed #2932
  • [wiring] network: fix null pointer dereference for interfaces without a hardware address #2932
  • [system] Force cloud connection checks on interface state changes only for interfaces that can carry the cloud connection #2932
  • Improve I2C driver reliability: Wire.end() in user application no longer breaks PMIC/FuelGauge access in system power manager #2913
  • Fix race condition on entering POWER_OFF sleep mode with AM18x5 (external RTC) #2927
  • Fix default cloud keepalive values #2926
  • [system] Do not run background network connection test if no networks are ready, avoiding LwIP errors when polling with no connected sockets #2930
  • [Cellular] Workaround for EG916Q returning too large APDU responses #2934

INTERNAL

  • [system] API for scheduling calls in the system thread #2921
  • iperf3 (libiperf) port and tethering throughput HIL test suites (UDP/TCP, bidirectional, USB and Serial1, device-direct cellular paths) #2932 #2920
  • [hal] Coalesce serial stream implementations into a shared one #2932
  • [GCC] Multi-byte serial read/write/peek support and poll()-based serial wait events, fix tinker builds #2935
  • [third_party] lwip: SO_LINGER fixes (abort on close with zero linger timeout, do not abort sockets in LISTEN state), per-pcb RX frame counter for adaptive LCP echo, map ERR_IF to EIO, tcp_pcb double-free fix #2932
  • [third_party] freertos: expose uxTaskGetNumberOfTasksWaitingTermination() #2932
  • [third_party] gsm0710muxer: add GSM0710_COOP_YIELD_MS and GSM0710_MAX_TIMEOUT_ITERATIONS to avoid busy looping and time-share CPU #2932
  • [third_party] coremark: fix builds on the GCC platform #2935
  • [build] [Gen 3] Reclaim >3KB of flash on LTO-enabled platforms with -flto-partition=one #2928
  • [test] Flash a dummy OTA at the start of the test runner suite to reset device service maxSameBinaryAttempts counter, which was blocking OTA updates on repeated test runs #2931
  • [test] Work around spurious USB control transfer stalls (kernel xhci_hcd bug) during pre-sleep mailbox handshake with an explicit mailbox ACK mechanism, propagate mailbox result codes to tests #2923
  • [test] wiring/sleep20: make sure pending reset mailbox messages are received by the test runner before the device goes into sleep #2919
  • [test] wiring/serial_loopback2: always tri-state the loopback buffer in cleanup #2918
  • [test] wiring/serial_loopback/serial_loopback2: parameterize for Serial1/Serial2/Serial3 use, cover multi-byte read/write/peek and available() consistency 538a25c

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v6.5.0/particle_device-os@6.5.0.zip

v6.4.1 (Argon/Boron/B-SoM/B5-SoM/Tracker/Tracker-M/E-SoM-X/M-SoM/P2)

Choose a tag to compare

@avtolstoy avtolstoy released this 04 May 17:46

Device OS 6.4.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/M-SoM/P2).

Released on May 4th, 2026

See documentation about Device OS versions, their current state, upgrades and downgrades here.


6.4.1

FEATURES

  • [Gen 3, Gen 4] Initial USB (Serial) tethering support #2898 #2912
  • [M SoM] Initial hardware UART tethering support (Serial1/Serial2) #2910
  • [Cellular] Application and USB control request API for sending APDUs #2915

ENHANCEMENTS

  • [Cellular] BG95S5 cellular env vars support #2908
  • Support detecting/configuring M-HAT in Tinker #2914

BUGFIXES

  • [Gen 4] Allows longer duration sleep with AM1805 (external RTC) #2907
  • [Tracker] Expose deprecated hal_exrtc_ functions #2907
  • [Gen 4] Fix interrupt/thread safety issues when reading manufacturing data from eFuses#2909
  • [Gen 4] [scripts] fix OpenOCD rtl872x.tcl flash script to be more reliable #2911
  • Filesystem initialization in bootloader should create /sys folder to prevent a panic in system expecting it to be present#2917

INTERNAL

  • manufacturing/empty_external_flash test #2917

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v6.4.1/particle_device-os@6.4.1.zip

v6.4.0 (Argon/Boron/B-SoM/B5-SoM/Tracker/Tracker-M/E-SoM-X/M-SoM/P2)

Choose a tag to compare

@scott-brust scott-brust released this 19 Mar 07:50

Device OS 6.4.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/M-SoM/P2).

Released on March 19, 2026

See documentation about Device OS versions, their current state, upgrades and downgrades here.


6.4.0

FEATURES

  • Environment #2892 #2904 #2903 #2892 #2903 #2902
  • PRE_STARTUP() API for earlier application initialization #2888
  • [system] PARTICLE_BLE_ENABLE, PARTICLE_WIFI_ENABLE, and PARTICLE_ETHERNET_ENABLE environment variables #2897
  • [cellular] support PARTICLE_CELLULAR_PREFERRED_BANDS, PARTICLE_CELLULAR_FORBIDDEN_BANDS, and PARTICLE_CELLULAR_PREFERRED_PLMN environment variables #2896
  • [am18x5] built-in AM18x5 driver in Device OS #2906 1bb9b26
  • POWER_OFF sleep mode support through AM18x5 #2906

BUGFIXES

  • Fix DNS server change lockup and improve DNS failure handling #2894
  • [wiring] system: fix 32-bit global millis() being shadowed by class-member 64-bit millis() 9d30096
  • [system] do not handle network activity when going into sleep mode if network manager is not initialized 97ecb3d
  • [Gen 4] preserve RTC time across sleep and software resets #2906 708feb6

INTERNAL


System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v6.4.0/particle_device-os@6.4.0.zip


Programming and Debugging

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

v6.3.5 (Argon/Boron/B-SoM/B5-SoM/Tracker/Tracker-M/E-SoM-X/M-SoM/P2)

Choose a tag to compare

@technobly technobly released this 15 Jan 21:33

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

Released on January 15, 2026

See documentation about Device OS versions, their current state, upgrades and downgrades here.


6.3.5

BUGFIXES

  • [tracker] Resolved a bug in mcp23s17.cpp where the SPI lock was not being properly acquired #2886
  • [b5som][eg91nax][quectel] Added a workaround for a modem firmware bug where an incorrect svc_mode could prevent SIM switching. Device OS now proactively monitors and corrects this setting during the registration process. #2891
  • [fuelgauge] Fixed an issue where FuelGauge could return incorrect readings if the I2C bus was disabled during large buffer re-initialization. The API now automatically triggers begin() when needed, removing the manual requirement for users. #2890
  • Added support for I2C::setSpeed() from 10kHz to 99kHz in 1kHz increments #2893

ENHANCEMENTS

  • [gen4] Optimized boot time by enabling cache earlier in the boot sequence, optimizing BLE/USB initialization, and streamlining integrity checks.#2887

INTERNAL

  • [tests] Adds 00_before and zz_after HIL integration test suites #2884

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v6.3.5/particle_device-os@6.3.5.zip


Programming and Debugging

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

v6.3.4 (Argon/Boron/B-SoM/B5-SoM/Tracker/Tracker-M/E-SoM-X/M-SoM/P2)

Choose a tag to compare

@technobly technobly released this 01 Oct 16:59

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

Released on Oct 1, 2025

See documentation about Device OS versions, their current state, upgrades and downgrades here.


6.3.4

BUGFIXES

  • Increased the system power manager stack size for all platforms to improve reliability. This fix also enables B-SoM for Muon #2874
  • [gen4] [bootloader] Updated the Gen 4 bootloader SDK to correct a pin-toggling issue in Device OS 6.2.1–6.3.3. It could cause pins D4–D7 to briefly toggle on boot due to unintended SPI pin configuration. The fix ensures the pins retain their correct state during startup.#2876
  • [test] Fixed specific test failures for M635/M-SoM with BG95-S5/BG95-M5 modems in the CELLULAR_07_urcs suite. #2877
  • [gen4] Fixes a bug such that the application gets notification of new wifi credentials no matter where it is coming from. Specifically, system event network_credentials_added now passes NetworkCredentials object #2882

INTERNAL

  • [docs] Update CLA links #2878
  • [test] Update test dependencies #2879

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v6.3.4/particle_device-os@6.3.4.zip


Programming and Debugging

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

v6.3.3 (Argon/Boron/B-SoM/B5-SoM/Tracker/Tracker-M/E-SoM-X/M-SoM/P2)

Choose a tag to compare

@avtolstoy avtolstoy released this 11 Jun 20:13

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

Released on June 11, 2025

See documentation about Device OS versions, their current state, 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.

6.3.3

FEATURES

ENHANCEMENTS

BUGFIXES

  • [Gen 4] free_worker incorrect queue put #2872
  • [Gen 3] BLE lock is acquired inside ISR handler in cases where BLE memory pool gets exhausted #2873
  • [Gen 4] BLE stack does not handle correctly the case where the peripheral does not respond to the MTU exchange request #2873

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v6.3.3/particle_device-os@6.3.3.zip


Programming and Debugging

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

v6.3.2 (Argon/Boron/B-SoM/B5-SoM/Tracker/Tracker-M/E-SoM-X/M-SoM/P2)

Choose a tag to compare

@scott-brust scott-brust released this 05 May 17:45

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

Released on May 5, 2025

See documentation about Device OS versions, their current state, 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.

6.3.2

ENHANCEMENTS

  • [network] interface-aware DNS lookups #2864

BUGFIXES

  • [gen4] core: fix PSRAM heap size while in safe mode #2871
  • [hal] SPI: fixes threading safety issue #2865
  • [gen4] hal: get rid of unnecessary constant delay(1) in HAL_USB_USART_Send_Data() #2867
  • [gen4] Work around a race condition in the new event API #2869

INTERNAL

  • [gen4] Fix MBR flash_copy due to incorrect status register WIP bit detection #2868
  • [msom] Ignore CIMI errors on bg95s5 with no esim profile loaded #2866
  • [cellular] Support new Twilio Super SIM ICCID prefix 8910392

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v6.3.2/particle_device-os@6.3.2.zip


Programming and Debugging

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

v6.3.0 (Argon/Boron/B-SoM/B5-SoM/Tracker/Tracker-M/E-SoM-X/M-SoM/P2)

Choose a tag to compare

@avtolstoy avtolstoy released this 06 Feb 21:44

Device OS 6.3.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/M-SoM/P2).

Released on Feb 6, 2025

See documentation about Device OS versions, their current state, 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.

6.3.0

FEATURES

  • New cloud event API that supports sending and receiving up to 16K of data in an event #2840
  • Electron 2 platform support #2844
  • [wiring] Enable Cellular/WiFi/Ethernet .ping() for Gen 3 and Gen 4 platforms #2856

ENHANCEMENTS

  • [wiring] Generate an error when using EEPROM with String objects as String contains dynamically allocated data on heap #2855
  • [network] Postpone Ethernet interface initialization to allow STARTUP() call to override pin configuration without a reset #2848

BUGFIXES

  • Prevent low-level WiFI network buffer overflow #2853
  • [Gen 3] Increase main stack size from 2K to 4K #2851
  • Thread-safe __cxa_guard_acquire/__cxa_guard_release implementation #2851
  • [build] Fix section size calculations for paths containing section-like names #2852

INTERNAL

  • [test] wiring/no_fixture_long_running: update network tests to stress test large packets up to MTU size once max MTU is figured out #2855
  • [test] communication/long_publish: adds a long running publish test #2854
  • [build] Add asserts to linker files to make sure that stack sizes match the expected values #2851
  • Stub atexit to free up flash space used by global object destructors #2851

System Binaries (all devices)

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


Programming and Debugging

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

v6.2.1 (Argon/Boron/B-SoM/B5-SoM/Tracker/Tracker-M/E-SoM-X/M-SoM/P2)

Choose a tag to compare

@avtolstoy avtolstoy released this 16 Dec 16:34

Device OS 6.2.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/M-SoM/P2).

Released on Dec 16, 2024

See documentation about Device OS versions, their current state, 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.

6.2.1

FEATURES

  • Expose ICCID to Modem Manager when tethering #2838
  • [Cellular] BG95-S5 support #2842
  • [BLE] BLE.setAdvertisingScheme() API #2837

ENHANCEMENTS

  • [Gen 4] Optimize QSPI flash writes (to use highest clock speed and IO mode) and erasures (use 32K and 64K blocks when possible) #2841
  • [Ethernet] Minor performance optimizations #2846
  • [Ethernet] Enable internal pull-up on interrupt line in case external one is not populated to prevent it from floating 684047d7
  • [Gen 4] WiFi: Always perform a scan before connect and use both SSID + BSSID to initiate the connection #2849
  • [Cellular] [R510] Extend EHS (Emergency Hardware Shutdown) sequence timing due to reduced clock rate while in (UPSV=1) Power Saving mode #2850

BUGFIXES

  • [Gen 3] Fix DMA issue when writing from internal flash to external flash #2843
  • [Ethernet] Fix default pin configuration/validation #2846
  • [Cellular] [R510] Device OS 6.2.0 unmasked all bands on R510; however LTE Cat-M1 band 71 shall be re-disabled. See our Technical Advisory Note for more info #2845
  • [Gen 4] BLE: Fix a deadlock between BLE.connect() and BLE.peerCentral() calls in different threads #2836
  • [Gen 4] BLE: Fix connection issues operating in peripheral/central roles concurrently #2839

System Binaries (all devices)

https://github.com/particle-iot/device-os/releases/download/v6.2.1/particle_device-os@6.2.1.zip


Programming and Debugging

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