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
Intro
IoT Over-the-Air Updates
An Internet of Things over-the-air update replaces firmware, an operating-system image, an application, or another device component through a network connection. The device does not need a technician to attach a cable or replace storage. That convenience creates a demanding systems problem: the update path can change the code that controls every deployed device.
A dependable OTA system therefore does more than download a file. It establishes which release is authorized, proves that the bytes were not changed, checks that the release applies to the device, preserves a recoverable boot path, activates the candidate, evaluates device health, and reports the result. Fleet controls then decide which devices receive the release and how quickly rollout expands.
The update system
A practical OTA architecture contains six roles:
- The release pipeline builds a reproducible firmware or software artifact.
- A signing authority authorizes metadata or the artifact with a protected private key.
- An update service stores releases, selects target devices, and records deployment state.
- A distribution path carries metadata and payloads over HTTP, CoAP, MQTT, a gateway, local media, or another transport.
- An update agent on the device verifies policy and writes the candidate into a staging area or inactive slot.
- A bootloader and health check activate the candidate, confirm healthy operation, or return to the last working image.
source → build → signed manifest + payload → update service
│
cohort and rollout policy
│
▼
device report ◄── health check ◄── bootloader ◄── update agent
│ │
└──────── deployment status ──────────────────┘
The IETF Software Updates for Internet of Things architecture separates authorization from transport. A manifest carries information about the update and protects it end to end. TLS still matters because it protects a network session and can authenticate a server, but transport security alone cannot prove that a cached file, gateway-forwarded image, or broadcast payload is an authorized release.
The device-side state machine
The safest way to reason about an update is as a state machine rather than one install command.
idle → offered → downloading → verified → staged → trial boot
▲ │ │ │ │ │
└─ reject ┴── retry ──┴── reject ─┴────────┴── revert ┘
│
▼
confirmed
Continue the course
This section is part of the paid course.
See pricing to subscribe, or log in if you already have access.
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
