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.