This is the same release that is deployed when building an app in the cloud.
External Antenna Users!
Please note that the default is now the ANT_INTERNAL antenna and the device will require specifically selecting the ANT_EXTERNAL antenna in firmware. This could result in devices becoming inaccessible after flashing this system firmware when they cannot use the internal antenna. To ensure a full update, flash your system binaries locally over USB with DFU-UTIL (see below) or for the EASY method using Particle CLI (see below)
Also add the following line to your application and flash it locally over USB to ensure the external antenna is used at boot time:
Updating System Firmware
For devices already online and connected to the cloud, the system firmware can be updated OTA using these commands:
The OTA method
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.
particle flash YOUR_DEVICE_NAME system-part1-0.4.4-photon.bin particle flash YOUR_DEVICE_NAME system-part2-0.4.4-photon.bin
particle flash YOUR_DEVICE_NAME system-part1-0.4.4-p1.bin particle flash YOUR_DEVICE_NAME system-part2-0.4.4-p1.bin
The local DFU-UTIL method
can be applied to offline devices locally over USB using
- 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:
dfu-util -d 2b04:d006 -a 0 -s 0x8020000 -D system-part1-0.4.4-photon.bin dfu-util -d 2b04:d006 -a 0 -s 0x8060000:leave -D system-part2-0.4.4-photon.bin
dfu-util -d 2b04:d008 -a 0 -s 0x8020000 -D system-part1-0.4.4-p1.bin dfu-util -d 2b04:d008 -a 0 -s 0x8060000:leave -D system-part2-0.4.4-p1.bin
The local EASY method using Particle CLI
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)
Changes since 0.4.3
- logging output documentation
- pressing 'v' in SoftAP mode displays the system version. FIRM-128
- P1: API (compatible with Core) to access the 1MByte external flash. #498
- Arduino compatibility macros for PROGMEM and more.
RGB.onChangehandler receives notification of the current LED color when it changes. Can be used to match an external LED to the onboard led. #518 Thanks to @monkbroc!
- Serial2 available on P1 and Photon (note: this also requires above RGB.onChange handler and two resistors would need to be removed on the Photon)
Spark.connected()et al. is now
Particle.connected(). The former
Sparklibrary is still available but is deprecated.
System.freeMemory()API to determine the amount of available RAM.
STARTUP()macro to define blocks of code that execute at startup.
- Retrieve the LED brightness via
- More prominent color change on the RGB LED when there is a cloud connection error.
- System.sleep() - 2nd parameter changed to
InterruptModefrom uint16_t to
ensure the correct types are used. #499
- Less aggressive exponential backoff when the re-establishing the cloud connection. [FIRM-177]
- I2C Wire.endTransmission() returns unique values and I2C docs updated
- Generate I2C STOP after slave addr NACK, I2C software reset all timeouts - commit
- Improved I2C Master receive method and implemented error handler - commit - commit
WiFi.selectAntenna()default antenna is now INTERNAL. Can be called at startup (before WiFi is initialized to select the desired antenna.
- [Regression] System connects WiFi when Spark.connect() is called after WiFi.on() #484
- Debug build now working.
- PWM issue fixed - 500Hz output on all channels #492
- Tone issue fixed on D2,D3,RX,TX #483
- SOS when registering more than 2 subscription handlers, and allow 4 subscription handlers to be successfully registered. #531
- SOS on TCPClient.connect() when DNS resolution failed or when connection fails #490
TCPClient::stop()does not work on first connection #536
TCPClient::connect()does not close an existing socket. #538
- TX/RX PWM randomly inverted #545
- UDP.begin/write return values #552