In einem LoRaWAN-Netzwerk befinden sich mitunter viele verschiedene Internet-of-Things-Geräte (IoT), die regelmäßig gewartet werden müssen. Ein Thema hierbei ist beispielsweise das Aufspielen einer neuen Firmware. Eine wichtige Voraussetzung kann sein, diesen Prozess aus der Ferne durchführen zu können. LoRaWAN bietet dafür ein effizientes und sicheres Verfahren unter Verwendung von Multicast-Nachrichten. Dieser Dienst wird durch eine Reihe von Paketen der Anwendungsschicht bereitgestellt. Der Beitrag liefert einen Abriss über die wichtigsten Aspekte des Firmware Updates Over-The-Air (FUOTA) und beleuchtet drei der Pakete der Anwendungsschicht im Detail.
6 SCHRITTE ZUR AKTUALISIERUNG DER FIRMWARE
- Identifizierung der zu aktualisierenden Geräte und Einteilung in Multicast-Gruppen
- Generierung einer binären Firmware-Patch-Datei für die zu aktualisierende Geräteplattform
- Übermittlung der Binärdatei an die Gruppe der zu aktualisierenden Geräte
- Jedes Gerät prüft die Signatur, um die Datei und ihre Herkunft zu authentifizieren
- Jedes Gerät installiert das Firmware-Update
- Jedes Gerät meldet den Status des Aktualisierungsvorgangs (Erfolg oder Misserfolg)
Trotz dessen, dass die genannten Schritte sehr gerätespezifisch sind, ist es möglich, einen FUOTA-Prozess so zu standardisieren, dass es für fast jedes Gerät in einem LoRaWAN-Netzwerk funktioniert. Die Voraussetzungen FUOTA ausführen zu können, sind aktuell mit dem STACKFORCE LoRaWAN Stack auf den Hardware-Plattformen STM32L0+SX126x, STM32WB55+SX126x und STM32WLE / STM32WL55 gegeben. Auf Anfrage bieten wir auch weitere Plattformen an.
Eine gewisse Einschränkung stellt die niedrige Bitrate dar, bei der Daten in einem LoRaWAN-Netzwerk übertragen werden. Dieser Herausforderung wird durch die Multicast-Nachrichten entgegengetreten. Diese sorgen dafür, dass ein bestimmtes Funkpaket, das über das Netz übertragen wird, von vielen Geräten empfangen werden kann. Dadurch reicht nur eine Übertragung aus, um alle Geräte auf einmal zu erreichen.
Mit LoRaWAN gibt es drei primäre Pakete auf der Anwendungsschicht für FUOTA:
- Clock Synchronization
- Remote Multicast Setup
- Fragmented Data Block Transport
Geräteseitig befinden sich diese Pakete auf der Anwendungsschicht und verwenden die LoRaWAN-MAC-Schicht, um Nachrichten zum und vom Netz zu senden und zu empfangen. Zusätzlich können andere Pakete auf der Anwendungsschicht des Geräts vorhanden sein. Der erste Schritt bei der Aktualisierung der Firmware in einem LoRaWAN-Netzwerk besteht darin, die zu aktualisierenden Geräte zu identifizieren, aufzulisten und sie in eine LoRaWAN-Multicast-Gruppe aufzunehmen. Diese Gruppe kann dynamisch erstellt und eingerichtet werden.
Remote Multicast Setup
Jedes Gerät in einem LoRaWAN-Netzwerk ist mit einer Unicast-Identität ausgestattet, die zur eindeutigen Identifizierung und Authentifizierung des Geräts im Netzwerk verwendet wird. Innerhalb des Remote Multicast Setup können folgende Anwendungen ausgeführt werden:
- Abfrage der Implementierungsversion des Pakets.
- Abfrage der Liste und des Status der Multicast-Gruppen, denen ein Gerät zugewiesen wurde.
- Erstellen oder Ändern einer Multicast-Gruppe für ein bestimmtes Gerät.
- Löschen einer Multicast-Gruppendefinition für ein Gerät.
- Definieren einer Klasse-B- oder Klasse-C Sitzung und deren Verknüpfung mit einer Multicast-Gruppe.
LoRaWAN-basierte Geräte sind batteriebetrieben und wachen im Normalfall nur auf, wenn sie Daten zu übertragen haben, um danach sofort wieder in den Ruhezustand überzugehen. Um eine Nachricht an eine ganze Gruppe von Geräten übertragen zu können, muss das System daher zunächst sicherstellen, dass die Empfänger aller Geräte innerhalb der Multicast-Gruppe zur gleichen Zeit und für die gleiche Dauer aktiv sind.
Um die Zeit von LoRaWAN-basierten Geräten mit der Zeit des Netzwerks zu synchronisieren, wird das „Clock Synchronisation“ Paket genutzt. Sobald die Geräteuhren synchronisiert sind, muss der Geräteverwaltungsdienst die Geräte so programmieren, dass sie ihre Empfänger gleichzeitig öffnen und denselben Funkkanal und dieselbe Datenrate verwenden. Zu diesem Zweck kann mit dem Paket „Remote Multicast Setup“ entweder eine Multicast-Sitzung der Klasse C oder der Klasse B definiert werden.
Das Multicast-Remote-Setup-Paket macht keine Annahmen über den Inhalt der Nachrichten, der während einer Klasse-C- oder Klasse-B-Multicast-Sitzung vom Netzwerk übertragen wird. Daher muss während einer Multicast-Sitzung eine Möglichkeit geschaffen werden, eine Datei effizient zu fragmentieren, um eine vollständige Zustellung an jedes Gerät in der Gruppe sicherzustellen. Zu diesem Zweck wurde das Paket "Fragmented Data Block Transport“ erstellt.
Fragmented Data Block Transport
Die Verwendung von Funk-Multicast-Übertragungen verbessert die Effizienz des Netzwerks enorm. Herausforderung dabei ist allerdings, dass nicht alle Datenpakete den Empfänger erreichen. Um möglichst alle Datenpakete erfolgreich übertragen zu können, implementiert das Paket Fragmented Data Block Transport einen „forward error correction code“.
Die zu sendende Datei wird in gleich lange Fragmente zerlegt und der forward error correction code wird implementiert, sodass einzelne Fragmente wieder hergestellt werden können, um die Übertragung der vollständigen Datei sicherzustellen. Darüber hinaus bietet das Paket Fragmented Data Block Transport die folgenden Funktionen:
- Abfrage der Implementierungsversion des Fragmentierungspakets
- Erstellen einer Fragmentierungssitzung
- Abfrage eines Geräts oder einer Gruppe von Geräten, um den Status einer Fragmentierungssitzung zu ermitteln
- Löschen einer Fragmentierungssitzung
Bevor eine Datei an ein Gerät oder eine Gruppe von Geräten gesendet wird, muss eine Fragmentierungssitzung erstellt werden. Diese teilt dem Gerät oder den Geräten die Details der zu sendenden Datei mit. Obwohl Multicast-Übertragungen effizienter sind, um dieselbe Datei an eine Gruppe von Geräten zu senden, ermöglicht das Fragmentierungspaket auch das Senden von Fragmenten über einen Unicast-Downlink. Über eine Unicast- oder Multicast-Nachricht kann der Server den Status der einzelnen Geräte nach dem Versenden aller kodierten Fragmente abfragen. Zusätzliche kodierte Fragmente können an Geräte gesendet werden, die noch nicht in der Lage waren, die Datei vollständig wieder zusammenzusetzen. Diese Fragmente können als Unicast-Downlinks gesendet werden, oder es kann eine neue Multicast-Sitzung eingerichtet werden, wenn zu viele Geräte die Datei nicht wieder zusammensetzen konnten.
Zusammenfassung
In diesem Beitrag haben wir die Pakete der Anwendungsschicht Clock Synchronization, Remote Multicast Setup und Fragmented Data Block Transport vorgestellt und gezeigt, wie LoRaWAN einen effizienten und zuverlässigen Dienst für die Übermittlung fragmentierter Dateien bietet. Durch die Multicast-Fähigkeit des LoRaWAN-Protokolls in Verbindung mit einem effizienten Fragment-Codierungsschema, wird die Anzahl der erforderlichen wiederholten Übertragungen erheblich reduziert. So kann der Anwender problemlos Firmware Updates Over-The-Air durchführen.