Migrating OTA updates

Hi,

My company has a product that recently started experiencing issues with the OTA update feature. It looks like Particle is moving towards Intellegent Firmware Releases, but only to Enterprise-level customers. As a non-Enterprise level customer this has broken the OTA update method we have relied on. I’m hoping that someone can help me troubleshoot a transition plan to provide OTA updates to our customers

What we have been doing:

  • Running Device OS v1.4.4
  • A user interacts with our iot product to select an “Update Firmware” option. When they select this, the following is run to allow the device to accept updates and trigger a handshake event.
System.enableUpdates();
System.enableReset();
Particle.publish("spark/device/session/end", "");
System.enterSafeMode();

What we have tried
This no longer works, so we’re trying to update a particle device from our custom web app. This guide indicates that it is possible to flash firmware binaries from the Cloud API (but only for Development devices?).

$ curl -X PUT "https://api.particle.io/v1/devices/0123456789abcdef01234567?access_token=1234" \
       -F file=@my-firmware-app.bin \
       -F file_type=binary

I can’t get this to work, even for flagged Development devices. I get a cryptic "{\"error\":\"Nothing to do?\"}" response. I expand on this in this post

What am I missing? Is there an easier way to approach this migration?

1 Like

To put the above more simply, how can I trigger a customer’s device (while it is running) to end session to reconnect and receive firmware update events?