Skip to content

Releases: particle-iot/device-os

0.4.6 Firmware Release for Core, Photon and P1

01 Oct 18:26
Compare
Choose a tag to compare

Updating System Firmware

To update the core, please compile and flash your application in the Web IDE, selecting version 0.4.6 in the devices drawer. Update instructions for Photon and P1 below.

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.

Photon:

particle flash YOUR_DEVICE_NAME  system-part1-0.4.6-photon.bin
particle flash YOUR_DEVICE_NAME  system-part2-0.4.6-photon.bin

P1:

particle flash YOUR_DEVICE_NAME  system-part1-0.4.6-p1.bin
particle flash YOUR_DEVICE_NAME  system-part2-0.4.6-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)

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.6-photon.bin
dfu-util -d 2b04:d006 -a 0 -s 0x8060000:leave -D system-part2-0.4.6-photon.bin

P1:

dfu-util -d 2b04:d008 -a 0 -s 0x8020000 -D system-part1-0.4.6-p1.bin
dfu-util -d 2b04:d008 -a 0 -s 0x8060000:leave -D system-part2-0.4.6-p1.bin

Changes since 0.4.5

FEATURES

ENHANCEMENTS

  • [photon] WiFi.selectAntenna() setting is persistent, so the last selected antenna is used when the
    device is in safe mode. [#618]
  • Detect when the cloud hasn't been serviced for 15s and disconnect, so device LED state accurately
    reflects the connection state when the application loop has stalled. #626
  • Compile-time checks for Particle.variable() #619
  • [photon] Increased retry count when connecting to WiFi. #620
  • Setup button events #611

BUGFIXES

  • UDP.receivePacket() would fail if UDP.setBuffer() hadn't been called first. Thanks @r2jitu.
  • [photon] Default SS pin for SPI1 now set to D5. #623
  • [photon] Long delay entering listening mode. #566
  • [photon] Solid green LED when WiFi network cannot be connected to due to invalid key. (The LED now blinks.)
  • [photon] Storing more than 2 Wi-Fi credentials would sometimes give unpredictable results.
  • [photon] TX/RX pins did not work after entering listening mode. #632
  • [photon] Improvements to I2C for MCP23017 / Adafruit RGBLCDShield. #626
  • [photon] Incorrect wakeup time set for sleep. #653

Bootloader update for P1

26 Sep 06:56
Compare
Choose a tag to compare
Pre-release

This bootloader update addresses a problem where P1 devices do not remain in DFU mode and or disconnect from the host computer.

To apply the update, connect your device to the Cloud and use Particle CLI to flash the bootloader Over-the-Air:

particle flash <device-name> bootloader-v0.4.6-rc.1-p1.bin

0.4.5 Release for Photon and P1

12 Sep 02:25
Compare
Choose a tag to compare

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.

Photon:

particle flash YOUR_DEVICE_NAME  system-part1-0.4.5-photon.bin
particle flash YOUR_DEVICE_NAME  system-part2-0.4.5-photon.bin

P1:

particle flash YOUR_DEVICE_NAME  system-part1-0.4.5-p1.bin
particle flash YOUR_DEVICE_NAME  system-part2-0.4.5-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)

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.5-photon.bin
dfu-util -d 2b04:d006 -a 0 -s 0x8060000:leave -D system-part2-0.4.5-photon.bin

P1:

dfu-util -d 2b04:d008 -a 0 -s 0x8020000 -D system-part1-0.4.5-p1.bin
dfu-util -d 2b04:d008 -a 0 -s 0x8060000:leave -D system-part2-0.4.5-p1.bin

Changes since 0.4.4

FEATURES

  • SPI.setClockDividerReference, SPI.setClockSpeed to set clock speed in a more portable manner. #454
  • WiFi.scan function to retrieve details of local access points. #567
  • UDP.sendPacket/UDP.receivePacket to send/receive a packet directly to an application-supplied buffer. #452
  • Static IP Support [photon] - #451
  • [photon] UDP multicast support via UDP.joinMulticast/UDP.leaveMulticast. Many thanks @stevie67!
  • waitFor(WiFi.ready) syntax to make it easier to wait for system events. #415
  • Flexible time output with Time.format() #572

ENHANCEMENTS

  • Recipes and Tips section in the build documentation.
  • Particle.function, Particle.subscribe and attachInterrupt can take a C++ method and instance pointer. #534 Thanks to @monkbroc!
  • UDP.setBuffer to set the buffer a UDP instance uses for read/write. #224 and #452
  • WiFi.setCredentials() can take a Cipher type to allow full specification of an AP's credentials. #574
  • TCPClient (from TCPServer) reports remote IP address. #551
  • Configurable format in Time.timeStr(), including ISO 8601. #455
  • Servo.trim(adjust) to allow small adjustments to the stationary point. #120
  • Time set from the cloud accounts for network latency. #581
  • String(Printable) constructor so any Printable can be converted to a string. example
  • Fluent API on String - many methods return *this so method calls can be chained.
  • Small values passed to delay(1) result in more accurate delays. #260
  • Bootloader does not show factory reset modes if a factory reset image is not available. #557

BUGFIXES

  • Listening mode re-enters listening mode after credentials are given. #558
  • String function dtoa() has problems with larger numbers. #563
  • System doesn't set color of RGB LED when RGB.control(true) is called. #362, #472 and #544
  • WiFi.SSID() may not return previous network when switching. #560
  • [photon] System.sleep(5) not turning Wi-Fi back on after 5 seconds. #480
  • regression: floating point support in sprintf not compiled in. #576
  • [photon] SPI1 default clock speed was 7.5MHz, changed to 15MHz, same as for SPI.
  • TCPClient::connected() doesn't detect when the socket is closed #542
  • dfu-util: error during downlod get_status msg removed when using :leave option #599
  • [Core] A0 could not be used as an output #595
  • Reinstate CFOD handling on the Photon.

Electron 0.0.1-rc.3

11 Sep 21:37
Compare
Choose a tag to compare
Electron 0.0.1-rc.3 Pre-release
Pre-release

Initial release for Electron beta backers

0.4.4 Release for Photon and P1

20 Aug 16:56
Compare
Choose a tag to compare

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:
STARTUP(WiFi.selectAntenna(ANT_EXTERNAL));

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.

Photon:

particle flash YOUR_DEVICE_NAME  system-part1-0.4.4-photon.bin
particle flash YOUR_DEVICE_NAME  system-part2-0.4.4-photon.bin

P1:

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 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.4-photon.bin
dfu-util -d 2b04:d006 -a 0 -s 0x8060000:leave -D system-part2-0.4.4-photon.bin

P1:

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

FEATURES

  • 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.onChange handler 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 Spark library 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.

ENHANCEMENTS

  • Retrieve the LED brightness via RGB.brightness()
  • More prominent color change on the RGB LED when there is a cloud connection error.
  • System.sleep() - 2nd parameter changed to InterruptMode from 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.

BUGFIXES

  • [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

0.4.3 release for Photon/P1

14 Jul 17:59
Compare
Choose a tag to compare

Updating System Firmware

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 update these system parts as well with the particle-cli:

photon:

particle flash YOUR_DEVICE_NAME  system-part1-0.4.3-photon.bin
particle flash YOUR_DEVICE_NAME  system-part2-0.4.3-photon.bin

P1:

photon:

particle flash YOUR_DEVICE_NAME  system-part1-0.4.3-p1.bin
particle flash YOUR_DEVICE_NAME  system-part2-0.4.3-p1.bin

The updates can also be applied to offline devices 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.3-photon.bin
dfu-util -d 2b04:d006 -a 0 -s 0x8060000:leave -D system-part2-0.4.3-photon.bin

P1:

dfu-util -d 2b04:d008 -a 0 -s 0x8020000 -D system-part1-0.4.3-p1.bin
dfu-util -d 2b04:d008 -a 0 -s 0x8060000:leave -D system-part2-0.4.3-p1.bin

Changes

FEATURES

  • Half-duplex mode on Serial1 via Serial1.halfdupliex(). Thanks to @prices.
  • WiFi.connect(WIFI_CONNECT_SKIP_LISTEN) allows application firmware to skip listen mode when there is no credentials.
  • System events

ENHANCEMENTS

  • I2C methods now use micros() for timeouts rather than millis(), so I2C functions can be used in an interrupt handler. #460
  • WiFi.listen(false) to programmatically exit WiFi listening mode.
  • make is verbose by default. To silence, add -s to the command line.
  • WiFi.connect(WIFI_CONNECT_SKIP_LISTEN) starts connection but does not enter listening mode if no credentials are found.
  • Setup/Mode button now starts listening mode when WiFi is off.
  • WiFi.listen(false) can be used to exit listening mode (from an interrupt.)
  • LED flashes high-speed green when requesting an IP address via DHCP.

BUGFIXES

  • [Photon/TCPServer] - TCPClient.connected() was not returning false when the socket was asynchronously disconnected.
  • Fix time being reset on wakeup. (removed WICED RTC init code that resets to default preset time in platform_mcu_powersave_init() within photon-wiced repo.) #440
  • TCPClient.connected() was not returning false when the socket was disconnected from the other end.
  • strdup() was returning garbage #457
  • attachInterrupt() should work on all interrupt pins now except D0 & A5. Please note there are shared lines as per the following issue comment : #443
  • I2C bus lockup when no slave devices are present by issuing a STOP condition after sLave send address fails.
  • spark/ events not propagated to application handlers. #481
  • sprintf calls not linking correctly. #471
  • Photon/P1 sometimes did not start without hitting reset after a cold boot.
  • Disable LTO compile for user firmware since it causes linking problems (see sprintf above.)

Unlocker (P1)

  • unlocker-p1.bin - For the P1 PLATFORM ONLY! (For photon, see the 0.4.1 release.) This is used to remove write protect bits on flash pages so devices can be returned to factory condition and updated using JTAG. This is not necessary when using DFU to update system firmware. To apply, download the file then run dfu-util -d 2b04:d008 -a 0 -s 0x8020000:leave -D unlocker-p1.bin. The unlocking happens automatically - the LED will be yellow during unlocking, then green when unlocking is complete.

0.4.2 Release for Photon

08 Jun 19:39
Compare
Choose a tag to compare

This release contains a fix for device configuration becoming unwritable, causing new Wi-FI settings to not be remembered.

Steps to Apply this release

  • download system-part1-0.4.2-photon.bin and system-part2-0.4.2-photon.bin
  • First put the device in DFU mode
  • 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.2-photon.bin
dfu-util -d 2b04:d006 -a 0 -s 0x8060000:leave -D system-part2-0.4.2-photon.bin

Changes

FEATURES

  • EEPROM storage of custom data types via EEPROM.put() and `EEPROM.get()'
  • When the device is in safe mode, the LED breathes magenta
  • attachSystemInterrupt() allows hooking key system interrupts in user code.
  • DMA-driven SPI master
  • UDP.sendPacket() method avoids buffering data when the user can supply the entire buffer at once.
  • [Photon] SoftAP setup can be done over HTTP
  • platform-neutral fast pin access 449
  • [P1] Serial2 support

ENHANCEMENTS

  • [Photon] The system firmware updates the bootloader to latest version
  • [Photon] The system write protects the bootloader region.
  • UDP uses dynamically allocated buffers
  • PRODUCT_ID and PRODUCT_VERSION place these details at a known place in the firmware image
  • DFU mode and serial firmware update can be triggered by setting the line rate.

BUGFIXES

  • Serial1.end() hangs the system
  • Malformed CoAP acknowledgement message in cloud protocol.
  • SPARK_WLAN_Loop() was not linked. (Workaround was to use Spark.process())
  • UDP doesn't send anything to the device until UDP.write() #407
  • Divide by zero now caught and causes a SOS.
  • Floating-point support for sprintf() reinstated
  • Fixed WICED DCT becoming unmodifiable
  • Fix UDP.parsePacket() not receiving any data on the Photon #468

modular photon firmware - 0.4.1

26 May 07:11
Compare
Choose a tag to compare

This is the released v1 modular firmware that you can flash to devices to reset to factory default.

The firmware update can be applied OTA or via DFU.

OTA with the particle-cli

Here's the steps to flash using particle-cli

  • download system-part1.bin and system-part2.bin
  • put the device (the photon) in safe mode: hold setup, then tap reset, and release setup when the LED blinks magenta
  • the device will connect to the cloud, and flash cyan
  • run particle flash <photonid> system-part1.bin
  • when the device reboots, put the device again in safe mode
  • run particle flash <photonid> system-part2.bin

Flashing locally with DFU

It's also possible to flash the firmware update using DFU:

  • download system_pad_BM-09.bin
  • put your photon in DFU mode - hold setup, tap reset, and release setup when the LED blinks yellow.
  • run dfu-util -d 2b04:d006 -a 0 -s 0x8020000:leave -D system_pad_BM-09.bin
  • An additional optional step is resetting the current firmware and factory backup to tinker. This is done by flashing
    • tinker.bin to the user firmware location: dfu-util -d 2b04:d006 -a 0 -s 0x80A0000 -D tinker.bin
    • tinker.bin to the factory reset location: dfu-util -d 2b04:d006 -a 0 -s 0x80E0000 -D tinker.bin

Spark firmware v0.3.4

22 Oct 01:04
Compare
Choose a tag to compare

v0.3.4

FEATURES

ENHANCEMENTS

  • Wiring: More efficient and reliable print(String) (fix issue #281) #305
  • DFU: Add DFU suffix to .bin file #323

BUGFIXES

  • I2C: Use I2C polling mode by default #322
  • Listening Mode: Fix hard fault when Wi-Fi is off #320
  • LED Interaction: Fix breathing blue that should be blinking green #315

Spark firmware v0.3.3

10 Sep 00:01
Compare
Choose a tag to compare

Changes

New CHANGELOG.md!

FEATURES

  • Cloud: Secure random seed. When the spark does a handshake with the cloud, it receives a random number that is set as a seed for rand()
  • Wiring: Arduino-compatible random() and randomSeed() functions. #289
  • Wiring: Arduino-compatible functions like isALpha() and toLowerCase(). #293

ENHANCEMENTS

  • Wire: added missing Slave mode using DMA/Interrupts and updated Master mode using DMA. New APIs Wire.setSpeed() and Wire.strechClock(). #284
  • Sleep: Spark.sleep() supports wakeup on pin change. #265

BUGFIXES

  • RGB: calling RGB.brightness() doesn't change the LED brightness immediately #261
  • Wiring: pinMode() INPUT and OUTPUT constants had reversed values compared to Arduino. #282
  • Wiring: compiler error using HEX with String. #210
  • System Mode: MANUAL mode breaks OTA udpate #294