Stuck in automatic update OTA loop

I’m having an issue with the automatic update Product tool. When updating a fleet of devices some of them will get stuck in an automatic update loop, as shown in the screenshot below.

In the screenshot you can see my device tries to update 4 times before I stop it by putting it in Development Mode. You can see in the screenshot that device OS is sending a version 3500 to the cloud (which is causing this automatic update to start) but my user application firmware also sends the version to the cloud, version 3501, which is the correct version.

If I put the device in development mode and wait 5 minutes to 5 days, the cloud will recognize my device is on the newer firmware, then I can take it out of development mode.

I’ve dealt with Particle support on the issue, and their response is to power cycle the device. Power cycling the device works, but isn’t really an option for remote devices. For remote devices I just leave them in development mode for a week, then move them back later.

I see this on around 5% of my devices in the field. So if I update 200 devices, I’ll have between 5 and 15 that I have to put in development mode. Not a huge problem, but definitely annoying to set myself a reminder to move a device back and forth between development mode.

I’m posting this to see if anyone else has the same issue and if anyone has a better way to solve the problem. I’m considering implement a method to power cycle devices remotely.

Other info – this has happened to me for about a year. I’ve experienced it on 0.6.1 + Electron all the way to 1.1.0rc-2 Boron.

On full handshake Device-OS notifies the cloud on the current firmware version. A full handshake is performed on power-cycle (hence the workaround from support) but also should occur after any firmware update.

Something might be going wrong with the notification and power-cycle is one workaround to unconditionally trigger a full handshake with new notification.


So what can we do? I’m not sure if the second part of your comment is pointing me towards a solution?

To force a handshake, I’ve tried the command below, but that also doesn’t resolve.

curl --request PUT \
  --url '{ id }/disconnect?access_token={ token }'

Odd, I actually would have expected the “disconnect” API to workaround the issue similarly to the full power-cycle. I’ve notified internally regarding the issue but nothing to report yet (especially being the weekend and all). Any chance you can PM me one of the affected Device IDs?

I’ve also come across this issue. They only way I was able to resolve the issue is to downgrade the firmware to a prior version that is registered on the console for the device. So my device got stuck in version 4417 with repeated auto updating. I had to flash OTA version 4416, then I was able to flash back upto version 4419 (latest release). Then the auto looping updates stopped.

Any resolution to this one? I am experiencing the same issue as described above. I am however using firmware 1.2.1-rc.3.