3

When one designs software for remote devices and IoT, one has to consider how the system manages various failures, be it software or hardware.

If the system recognizes a SW bug, it may notify the cloud and revert to a boot loader. If the system recognizes a HW peripheral issue, it may stop using it and notify the cloud. If the system happens into a fault where it must question its own sanity - let's say, when the NVM is unreliable, it may require a complete shutdown.

This is a very big and important issue, on which the rest of the SW should be built.

I believe this issue to be common enough for guidelines, tutorials and literature to be written about, so we don't have to reinvent it on our own in each of our individual projects.

I would like to know if there is recommended literature, tutorials or guidelines for designing remote device software for robustness, especially regarding image updates.

Edit: The focus here is not on error detection, but on how to design a sandbox, in which errors and faults can be treated safely in an IoT device environment.

  • Yes, this is a valid opinion, but I don't see an answerable question that would suit the site. Reliability, error detection and tracking are huge (in automotive and server), fail-safe firmware update is quite a seperate subject - but as always the advice is never roll your own, someone else understands the stack better than you. You are better off focusing on your product specifics. – Sean Houlihane Apr 10 '19 at 9:32
  • Error detection is not the issue - it's specifically how to deal with them, that is - how to design a sandbox that allows for safe fallbacks in an IoT device? – Ilans Apr 10 '19 at 12:37
  • Your question is not clear. 'how to design a sandbox' is best answered by 'just pay someone else' – Sean Houlihane Apr 10 '19 at 13:03
3

I have a question about FOTA which got no reply. So I researched & posted my own answer, so that you don't have to reinvent the wheel.

You can either use RUAC which looks to be so good that it might be overkill, or you could work your way through (the most recommended) FOTA on GitHub.

If you don't choose one, there is enough FOSS there that you can read the documentation & code to get a feel for how others do it, and establish your own guidelines.

Please, if you find anything better, post it here, to help others. In fact, whatever you choose, please post it here. Thanks

| improve this answer | |
  • 1
    Thanks! Now checking it out. – Ilans Apr 12 '19 at 18:10
  • Great ! Please don't forget to tell us what solution you go for - especially if you find something new, in which case, feel free to post & accept your own answer, which will help others (including me ;-) – Mawg says reinstate Monica Apr 12 '19 at 18:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.