Device OS 1.5.0 Default Release is out on the Web IDE for (Photon/P1/Electron/Argon/Boron/Xenon/B SoM/B5 SoM)
released on production servers March 30th, 2020
Please read all notes below :bowtie:
Note: This is a Release and may be used for production. Any known issues are likely slated for a future version, (check Github issues). It is available by default for all devices. To use, select the 1.5.0 version dropdown from the devices drawer.
Downgrading back to a previous release info is at the bottom of this post.Note: If you have previously last used one of the prerelease or release versions of 1.5.x on a device, please re-flash it with 1.5.0.
Note: OTA or YModem transfer on Electron (sequence required)
- First Update to 0.5.5 (if the current version is less than that)
- Then update to 0.6.4 (if the current version is less than that)
- Then update to 0.7.0 (if the current version is less than that)
- Then update to 1.2.1 (if the current version is less than that)
- Then update to 1.5.0
Note: DFU over USB on Electron/Photon/P1 (sequence not required)
- You may update to 1.5.0 directly first, flash the system firmware (attached above) in order 1,2(,3) to the device using
particle flash --usb <system-part.bin>
. See the next note about the bootloader if you are offline!Note: P1/Photon Bootloader
The Cloud will automatically update the bootloader on P1/Photon devices if your device is online. If your device does not connect to the cloud and it is offline, you should flash the bootloader to the device usingparticle flash --serial <bootloader.bin>
. This should be done after upgrading system firmware. The Electron bootloader is applied automatically from it’s own system parts.Note: Argon/Boron/Xenon/Argon-SoM/Boron-SoM/Xenon-SoM Bootloader
If your device is offline, the bootloader must be manually updated usingparticle flash --serial <bootloader.bin>
. This can be done before or after upgrading system firmware.Note: Argon/Boron/Xenon/Argon-SoM/Boron-SoM/Xenon-SoM SoftDevice
If your device is offline, the SoftDevice must be manually updated using the CLI. See the instructions below.Note: Downgrading [Electron/Photon/P1] OTA or YModem transfer:
If you need to downgrade, you must downgrade to 1.2.1, then 0.7.0, then 0.6.3(Photon/P1), 0.6.4(Electron) to ensure that the bootloader downgrades automatically. When downgrading to older versions, downgrade to 1.2.1, then 0.7.0 first, then 0.6.3(Photon/P1), 0.6.4(Electron), then to an older version such as 0.5.5.
1.5.0
Note: If your Gen 2 Photon/P1 or Gen 3 device does not have a Cloud connection, it is recommended to update system firmware via CLI with
particle update
. Electron bootloaders are still contained in system firmware and will update automatically as needed.
Note: If your Gen 3 device does not have a Cloud connection, this release will also require manually updating the SoftDevice via CLI. The instructions are available in the release notes and the SoftDevice binaries are available in the Github release.
This release contains v501 bootloaders.
DEPRECATION
- Spark Core End-Of-Life. 1.5.x+ releases no longer support Spark Core #2003
FEATURES
- Introduce configurable I2C buffer #2022
- Support for > 255 I2C buffers and transfers, configurable timeouts #2035
- Thread-safe cloud variables #1998
- Sleep 2.0 #1986
- Enables C++14 chrono string literals for wiring APIs #1709
- [Gen 3] Implements persistent antenna selection (
Mesh.selectAntenna()
) #1933 - GCC 8 support #1971
- [B5 SoM] B5 SoM platform support
- [Boron/Electron/B5 SoM] Reverts default PMIC settings changes, adds higher level power configuration API #1992
ENHANCEMENTS
- Replace AT+CSQ usage on Quectel-based devices with AT+QCSQ 147f654
- Replace AT+CSQ/CESQ usage on ublox-based LTE devices with AT+UCGED #2033 #2038
- [wiring] Specify floating precision in JSON library #2054
- Expose full concurrent HAL APIs to the application #2052
- Close cloud socket on communication errors on all platforms except for Electron #2056
- [B5 SoM] Enable hardware flow control for Quectel modem during runtime and add support for EG91-EX #2042
- Enables Workbench DeviceOS local development (deviceOS@source) #1957
- [Gen 3/Cellular] Enables logging of modem AT commands and data transmissions by default in modular builds #1994
- [Gen 2] Removes write protection enforcement of system firmware on boot #2009
- [Cellular] Adds
SystemPowerFeature::DISABLE
to disable system power management #2015
BUGFIXES
- [Boron/B SoM/B5 SoM] Fix Cellular Global Identity generation #2062
- [B5 SoM] Strip padding
F
from ICCID 4aa1746 - Fix 3G signal strength calculation on ublox-based cellular devices 553af7b
- Only increment unacknowledged counter for requests, not acknowledgements #2046
- Fix YModem transfer regression introduced in 1.5.0-rc.2 #2051
- [wiring] Fixes a memory leakage in
Mutex
andRecursiveMutex
classes #2053 - [B5 SoM] Fixes a hardfault when Ethernet is enabled #2057
- [P1] Enable power save clock (32KHz) only if not disabled by feature flag #2058
- [wiring] Fixes multiple conflicting candidates when calling
Wire.requestFrom()
#2059 - [Gen 2] Fix
SPI.beginTransaction()
deadlocking #2060 - [Gen 3] Fix a race condition in NCP client when the GSM0710 muxer connection to the NCP is abruptly broken #2049
- [Workbench] Workaround for failing Device OS builds on Windows #2037
- [Gen 2] platform: fix
FLASH_Update()
for unaligned writes #2036 - Fixes the issue with SPI default SS pin being not configured #2039
- [gcc] fixes builds on osx and enables usage of the latest gcc versions #2041
- [Gen 3] Fixes renegotiation of options and adds IPCP packet parsing #2029
- [Gen 3] Fix parsing of large AT command responses #2017
- String::substring() unnecessarily modifies the source buffer #2026
- [B5 SoM] Fix CGI for Quectel modems #2019
- [Gen 2] Fixes socket leak in
UDP.begin()
#2031 - [Gen 3] Fixes
Serial.read()
returning -1 instead of 0 when there’s no data to read #2034 - [Gen 3] Fixes BLE UUID conversion issue #1997
- [wiring] Fixes a regression in SPI due to thread-safety additions from #1879 #2023
- [Boron/BSoM] Enables advance SETUP/MODE button features (single click - RSSI, double click - soft poweroff) #1918
- Fixes a call to objdump when the compiler is not in PATH #1961
- [gcc] Ensure GPIO pinmap is initialized on first use #1963
- [Gen 3] Fixes too many connection attempts with deactivated SIM #1969
- [Gen 3] Fixes NCP issue with devices stuck in a seemingly connected state #1980
- [Photon/P1] Fixes a hardfault when calling certain
WiFI
class methods with WICED networking stack uninitialized #1949 - [Gen 3] Fixes
.particle/toolchains/gcc-arm/5.3.1/bin/objdump: not found
issues in Workbench #1996 - [B5 SoM] Temporarily disables hardware flow control #1999
- [Gen 3] Fixes retained variables first-time initialization #2001
- [B5 SoM] Removes unsupported
AT+CGDCONT
call withCHAP:<APN>
#2006 - [Boron] Increases
AT+COPS=0
timeout, lowers baudrate to 115200 #2008 - Prevents expansion of
EXTRA_CFLAGS
variable #2012 - [Gen 3] Workaround for QSPI/XIP nRF52840 hardware anomaly 215 #2010
- Fixes a potential buffer overflow in
Time.format()
#1973 - [Gen 2] Clear WLAN_WD when
disconnect()
is called #2016 - [Gen 3] Fixes concurrency/thread-safety SPI issues with Ethernet Featherwing #1879
INTERNAL
- [test] Removes A6 pin from PWM tests on B5 SoM d9c859c
- Fix building of boost on macOS #2044
- [ci] Workaround GitHub rate limiting by using github.com/xxx/yyy/tarball instead of api.github.com
- [test] unit: fixes Print tests failing #2027
- [B5 SoM] Change the prefix of BLE broadcasting name for B5SoM #2030
- update workbench manifest with latest
buildscripts
dependency #2020 - Increase
VitalsPublisher
test coverage #1920 - Adds missing platforms to manifest.json #1959
- Add support for control requests sent by the test runner #1987
- Add support for chunked transfer of USB request/reply data #1991
- Implements
EnumFlags
class for bitwise operations on C++ enum classes #1978 - Improves cellular test coverage #1930
- [Gen 3] Frees up some flash space in system-part1 #2000
- [Cellular] Internal function to modify cellular registration timeout #2007 #2014
- Removes xsom platform #2011
System Binaries (all devices)
https://github.com/particle-iot/device-os/releases/download/v1.5.0/particle_device-os@1.5.0.zip
SoftDevice update
This Device OS release will automatically update the SoftDevice for devices connected to the cloud.
Prerequisites
particle-cli version 2.3.0.
Upgrading using particle update
- Put the device into DFU mode
- Run
particle update
DeviceOS, bootloader and SoftDevice should get correctly updated.
Upgrading OTA
- Upgrade to 1.5.0
- Manually flash 1.5.0 bootloader:
particle flash <deviceId> boron-bootloader@1.5.0.bin
- Flash SoftDevice:
particle flash <deviceId> boron-softdevice@1.5.0.bin
Upgrading using YModem
- Upgrade to 1.5.0
- Put the device into listening mode (blinking blue) by holding MODE button
- Manually flash 1.5.0 bootloader:
particle flash --serial boron-bootloader@1.5.0.bin
- Flash SoftDevice:
particle flash --serial boron-softdevice@1.5.0.bin
Upgrading using DFU (–usb only works for SoftDevice, not bootloader yet)
- Upgrade Device OS to 1.5.0
- Update the bootloader to 1.5.0 with the OTA or YModem process above
- Put the device into DFU mode (blinking yellow)
- Flash the SoftDevice:
particle flash --usb boron-softdevice@1.5.0.bin
Programming and Debugging
You can view specific programming and debugging notes for this version of firmware here.
QA Report Summary for Particle Device OS
You can view results of tests run this release here.