Skip to content

OTA State Machine

State Diagram

OTA State Machine — light OTA State Machine — dark

States

State Value Description
bootstrapping bootstrapping Initial state on startup. Resolves to the correct runtime state by reading the checkpoint file.
updated updated System is running the latest firmware. Normal idle state.
update_available update_available An update has been signalled via NotifyOTAUpdate.
downloading downloading The update artifact is being downloaded.
paused paused Download is paused. Resumed via ResumeOTADownload.
download_failed download_failed Download encountered an error.
update_ready update_ready Artifact downloaded and ready for installation.
updating updating The update is being installed.
update_failed update_failed Installation failed.
update_successful update_successful Update installed successfully. Terminal state.

Transitions

Trigger From To
notify updated, update_available update_available
download update_available, download_failed downloading
pause downloading paused
resume paused downloading
download_fail downloading download_failed
download_success downloading update_ready
install update_ready, update_failed updating
update_fail updating update_failed
update_success updating update_successful
abort download_failed, update_failed update_available
clear update_available updated
cancel downloading, paused, update_ready update_available
reset Any (except update_successful) bootstrapping

Bootstrap Transitions (startup recovery)

Trigger From To
detect_up_to_date bootstrapping updated
detect_update_available bootstrapping update_available
detect_download_paused bootstrapping paused
detect_update_ready bootstrapping update_ready
detect_download_error bootstrapping download_failed
detect_update_error bootstrapping update_failed

Error Recovery Paths

Failure Correct recovery command
Download failed AbortOTAUpdate → returns to update_available
Installation failed AbortOTAUpdate → returns to update_available
Cancel in-progress download CancelOTAUpdate → returns to update_available
Full reset ResetOTAState → returns to bootstrapping → resolves to updated