IoT Over-the-Air Updates
IoT over-the-air updates deliver new firmware or software to deployed devices through a network. A safe update system verifies each release, installs it without destroying the last working version, and reports whether the fleet accepted or rejected it.
itComputer architecture and hardware | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic: IoT Over-the-Air Updates
An over-the-air update is remote code replacement for a deployed device. It is not a larger download button. The device may be a tiny controller, a Linux box, or a container host, but the awkward part is the same: new software arrives through a network and then has to earn the right to take over.
The useful mental picture is a chain of custody. A release pipeline produces bytes. A signing authority approves an artifact, the firmware, image, application, or component being changed. An update service offers it to selected devices. The device checks a signed manifest, which describes what is authorized and what it applies to, then stages the candidate and lets the bootloader try it. The network carries the package; it does not magically make the package trustworthy. Networks have enough ambitions already.
The surprise is that a valid signature settles only authorization. It does not mean that a release fits every hardware revision, component, current version, or security level. Nor does it mean the device works after booting. That is why the path has named states: offered, downloaded, verified, staged, trial, confirmed, rejected, reverted, and unreachable. Each state answers a different question, which is inconvenient only until a release fails.
Recovery is the other half of the job. With an A/B update, a candidate goes into an inactive slot while the old image stays available. A health contract checks the functions that matter before confirmation. If the candidate fails or resets first, the bootloader can return to the previous image. Failure rollback handles bad new code. Security anti-rollback refuses old code that policy no longer permits. Similar names, profoundly different excuses for trouble.
Storage patterns change the bargain. Full images buy a known complete state but need bandwidth and staging room. Components save transfer work but bring dependencies and installation order. Deltas save more transfer work but need the exact base and a verified reconstructed target. Persistent configuration and data can outlive either code slot, so code recovery is not automatically data recovery.
Finally, an update reaches a fleet through rollout rings: lab, internal devices, representative canaries, then wider cohorts. A small percentage is not representative if it misses a rare board or network condition. Track the path and the failure reason. A device that goes quiet after activation is unknown, not a gold star.
Read the Intro for the complete architecture and failure behavior. Use Slides for the control path and decision map. Keep the Cheatsheet nearby when comparing storage, trust, rollout, and diagnostic signals. The Practice Reference supplies lab commands for hashes, signatures, RAUC bundles, and slot state.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://www.rfc-editor.org/rfc/rfc9019
Supports
- OTA stakeholders, device functions, manifest protection, transport independence, constrained-network considerations, update and recovery architecture
- Intro, slides, cheatsheet, quiz, links, narration, infographic source material, and 2021 timeline event
- https://www.rfc-editor.org/rfc/rfc9124
Supports
- Manifest components, identifiers, dependencies, payload digests, conditions, directives, sequencing, applicability, and threat motivations
- Intro, slides, cheatsheet, quiz, links, narration, infographic source material, and 2022 timeline event
- https://theupdateframework.io/docs/metadata/
Supports
- Root, Targets, Snapshot, Timestamp, delegated roles, hashes, sizes, expiry, thresholds, consistent repository views, and stale-state detection
- Signing model in intro, slides, cheatsheet, quiz, links, and narration
- https://theupdateframework.io/papers/survivable-key-compromise-ccs2010.pdf
Supports
- Initial TUF role separation and compromise-resilient update-system design
- The 2010 timeline event
- https://csrc.nist.gov/pubs/ir/8259/a/final
Supports
- IoT cybersecurity capability core baseline and secure software update capability
- Reference rationale and the 2020 timeline event
- https://docs.mcuboot.com/design.html
Supports
- Primary and secondary slots, reset-tolerant swapping, test and permanent activation, confirmation, and reversion
- Storage, state-machine, failure, quiz, and reference claims
- https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/system/ota.html
Supports
- OTA data, inactive partitions, pending verification, confirmation, invalid and aborted states, automatic rollback, and anti-rollback security versions
- Intro, cheatsheet, quiz, links, and narration
- https://rauc.io/
Supports
- Signed bundles, A/B full-system updates, recovery support, embedded Linux placement, and licensing
- Intro, quiz, and RAUC landscape context
- https://rauc.readthedocs.io/en/latest/using.html
Supports
- Bundle creation, key and certificate arguments, authenticated info, install, slot status, and good, bad, and active marks
- Practice commands and reference rationale
- https://docs.openssl.org/3.5/man1/openssl-dgst/
Supports
- SHA-256 digest, detached signing, and signature verification command syntax
- Practice reference
- https://www.gnu.org/software/coreutils/manual/html_node/sha2-utilities.html
Supports
- sha256sum digest generation and check behavior
- Practice reference
- https://uptane.org/docs/standard/uptane-standard
Supports
- TUF-derived vehicle update roles, multiple electronic control units, delegated metadata, and compromise recovery
- Reference rationale
- https://uptane.org/learn-more/history
Supports
- TUF introduction, 2013 adaptations, 2015 grants, 2016 Uptane start, and 2019 Standard 1.0
- Timeline events
- https://uptane.org/docs/latest/all-versions
Supports
- Official Uptane Standard version archive and release history
- The 2019 timeline event
- https://android-developers.googleblog.com/2016/05/whats-new-in-android-n-release-virtual-reality-android-studio.html
Supports
- May 2016 announcement of background seamless updates and switching to a prepared system image
- The 2016 timeline event
- https://datatracker.ietf.org/doc/charter-ietf-suit/history/
Supports
- December 2017 IETF approval of the SUIT working group charter and its architecture and manifest work
- The 2017 timeline event
- https://www.rfc-editor.org/rfc/rfc8240
Supports
- IoT Software Update Workshop requirements and issues preceding SUIT standards work
- The 2018 timeline event
- https://docs.memfault.com/docs/platform/ota
Supports
- Cohorts, normal activation, staged rollout activation, release applicability, and endpoint choices
- Rollout quiz and Memfault landscape entry
- https://memfault.com/ota-firmware-updates/
Supports
- OTA plus device diagnostics across microcontroller, Linux, and Android device classes
- Memfault landscape entry
- https://mender.io/
Supports
- Fleet update infrastructure, full-image and component updates, Linux and real-time operating system scope, open-source core, and hosted options
- Mender landscape entry
- https://mender.io/engineers/how-mender-works
Supports
- Mender server and client roles plus inactive A/B root file-system installation
- Mender landscape description
- https://docs.golioth.io/device-management/ota/
Supports
- OTA package and deployment management, multipart bundles, component diversity, API, console, and command-line access
- Golioth landscape entry
- https://docs.aws.amazon.com/iot-device-management/
Supports
- Device inventory, thing groups, jobs, fleet management, and remote OTA software updates
- Reference rationale and AWS landscape entry
- https://learn.microsoft.com/en-us/rest/api/deviceupdate/
Supports
- Azure Device Update publishing, distribution, management, grouping, gradual rollout, reporting, and IoT Hub integration
- Azure landscape entry
- https://learn.microsoft.com/en-us/azure/iot-hub-device-update/device-update-security
Supports
- Signed update manifests, trusted and unmodified content checks, and device-agent security handoffs
- Azure landscape description
- https://learn.microsoft.com/en-us/azure/iot-hub-device-update/deploy-update
Supports
- Device groups, scheduled deployments, compliance, and command-line deployment workflow
- Rollout quiz
- https://www.particle.io/pricing/
Supports
- Particle plan availability, integrated OTA software updates, connectivity, releases, and fleet management
- Particle landscape licensing and pricing placement
- https://docs.particle.io/reference/cloud-apis/firmware-update-events/
Supports
- Product firmware creation and release events plus device OTA update status sequence
- Particle landscape description
- https://docs.balena.io/learn/deploy/deployment
Supports
- Fleet releases containing one or more container images, build and deploy paths, update strategies, and device adoption
- Awesome link rationale and balenaCloud landscape entry
- https://open-balena-docs.balena.io/
Supports
- OpenBalena AGPL licensing, shared balenaCloud concepts, self-hosting, and differences from the hosted service
- balenaCloud open-core placement
- https://projects.eclipse.org/projects/iot.hawkbit
Supports
- Open-source repository and rollout management for constrained devices, controllers, and gateways
- Eclipse hawkBit landscape entry
- https://swupdate.org/
Supports
- SWUpdate embedded Linux agent, local and remote update interfaces, and hawkBit backend connection
- Eclipse hawkBit landscape placement
- https://github.com/sindresorhus/awesome
Supports
- Discovery path to the Awesome IoT and Hybrid Apps list
- https://github.com/weblancaster/awesome-IoT-hybrid
Supports
- Discovery of Particle, balenaOS, and balenaCloud for Awesome Links curation
- https://docs.particle.io/getting-started/cloud/ota-updates/
Supports
- Device OS and product firmware OTA paths for individual Particle devices and fleets
- Particle awesome-link rationale
