FUOTA (Firmware Update Over The Air) mit ChirpStack
Die folgenden Schritte beschreiben die Einrichtung und Durchführung von Firmware-Updates (FUOTA) für LoRaWAN-Endgeräte unter Verwendung des ChirpStack Application Servers.
Voraussetzungen
Bevor du beginnst, stelle sicher, dass folgende Voraussetzungen erfüllt sind:
- Ein installierter und laufender ChirpStack v4-Server.
- Die neue Firmware-Datei als
.sbin-Datei. - Die Geräte sind mit dem ChirpStack-Server verbunden.
- Das Device Profile für deine Geräte hat als Expected uplink interval (secs) die Schlafzeit deiner Geräte konfiguriert. Der Standardwert wäre
300s. Mehr Details zu den Device Profile Einstellungen sind weiter unten. - Die Geräte haben eine ausreichende Batterieladung. Wir empfehlen, das FUOTA tagsüber bei Sonneneinstrahlung durchzuführen.
- Die Geräte befinden sich in guter Funkreichweite. Wir empfehlen, die Geräte in die Nähe eines Gateways zu bringen.
Einrichtung
Device Profile
Für das Device Profile sind folgende Parameter wichtig:
General
- Region:
EU868 - MAC version:
LoRaWAN 1.0.4 - Regional parameters version:
RP002-1.0.1 - Expected uplink interval (secs): Schlafzeit des Geräts - default
300s
Application layer
- Clock sync version (TS003):
v1.0.0 - Clock sync fPort (TS003):
202 - Fragmented data block transport (TS004):
v1.0.0 - Fragmented data block transport fPort (TS004):
201 - Remote multicast setup version (TS005):
v1.0.0 - Remote multicast setup fPort (TS005):
200
1. ChirpStack FUOTA Deployment erstellen
Zuerst muss ein neues FUOTA deployment erstellt werden. Diese Option findet man in der ChirpStack-Application, in der sich dein Gerät befindet. ChirpStack erstellt dabei die Multicast-Gruppe für das FUOTA automatisch.
Folgende Einstellungen sind empfohlen:
- Unicast retry count (max):
5 - Multicast data-rate:
4(abhängig von der Entfernung der Geräte) - Fragmentation redundancy (%):
25% - Multicast timeout:
4096 s - Fragment size (Vielfaches von 8):
192 bytes - Payload: die neue Firmware (
.sbin)
2. Geräte zum Deployment hinzufügen
Alle Endgeräte, welche dieselbe Firmware empfangen sollen, können gleichzeitig geupdatet werden. In der Devices-Übersicht der Application können ausgewählte Geräte über den Button Selected Device zu einem FUOTA Deployment hinzugefügt werden.
3. Gateways zum Deployment hinzufügen
Analog zu den Endgeräten müssen auch die entsprechenden Gateways zum FUOTA Deployment hinzugefügt werden.
4. FUOTA starten
Wurde das FUOTA konfiguriert, alle gewünschten Endgeräte und betroffene Gateways zum FUOTA Deployment hinzugefügt, kann das FUOTA gestartet werden.
Hinweis: Der komplette FUOTA-Prozess dauert ungefähr 2 Stunden – abhängig von der Anzahl der Geräte, dem konfigurierten Unicast retry count und der Fragmentation redundancy. Die Zeit, in der das Gerät im Class-C-Modus ist (Always On – Empfangen der FUOTA-Pakete), beträgt standardmäßig ca. 30–60 Minuten.
FUOTA-Ablauf und -Status
Das ChirpStack-FUOTA durchläuft folgende Schritte, welche im Dashboard des FUOTA deployments zu sehen sind:
- Create multicast group
- Add devices to multicast group
- Add gateways to multicast group
Die Schritte 1 bis 3 passieren nahezu sofort. Sie dokumentieren nur den internen Setup im ChirpStack.
- Multicast group setup
- Fragmentation session setup
- Multicast session setup
Die Schritte 4 bis 6 betreffen die Gerätkonfiguration. ChirpStack versucht, die Geräte per Downlink zu konfigurieren. Sollte dies fehlschlagen, wird der jeweilige Konfigurations-Downlink um die Anzahl Unicast retry count wiederholt. Während dieser Zeit ist das Gerät im normalen Betrieb. Der Status der einzelnen Geräte im FUOTA bezüglich dieser Setup-Nachrichten kann im Tab "Devices" des FUOTA deployments eingesehen werden.
- Enqueue fragments: Im Rahmen dieses internen Setup-Prozesses werden die Firmware-Fragmente zum Zeitpunkt "Run at" der Queue der Multicast-Gruppe hinzugefügt.
- Delete multicast group: Die Multicast-Gruppe wird gelöscht.
- Complete deployment
Zwischen Schritt 7 und 8 wird das FUOTA durchgeführt. Die Geräte sind für die Multicast timeout Zeit im Class-C Modus und dauerthaft wach. Während dieser Zeit senden sie keine normalen Nachrichten aus, sondern empfangen die einzelnen Firmware Fragmente. Dementsprechend ist auch der Stromverbrauch der Geräte in dieser Zeit erhöht. Die Multicast timeout Zeit muss ausreichend groß sein, damit sich alle Fragmente der Firmware zeitlich ausgehen. Die FUOTA-Einstellung Calculate multicast-timeout berechnet die notwendige Zeit anhand der Fragment size bzw. des Firmware-Files im Payload.
Nach Ablauf des multicast-timeout oder wenn alle Fragmente empfangen worden sind, wird das Gerät neu starten und bei erfolgreichem FUOTA in die neue Firmware starten.
Optional
Die FUOTA-Einstellung Fragmentation status request fragt zu zwei auswählbaren Zeitpunkten den Fragmentation-Status ab. Das Ergebnis dazu, kann im "Devices"-Tab des FUOTA deployments eingesehen werden.
