Design and Implementation of Reliable Remote Firmware Update of Embedded Systems
Penttinen, Mikael (2026)
Penttinen, Mikael
2026
Tietotekniikan DI-ohjelma - Master's Programme in Information Technology
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2026-01-21
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202601201673
https://urn.fi/URN:NBN:fi:tuni-202601201673
Tiivistelmä
Firmware updates are often required for embedded systems. This is especially true when the systems are connected to the internet or other networks. Embedded firmware updates may add new features, fix bugs or address emerging security vulnerabilities. The update event, however, introduces possible problems for the embedded system. Interrupted or failed updates may disturb the primary system functionality.
This thesis covers reliable firmware updates on network connected microcontrollers. First, the related work and some existing solutions are covered to create an idea of the problems faced, and solutions presented by others. Then a new update process is designed and implemented as proof-of concept. The design implemented in this thesis covers firmware update package generation, transfer, installation and post-install error recovery. As the firmware update is conducted remotely, security measures are implemented to prevent faulty or unsupported firmware installations.
Before the update can be downloaded to the target system, a new firmware binary must be compiled. Each firmware binary contains a metadata section which describes the firmware type, version and rollback information. Additionally, both the firmware data and the metadata are signed with ed25519 digital signing algorithm with the signatures as a part of the metadata. The firmware containing the metadata and the signatures is then fragmented for transfer to the target system. Each fragment is tied to the specific metadata using a hash chain or a separate digital signature.
The metadata and the produced fragments are downloaded to the target microcontroller over the internet. The download is designed to cope with failures at any point during the data transfer process. The download may also be executed in parts in case the microcontroller loses power or is disconnected. After all update data is downloaded, the firmware installation may begin. The designed implementation verifies the update data signatures and installs the firmware content. The installation may also endure failures at any point in the process. If the installation fails, the design is capable of automatically reverting to the previous firmware or launching a separate rescue application to ensure the system operation even after a failed firmware update.
The update system designed in this thesis was implemented on an ARM based STM32 microcontroller. The implemented software was kept modular and configurable to allow operation with different target systems and configurations. The source code for the implementation is published as open-source software. Sulautettujen järjestelmien laiteohjelmistoja joudutaan usein päivittämään. Tämä pätee varsinkin silloin, kun järjestelmät ovat yhteydessä internettiin tai muihin verkkoihin. Ohjelmapäivityksillä voidaan lisätä uusia ominaisuuksia, korjata virheitä tai ratkaista ilmeneviä tietoturvariskejä. Päivitystapahtuma voi kuitenkin aiheuttaa ongelmia. Keskeytyneet tai epäonnistuneet ohjelmistopäivitykset saattavat häiritä järjestelmän normaalia toimintaa.
Tämä diplomityö käsittelee sulautettujen järjestelmien luotettavia ohjelmistopäivityksiä verkkoon liitetyillä mikrokontrollereilla. Työ käsittelee aiheeseen liittyvää tutkimusta ja aiempia ratkaisuita, jonka jälkeen suunnitellaan uusi päivitysprosessi. Suunnitellusta prosessista kehitetään esimerkkitoteutus, joka kattaa ohjelmistopäivityksen luomisen, siirron, asennuksen ja asennuksen jälkeisen virheen palautuksen. Koska päivitystapahtuma toteutetaan verkon yli, turvallisuusmekanismeja on implementoitu estämään virheellisen tai ei tuetun ohjelmiston käyttöönotto.
Ennen ohjelmistopäivityksen siirtoa kohdejärjestelmään, luodaan uusi ohjelmistopaketti. Jokainen ohjelmistopaketti sisältää metadataosion, joka kuvailee ohjelmiston tyyppiä, versiota ja palautustietoja. Lisäksi metadata sisältää ed25519 algoritmilla luodut digitaaliset allekirjoitukset, joilla metadatan ja ohjelmakoodin aitous voidaan varmistaa. Metadatan ja ohjelmakoodin sisältävä päivityspaketti paloitellaan siirtoa varten. Jokainen pala on sidottu päivityspaketin metadataan erillisellä allekirjoituksella tai tarkisteketjulla.
Metadata ja luodut ohjelmistopalat ladataan mikrokontrollerille internet-yhteyden yli. Lataus on suunniteltu sietämään virheitä kaikissa prosessin vaiheissa. Ohjelmistopäivityksen siirto voidaan lisäksi toteuttaa osissa, jos kohdejärjestelmän virta tai yhteys katkeaa. Ohjelmistopäivitys voidaan asentaa, kun kaikki palat on siirretty kohdelaitteelle. Suunniteltu prosessi tarkistaa ladatun datan digitaaliset allekirjoitukset ja asentaa päivityspaketin sisällön. Myös asennusprosessi voi keskeytyä milloin tahansa ilman, että kohdelaite päätyy tilaan, josta se ei voi palautua. Jos ohjelmistopäivityksen asennus epäonnistuu, suunniteltu prosessi kykenee palauttamaan edellisen ohjelmistoversion automaattisesti. Vaihtoehtoisesti voidaan käyttää myös erillistä pelastusohjelmaa, joka takaa kohdelaitteen perustoiminnot tilanteessa, jossa päälaiteohjelma päätyy käyttökelvottomaksi.
Suunniteltu päivitysprosessi toteutettiin ARM-pohjaisella STM32 mikrokontrollerilla. Suunniteltu ohjelmisto kehitettiin modulaariseksi ja konfiguroitavaksi kokonaisuudeksi, joka voidaan ottaa käyttöön erilaisilla kohdejärjestelmillä ja sovelluksilla. Toteutettu lähdekoodi on julkaistu avoimen lähdekoodin ohjelmistona.
This thesis covers reliable firmware updates on network connected microcontrollers. First, the related work and some existing solutions are covered to create an idea of the problems faced, and solutions presented by others. Then a new update process is designed and implemented as proof-of concept. The design implemented in this thesis covers firmware update package generation, transfer, installation and post-install error recovery. As the firmware update is conducted remotely, security measures are implemented to prevent faulty or unsupported firmware installations.
Before the update can be downloaded to the target system, a new firmware binary must be compiled. Each firmware binary contains a metadata section which describes the firmware type, version and rollback information. Additionally, both the firmware data and the metadata are signed with ed25519 digital signing algorithm with the signatures as a part of the metadata. The firmware containing the metadata and the signatures is then fragmented for transfer to the target system. Each fragment is tied to the specific metadata using a hash chain or a separate digital signature.
The metadata and the produced fragments are downloaded to the target microcontroller over the internet. The download is designed to cope with failures at any point during the data transfer process. The download may also be executed in parts in case the microcontroller loses power or is disconnected. After all update data is downloaded, the firmware installation may begin. The designed implementation verifies the update data signatures and installs the firmware content. The installation may also endure failures at any point in the process. If the installation fails, the design is capable of automatically reverting to the previous firmware or launching a separate rescue application to ensure the system operation even after a failed firmware update.
The update system designed in this thesis was implemented on an ARM based STM32 microcontroller. The implemented software was kept modular and configurable to allow operation with different target systems and configurations. The source code for the implementation is published as open-source software.
Tämä diplomityö käsittelee sulautettujen järjestelmien luotettavia ohjelmistopäivityksiä verkkoon liitetyillä mikrokontrollereilla. Työ käsittelee aiheeseen liittyvää tutkimusta ja aiempia ratkaisuita, jonka jälkeen suunnitellaan uusi päivitysprosessi. Suunnitellusta prosessista kehitetään esimerkkitoteutus, joka kattaa ohjelmistopäivityksen luomisen, siirron, asennuksen ja asennuksen jälkeisen virheen palautuksen. Koska päivitystapahtuma toteutetaan verkon yli, turvallisuusmekanismeja on implementoitu estämään virheellisen tai ei tuetun ohjelmiston käyttöönotto.
Ennen ohjelmistopäivityksen siirtoa kohdejärjestelmään, luodaan uusi ohjelmistopaketti. Jokainen ohjelmistopaketti sisältää metadataosion, joka kuvailee ohjelmiston tyyppiä, versiota ja palautustietoja. Lisäksi metadata sisältää ed25519 algoritmilla luodut digitaaliset allekirjoitukset, joilla metadatan ja ohjelmakoodin aitous voidaan varmistaa. Metadatan ja ohjelmakoodin sisältävä päivityspaketti paloitellaan siirtoa varten. Jokainen pala on sidottu päivityspaketin metadataan erillisellä allekirjoituksella tai tarkisteketjulla.
Metadata ja luodut ohjelmistopalat ladataan mikrokontrollerille internet-yhteyden yli. Lataus on suunniteltu sietämään virheitä kaikissa prosessin vaiheissa. Ohjelmistopäivityksen siirto voidaan lisäksi toteuttaa osissa, jos kohdejärjestelmän virta tai yhteys katkeaa. Ohjelmistopäivitys voidaan asentaa, kun kaikki palat on siirretty kohdelaitteelle. Suunniteltu prosessi tarkistaa ladatun datan digitaaliset allekirjoitukset ja asentaa päivityspaketin sisällön. Myös asennusprosessi voi keskeytyä milloin tahansa ilman, että kohdelaite päätyy tilaan, josta se ei voi palautua. Jos ohjelmistopäivityksen asennus epäonnistuu, suunniteltu prosessi kykenee palauttamaan edellisen ohjelmistoversion automaattisesti. Vaihtoehtoisesti voidaan käyttää myös erillistä pelastusohjelmaa, joka takaa kohdelaitteen perustoiminnot tilanteessa, jossa päälaiteohjelma päätyy käyttökelvottomaksi.
Suunniteltu päivitysprosessi toteutettiin ARM-pohjaisella STM32 mikrokontrollerilla. Suunniteltu ohjelmisto kehitettiin modulaariseksi ja konfiguroitavaksi kokonaisuudeksi, joka voidaan ottaa käyttöön erilaisilla kohdejärjestelmillä ja sovelluksilla. Toteutettu lähdekoodi on julkaistu avoimen lähdekoodin ohjelmistona.
