+--------+ +-----------------+ +-----------------------------+ | | | Firmware Server | | IoT Device | | Author | | Status Tracker | | +------------+ +----------+ | +--------+ | Server | | | Firmware | |Bootloader| | | +-----------------+ | | Consumer | | | | | | | +------------+ +----------+ | | | | | | | | | | +-----------------------+ | | Create Firmware | | | Status Tracker Client | | |--------------+ | | +-----------------------+ | | | | `'''''''''''''''''''''''''''' |<-------------+ | | | | | | | | | | Upload Firmware | | | | |------------------>| | | | | | | | | | Create Manifest | | | | |---------------+ | | | | | | | | | | |<--------------+ | | | | | | | | | | Sign Manifest | | | | |-------------+ | | | | | | | | | | |<------------+ | | | | | | | | | | Upload Manifest | | | | |------------------>| Notification of | | | | | new firmware image | | | | |----------------------------->| | | | | | | | | |Initiate| | | | | Update | | | | |<-------| | | | | | | | | Query Manifest | | | | |<--------------------| . | | | | . | | | Send Manifest | . | | |-------------------->| . | | | | Validate | | | | Manifest | | | |--------+ | | | | | | | | |<-------+ | | | | . | | | Request Firmware | . | | |<--------------------| . | | | | . | | | Send Firmware | . | | |-------------------->| . | | | | Verify . | | | | Firmware | | | |--------+ | | | | | | | | |<-------+ | | | | . | | | | Store . | | | | Firmware | | | |--------+ | | | | | | | | |<-------+ | | | | . | | | | . | | | | . | | | | | | | | | Update | | | | |Complete| | | | |------->| | | | | | | | Firmware Update Completed | | | |<-----------------------------| | | | | | | | Reboot | | | |----------------------------->| | | | | | | | | | | | | | | |Reboot | | | | |------>| | | | | | | | | . | | | +---+----------------+--+ | | S| | | | | | E| | Verify | | | | C| | Firmware | | | | U| | +--------------| | | | R| | | | | | | E| | +------------->| | | | | | | | | | B| | Activate new | | | | O| | Firmware | | | | O| | +--------------| | | | T| | | | | | | | | +------------->| | | | P| | | | | | R| | Boot new | | | | O| | Firmware | | | | C| | +--------------| | | | E| | | | | | | S| | +------------->| | | | S| | | | | | +---+----------------+--+ | | | . | | | | | | | | . | | | | Device running new firmware | | | |<-----------------------------| | | | . | | | | | |