+---------+ +-----------------+ +-----------------------------+ | Status | | Firmware Server | | +------------+ +----------+ | | Tracker | | Status Tracker | | | Firmware | |Bootloader| | | Server | | Server | | | Consumer | | | | +---------+ +-----------------+ | | +Status | +----------+ | | | | | Tracker | | | | | | | Client | | | | | | +------------+ | | | | | | IoT Device | | | | `'''''''''''''''''''''''''''' | | | | | Query Firmware Version | | |------------------------------------->| | | Firmware Version A.B.C | | |<-------------------------------------| | | | | | | <> | | | | | | _,...._ _,...._ | | ,' `. ,' `. | | | New | | New | | | \ Manifest / \ Firmware / | | `.._ _,,' `.._ _,,' | | `'' `'' | | | Push manifest | | |----------------+-------------------->| | | | | | | ' | ' | | | Validate | | | | Manifest | | | |---------+ | | | | | | | | |<--------+ | | | Request firmware | | | | X.Y.Z | | | |<--------------------| | | | | | | | Firmware X.Y.Z | | | |-------------------->| | | | | | | | | Verify | | | | Firmware | | | |--------------+ | | | | | | | | |<-------------+ | | | | | | | | Store | | | | Firmware | | | |-------------+ | | | | | | | | |<------------+ | | | | | | | | | | | | Trigger Reboot | | | |--------------->| | | | | | | | | | | | __..-------..._' | | ,-' `-. | | | Secure Boot | | | `-. _/ | | |`--..._____,,.,-' | | | | | Device running firmware X.Y.Z | | |<-------------------------------------| | | | | | | | | |