Method to downgrade firmware

Is there a method to downgrade firmware on a device? All I can find information on is to update to a ‘later’ revision but I want to test an older revision. How can I do this?

I’m going to assume you are asking about over-the-air (OTA) firmware updates. Yes, you can downgrade, which we usually refer to as “roll back”.

For a simple illustration, let’s assume you have three artifacts, each of which as a release that is rolled out:

  • v0.0.1
  • v0.0.2
  • v0.0.3

Your device should at this point be running v0.0.3 because it is the most recent version. If you go to the Releases part of the Firmware Update menu in the Golioth Console, you can uncheck the Roll Out option for v0.0.3 and your device should immediately begin downloading v0.0.2

There is one caveat to this: The Golioth servers use the sequence number to decide what is “newest”. This is different from the version number (which is what the device MCUboot uses to verify). So make sure you upload your version number in order so that the sequence numbers assigned to them are ascending.

In this image, the Rollout button is shown to the right, artifact name and version in the center, and sequence number on the left.

Yes. I’m talking about OTA.
Wow. I didn’t realize it would revert to older firmware if a newer version is turned off. I’ll have to be careful not to do that by accident.
It’s also not documented that Golioth uses the sequence numbers instead of the artifact\version number which may explain another issue I have been having.
Golioth should update the documentation to explain this better.
It seems to work with one quick test. Thanks!!