Invoke firmware update from remote server

Hi,

is it possible to update the Photon firmware from a remote firmware source (e.g. https server)?

Something like this? Try logging in with a Photon connected, and you should see some update buttons.
Also, this: https://docs.particle.io/reference/api/#update-a-device
And this: https://docs.particle.io/reference/javascript/#flashing (the first link uses this).

1 Like

Thanks @Moors7. Actually I was more thinking about something in the firmware. But the Cloud API will be okay too :slight_smile:

After trying and asking around a bit, it seems that that API endpoint doesn’t actually allow you to trigger a firmware update, but rather allows you to update the device attributes.
That said, the first link, which uses the third link (javascript API), should work. That in turn uses this: https://docs.particle.io/reference/api/#flash-a-device-with-a-pre-compiled-binary
The main difference is that you’ll have to find a place to host those pre-compiled binaries, until an actual update endpoint becomes available.

Hi @alterschw3de,

Right now the only ways to transfer firmware are via the encrypted cloud connection, or locally. This is to help prevent unwanted firmware from being sent to the device. You can trigger a cloud Over The Air firmware update using the API. We’ve been talking about letting the device “request firmware”, so maybe that would cover this case. Can you talk more about what you had in mind?

Thanks!
David

2 Likes

Thanks @Dave for chipping in! I’m currently in the process of connection IBM IoT Foundation with Particle Devices. IoT Foundation supports several commands for managed devices and I would like to be able to invoke such commands (e.g. firmware update). Currently my approach is to basically connect IoT Foundation with the Particle Cloud (e.g. for SSE). But I would also like to implement as many functions as possible without the need for both Cloud tools.

Which is why I’m looking for a firmware feature which basically let’s me download a firmware.bin from a remote source (preferable is an HTTPS server), cross check the firmware’s signature and flash it onto the device. So basically the lifecycle would be like this:
Invoke firmware update => send command to Photon => receive command => (evaluate origin) => download firmware (securely) => check signature => flash firmware => send back success message.