v4.0.0-beta.1 (Argon/Boron/B SoM/B5 SoM/Tracker/E SoM X)
Pre-releaseDevice 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.
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:
- 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+.
- Upgrade process OTA (including product-based upgrades) is transparent.
- 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.
- 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 unlessBLE.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
orULTRA_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
andqual
fromCellular.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()
andNetwork.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
andIPAddress
#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
inBlePeerDevice::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/[email protected]
Programming and Debugging
You can view specific programming and debugging notes for this version of firmware here.