Ein Bluetooth-Modul im Feld ist nur so gut wie die Firmware, die du ihm pushen kannst. OTA (over-the-air) DFU ist, wie du Bugs fixst, CVEs schließt und Features ohne LKW-Rollout addierst. Dieser Artikel behandelt die Update-Architektur eines Bluetooth-Moduls: Dual-Bank, signierte Images, Delta-Diffs und Rollback.
Update-Topologien
Ein Bluetooth-Modul empfängt Firmware auf zwei Wegen:
- Direkt: das Smartphone verbindet und streamt das Image über GATT (typisch bei Consumer).
- Indirekt: ein Gateway puffert das Image und leitet es an viele Module weiter (Industrie-Flotten).
Dual-Bank vs Single-Bank
Das sicherste Bluetooth-Modul-Design hält zwei Banks:
| Schema | Risiko bei Fehler | Speicherkosten |
|---|---|---|
| Single-Bank | Brick bei Stromausfall mitten im Schreiben | 1x |
| Dual-Bank (A/B) | bootet alte Bank bei Fehler | 2x |
| Staging auf externem SPI-Flash | bootet interne bei Fehler | 1x + ext |
Dual-Bank lohnt den Flash für sicherheits- oder umsatzkritische Dinge.
Signierte Images
Flashe niemals unsignierten Code. Das Bluetooth-Modul verifiziert eine Signatur vor dem Bank-Wechsel:
if Verify(pubkey, image_hash, sig) == OK:
swap_bank()
else:
reject_and_stay()
Nutze ECDSA P-256 mit in der Fabrik eingebranntem Root-Key. Ein schlechtes Image bootet schlicht nicht.
Delta / partielle Updates
Volle Images sind 200-500 KB; das an 10.000 Module zu senden tut weh. Ein Delta-Diff schickt nur die geänderten Blöcke:
patch = bsdiff(old_image, new_image) # oft 5-20% der vollen Größe
Das Bluetooth-Modul wendet den Patch im Staging-Bereich an, verifiziert den Result-Hash und wechselt dann. Das schneidet Bandbreite und Update-Zeit drastisch.
Die Update-State-Machine
Ein diszipliniertes Bluetooth-Modul-DFU läuft als State-Machine:
IDLE -> DOWNLOAD -> VERIFY -> SWAP -> REBOOT -> (OK | ROLLBACK)
Bei jedem Checksum-Mismatch rollt es zur bekannten guten Bank zurück und meldet den Fehler. Lösche die aktive Bank nie, bis die neue verifiziert ist.
Strom und Zeit
Ein DFU mit 1-2 KB/s über BLE dauert Minuten für ein volles Image; ein Delta sind Sekunden bis eine Minute. Warne den User, halte das Gerät versorgt (oder fordere >50% Akku) und drossle gegen Überhitzung.
Sicherheitshinweise
- Authentisiere die Quelle: nur signiertes Image deines Servers, über verschlüsseltem Kanal.
- Rate-Limit für Updates, um einen DoS zu blocken, der die Flash abnutzt.
- Versioniere das Protokoll, damit alte Module noch updaten.
Ein Bluetooth-Modul mit signiertem Dual-Bank-DFU und Delta-Support macht aus einem Firmware-Notfall einen leisen Hintergrundjob.