Releases: particle-iot/device-os
0.5.0-rc.2 Pre-release (Core/Photon/P1/Electron)
Pre-release 0.5.0-rc.2 was promoted to 0.5.0 final
0.5.0-rc.1 Pre-release (Core/Photon/P1/Electron)
v0.5.0-rc.1 Changelog
FEATURES
- [Electron] Multi-threading SYSTEM_THREAD() is supported (in Beta) #884
- [Electron] Cellular Data Usage API #866
- [Electron] Configurable keep-alive ping #913
- [Electron] Cellular Band Select API #891
- [Electron] Cellular Local IP API #850
- [Photon/Electron] Stack overflow detection with SOS code 13-blinks
- [Photon/Electron] SPI Slave support #882
- Atomic writes in EEPROM emulation #871
- Software Watchdog #860
- Serial.availableForWrite() and Serial.blockOnOverrun() #798
- [Photon] SoftAP HTTP server can serve application pages. #906
ENHANCEMENTS
- Compiler error with variable/function names that are too long. #883
- DFU writes are verified #870
- [Electron] NO_ACK flag on
Particle.publish()
disables acknoweldgements reducing data use #862 - [Electron] Allow session to resume when IP changes. #848
- [Electron] Ensure published events are received by the cloud before sleeping. #909
- [Electron] SLEEP_NETWORK_STANDBY on System.sleep() #845
- Serial baudrate to select ymodem mode includes listening mode #912
- Wi-Fi connection process forced to timeout after 60 seconds if unsuccessful #898
- Added write-verify-retry-fail logic to DFU writes #870
- Support for USART (Serial1/2/4/5) data bits, parity and stop bits #757
BUGFIXES
- targets
program-cloud
,program-dfu
can be used without requiringall
and will built the firmware correctly. #899 - TCPClient on Electron not receiving all of the data for small files #896
- [Electron] Free socket when the socket is closed remotely #885
- Extended CAN filters #857
- I2C does not ensure a stop condition completes correctly in endTransmission #856
- DAC1/2 possible problem with
digitalWrite()
afteranalogWrite()
#855 - Servo HAL: Do not disable timer if some of its channels are still in use #839
- USB driver fixes and Serial.available() not returning values greater than 1 #812 #669 #846 #923
- SOS During
WiFi.scan()
#651
INTERNALS
- dynalib: compile-time check for certain types of ABI breaking changes #895
Updating System Firmware (and optionally adding Tinker)
To update your device, compile and flash your application in the Build IDE, selecting version 0.5.0-rc.1 (prerelease) in the devices drawer. Update instructions for Core, Photon, P1 and Electron below.
The OTA method using Particle CLI
For devices already online and connected to the cloud, the system firmware can be updated OTA using these commands:
If your device is online, you can attempt to OTA (Over The Air) update these system parts as well with the particle-cli:
Note: You must download system binaries to a local directory on your machine for this to work.
Core:
particle flash YOUR_DEVICE_NAME tinker-0.5.0-rc.1-core.bin
Photon:
particle flash YOUR_DEVICE_NAME system-part1-0.5.0-rc.1-photon.bin
particle flash YOUR_DEVICE_NAME system-part2-0.5.0-rc.1-photon.bin
particle flash YOUR_DEVICE_NAME tinker (optional)
P1:
particle flash YOUR_DEVICE_NAME system-part1-0.5.0-rc.1-p1.bin
particle flash YOUR_DEVICE_NAME system-part2-0.5.0-rc.1-p1.bin
particle flash YOUR_DEVICE_NAME tinker (optional)
Electron:
particle flash YOUR_DEVICE_NAME system-part1-0.5.0-rc.1-electron.bin
particle flash YOUR_DEVICE_NAME system-part2-0.5.0-rc.1-electron.bin
particle flash YOUR_DEVICE_NAME tinker (optional)
The local method over USB using Particle CLI
This requires CLI version 1.11.0 or newer. You can check with particle --version
.
If you have the Particle CLI installed already, make sure it is updated with the following command. Make sure the device is in DFU mode and run:
sudo npm update -g particle-cli
(note: you can try without sudo first if you wish)
Core:
particle flash --usb tinker-0.5.0-rc.1-core.bin
Photon:
particle flash --usb system-part1-0.5.0-rc.1-photon.bin
particle flash --usb system-part2-0.5.0-rc.1-photon.bin
particle flash --usb tinker (optional)
P1:
particle flash --usb system-part1-0.5.0-rc.1-p1.bin
particle flash --usb system-part2-0.5.0-rc.1-p1.bin
particle flash --usb tinker (optional)
Electron:
particle flash --usb system-part1-0.5.0-rc.1-electron.bin
particle flash --usb system-part2-0.5.0-rc.1-electron.bin
particle flash --usb tinker (optional)
The local DFU-UTIL method
can be applied to offline devices locally over USB using dfu-util
- Put the device in DFU mode (flashing yellow LED)
- open a terminal window, change to the directory where you downloaded the files above, and run these commands:
Core:
dfu-util -d 1d50:607f -a 0 -s 0x8005000:leave -D tinker-0.5.0-rc.1-core.bin
Photon:
dfu-util -d 2b04:d006 -a 0 -s 0x8020000 -D system-part1-0.5.0-rc.1-photon.bin
dfu-util -d 2b04:d006 -a 0 -s 0x8060000:leave -D system-part2-0.5.0-rc.1-photon.bin
P1:
dfu-util -d 2b04:d008 -a 0 -s 0x8020000 -D system-part1-0.5.0-rc.1-p1.bin
dfu-util -d 2b04:d008 -a 0 -s 0x8060000:leave -D system-part2-0.5.0-rc.1-p1.bin
Electron:
dfu-util -d 2b04:d00a -a 0 -s 0x8020000 -D system-part1-0.5.0-rc.1-electron.bin
dfu-util -d 2b04:d00a -a 0 -s 0x8040000 -D system-part2-0.5.0-rc.1-electron.bin
dfu-util -d 2b04:d00a -a 0 -s 0x8080000:leave -D tinker-0.5.0-rc.1-electron.bin
Downgrading from 0.5.0-rc.x to current default firmware
Current defaults
Core: v0.4.9
Photon: v0.4.9
P1: v0.4.9
Electron: v0.4.8-rc.6
The easiest way to downgrade from a 0.5.0-rc.x prerelease system firmware, is to use the CLI and run these commands in order. First put the Tinker back on the device, then downgrade the System firmware. This requires CLI version 1.11.0 or newer. You can check with particle --version
.
If you have the Particle CLI installed already, you can update it with the following combined command. Make sure the device is in DFU mode and run:
sudo npm update -g particle-cli
(note: you can try without sudo first if you wish)
- Make sure Tinker is installed, instead of a 0.5.0-rc.x app that you may currently have running on your device. Have the device in DFU mode and run:
particle flash --usb tinker
- Make sure the device is in DFU mode and run:
particle update
This works for downgrading without specifying --target X.Y.Z
because the 0.5.0-rc.x pre-release firmware is not the default, and therefor particle update
effectively downgrades your firmware.
Debugging for Electron
Instructions on using the Tinker USB Debugging app are here
This is useful for simply capturing the Electron's connection process.
Instructions on using the Electron Troubleshooting app are here
This is useful for interacting with the Electron's connection process.
0.4.9 Release
FEATURES
- Support for CAN Bus #790 Thanks @monkbroc and @bspranger!
- blockOnOverrun() on hardware serial to allow applications to disable the default flow control.
- availableForWrite() on hardware serial to allow applications to implement flow control. #798
- WiFi.BSSID() to retrieve the 6-byte MAC address of the connected AP. #816
- attachInterrupt() configurable interrupt priority #806
- Time.local() retrieves the current time in the configured timezone. #783
- [photon] WiFi.getCredentials() lists configured credentials. #759
- variable frequency PWM via analogWrite(pin,value,hz) #756 Thanks @monkbroc!
- ATOMIC_BLOCK() and SINGLE_THREADED_BLOCK() declarations for atomicity and thread scheduling control. #758
- API for Guarding resources for use between threads.
- System events for individual button clicks and a run of button clicks. #818
ENHANCEMENTS
- System.freeMemory() shows an accurate value for free memory rather than the highwater mark for the heap.
- [threading] Entering listening mode does not block the system thread. #788
- [threading] System times out waiting for unresponsive application when attempting to reset. #763
- [threading]
Particle.publish()
doesn't block when in listening mode. #761 - [threading].
delay()
/Particle.process()
pumps application events. - Serial, Serial1, SPI and EEPROM global objects guaranteed to be initialized before use. (Prevents White breathing LED if Serial used in a global instance constructor.)
- Software Timers have an option for one-shot timers, and support class member function callbacks.
BUGFIXES
- RSA key generation would sometimes produce invalid keys. #779
- Static IP configuration was not being used.
- Interrupt on WKP with class method as an ISR #819
- Memory leak configuring WiFi credentials via SoftAP (TCP/HTTP)
- SPI DMA transfer callback invoked too early #791
- Unset
wiced_result_t
for tcp clients insocket_send
. #773 - Update bootloader to support
System.enterSafeMode()
. #751 - [threading]
WiFi.listen(false)
remains in listen mode. #743 - Factory Reset doesn't clear WiFi credentials until
network.connect()
. #736 - Comparison between
IPAddress
objects does not always work. #715 - P1 dfu-util 0.8 does not read/write from External Flash. #706
- DFU errors writing to flash silently ignored. #813
- [threading] heap allocation not thread-safe. #826
- System crash when button interrupt occurs during i2c transmission. #709
- [photon] 'analogWrite()` to DAC pins. #671
- [photon]
analogWrite()
to DAC pins requirespinMode()
each time. #662 - [photon]
System.sleep(pin,edge)
doesn't wake. #655
Updating System Firmware
To update the Core, compile and flash your application in the Web IDE, selecting version 0.4.7 in the devices drawer. Update instructions for Photon and P1 below.
The OTA method
For devices already online and connected to the cloud, the system firmware can be updated OTA using these commands:
If your device is online, you can attempt to OTA (Over The Air) update these system parts as well with the particle-cli:
Note: You must download system binaries to a local directory on your machine for this to work.
Photon:
particle flash YOUR_DEVICE_NAME system-part1-0.4.9-photon.bin
particle flash YOUR_DEVICE_NAME system-part2-0.4.9-photon.bin
P1:
particle flash YOUR_DEVICE_NAME system-part1-0.4.9-p1.bin
particle flash YOUR_DEVICE_NAME system-part2-0.4.9-p1.bin
The local EASY method using Particle CLI
This requires CLI version 1.8.12 or newer. You can check with particle --version
.
If you have the Particle CLI installed already, you can update it and then update your device with the following combined command. Make sure the device is in DFU mode and run:
sudo npm update -g particle-cli && particle update
(note: you can try without sudo first if you wish)
The local DFU-UTIL method
can be applied to offline devices locally over USB using dfu-util
- Put the device in DFU mode (flashing yellow LED)
- open a terminal window, change to the directory where you downloaded the files above, and run these commands:
Photon:
dfu-util -d 2b04:d006 -a 0 -s 0x8020000 -D system-part1-0.4.9-photon.bin
dfu-util -d 2b04:d006 -a 0 -s 0x8060000:leave -D system-part2-0.4.9-photon.bin
P1:
dfu-util -d 2b04:d008 -a 0 -s 0x8020000 -D system-part1-0.4.9-p1.bin
dfu-util -d 2b04:d008 -a 0 -s 0x8060000:leave -D system-part2-0.4.9-p1.bin
v0.4.8-rc.6 Firmware Release for Electron
Firmware Release
Download the attached system and tinker firmware that you'll flash to your Electron. Navigate to the folder where you downloaded the firmware files, put your Electron in DFU mode, and type (or copy/paste) the following dfu-util
commands to flash them each to your Electron:
dfu-util -d 2b04:d00a -a 0 -s 0x8020000 -D system-part1-v0.4.8-rc.6-electron.bin
dfu-util -d 2b04:d00a -a 0 -s 0x8040000 -D system-part2-v0.4.8-rc.6-electron.bin
dfu-util -d 2b04:d00a -a 0 -s 0x8080000:leave -D tinker-v0.4.8-rc.6-electron.bin
The electron should automatically reboot after the last command, start the process of connecting to a cellular network (make sure your SIM and battery are inserted!), and begin breathing cyan.
Debugging
Instructions on using the Tinker USB Debugging app are here
This is useful for simply capturing the Electron's connection process.
Instructions on using the Electron Troubleshooting app are here
This is useful for interacting with the Electron's connection process.
v0.4.8-rc.4 Firmware Release for Electron
Download the attached system and tinker firmware that you'll flash to your Electron. Navigate to the folder where you downloaded the firmware files, put your Electron in DFU mode, and type (or copy/paste) the following dfu-util
commands to flash them each to your Electron:
dfu-util -d 2b04:d00a -a 0 -s 0x8020000 -D system-part1-v0.4.8-rc.4-electron.bin
dfu-util -d 2b04:d00a -a 0 -s 0x8040000 -D system-part2-v0.4.8-rc.4-electron.bin
dfu-util -d 2b04:d00a -a 0 -s 0x8080000:leave -D tinker-v0.4.8-rc.4-electron.bin
The electron should automatically reboot after the last command, start the process of connecting to a cellular network (make sure your SIM and battery are inserted!), and begin breathing cyan.
v0.4.8-rc.3 Firmware Release for Electron
Download the attached system and tinker firmware that you'll flash to your Electron. Navigate to the folder where you downloaded the firmware files, put your Electron in DFU mode, and type (or copy/paste) the following dfu-util
commands to flash them each to your Electron:
dfu-util -d 2b04:d00a -a 0 -s 0x8020000 -D system-part1-v0.4.8-rc.3-electron.bin
dfu-util -d 2b04:d00a -a 0 -s 0x8040000 -D system-part2-v0.4.8-rc.3-electron.bin
dfu-util -d 2b04:d00a -a 0 -s 0x8080000:leave -D tinker-v0.4.8-rc.3-electron.bin
The electron should automatically reboot after the last command, start the process of connecting to a cellular network (make sure your SIM and battery are inserted!), and begin breathing cyan.
v0.4.8-rc.2 Firmware Release for Electron
Download the attached system and tinker firmware that you'll flash to your Electron. Navigate to the folder where you downloaded the firmware files, put your Electron in DFU mode, and type (or copy/paste) the following dfu-util
commands to flash them each to your Electron:
dfu-util -d 2b04:d00a -a 0 -s 0x8020000 -D system-part1-v0.4.8-rc.2-electron.bin
dfu-util -d 2b04:d00a -a 0 -s 0x8040000 -D system-part2-v0.4.8-rc.2-electron.bin
dfu-util -d 2b04:d00a -a 0 -s 0x8080000:leave -D tinker-v0.4.8-rc.2-electron.bin
The electron should automatically reboot after the last command, start the process of connecting to a cellular network (make sure your SIM and battery are inserted!), and begin breathing cyan.
Note: This release will attempt to use UDP sockets by default. The instructions for writing the UDP public server key to your device will be forthcoming, and your device will not connect to the Cloud until this is done.
v0.0.3-rc.3 Firmware Release for Electron
Download the attached system and tinker firmware that you'll flash to your Electron. Navigate to the folder where you downloaded the firmware files, put your Electron in DFU mode, and type (or copy/paste) the following dfu-util
commands to flash them each to your Electron:
dfu-util -d 2b04:d00a -a 0 -s 0x8020000 -D system-part1-v0.0.3-rc.3-electron.bin
dfu-util -d 2b04:d00a -a 0 -s 0x8040000 -D system-part2-v0.0.3-rc.3-electron.bin
dfu-util -d 2b04:d00a -a 0 -s 0x8080000:leave -D tinker-electron-v0.0.3-rc.3.bin
The electron should automatically reboot after the last command, start the process of connecting to a cellular network (make sure your SIM and battery are inserted!), and begin breathing cyan.
v0.0.3-rc.2 Firmware Release for Electron
Download the attached system and tinker firmware that you'll flash to your Electron. Navigate to the folder where you downloaded the firmware files, put your Electron in DFU mode, and type (or copy/paste) the following dfu-util
commands to flash them each to your Electron:
dfu-util -d 2b04:d00a -a 0 -s 0x8020000 -D system-part1-v0.0.3-rc.2-electron.bin
dfu-util -d 2b04:d00a -a 0 -s 0x8040000 -D system-part2-v0.0.3-rc.2-electron.bin
dfu-util -d 2b04:d00a -a 0 -s 0x8080000:leave -D tinker-electron-v0.0.3-rc.2.bin
The electron should automatically reboot after the last command, start the process of connecting to a cellular network (make sure your SIM and battery are inserted!), and begin breathing cyan.
v0.0.3-rc.1 Firmware Release for Electron
Download the attached system and tinker firmware that you'll flash to your Electron. Navigate to the folder where you downloaded the firmware files, put your Electron in DFU mode, and type (or copy/paste) the following dfu-util
commands to flash them each to your Electron:
dfu-util -d 2b04:d00a -a 0 -s 0x8020000 -D system-part1-v0.0.3-rc.1-electron.bin
dfu-util -d 2b04:d00a -a 0 -s 0x8040000 -D system-part2-v0.0.3-rc.1-electron.bin
dfu-util -d 2b04:d00a -a 0 -s 0x8080000:leave -D tinker-electron-v0.0.3-rc.1.bin
The electron should automatically reboot after the last command, start the process of connecting to a cellular network (make sure your SIM and battery are inserted!), and begin breathing cyan.