Bluetooth Mesh Geräte-Firmware-Update

Technischer Überblick

Freigabe : 1.0.0
Dokument Version :   1.0
Zuletzt aktualisiert : 19. September 2023
Die Autoren :   

Martin Woolley, Bluetooth SIG
Hannu Mallat, Silicon Laboratories
Omkar Kulkarni, Nordischer Halbleiter

Geschichte der Revision

Version

Date

Author

Changes

1.0.0

September 19, 2023

Martin Woolley, Bluetooth SIG
Hannu Mallat, Silicon Laboratories
Omkar Kulkarni, Nordic Semiconductor

Initial version

 

Hinweis

Die Bluetooth Mesh Profilspezifikation wurde umbenannt und heißt jetzt Bluetooth Mesh Protokoll Spezifikation. Referenzen in diesem und verwandten Papieren werden diesen Namen verwenden, wenn sie sich auf die Spezifikation der Version 1.1 beziehen, aber weiterhin die Spezifikation der Version 1.0 als Bluetooth Mesh Profil Spezifikation.

 

1. Hintergrund

BluetoothMit Mesh 1.1 wurde eine Reihe neuer Funktionen eingeführt, die es ermöglichen, die auf den Geräten laufende Firmware über das Netzwerk zu aktualisieren. Bevor die Möglichkeiten, Vorteile und technischen Highlights dieser Funktion erläutert werden, wird der relevante Hintergrund dargestellt.

1.1 Firmware und Bluetooth Mesh Geräte

Die Low-Level-Software, die die Hardware eines Geräts steuert, wird gewöhnlich als FirmwareAuf Bluetooth Mesh -Geräten läuft Firmware, die die Bluetooth Mesh -Protokolle und die zugrunde liegenden Schichten eines Bluetooth LE-Hosts und Controllers implementiert. Die mesh Modelle die ein Gerät verwendet, sind selbst in der Firmware implementiert, ebenso wie alle anderen gerätespezifischen Verhaltensweisen und Fähigkeiten, die nicht in den Bluetooth Spezifikationen enthalten sind. Die Firmware auf einem Gerät spielt eine entscheidende Rolle dabei, das Gerät zu dem zu machen, was es ist.

1.2 Firmware auf dem neuesten Stand halten

Die Firmware muss auf dem neuesten Stand gehalten werden, und die Hersteller veröffentlichen häufig Firmware-Updates. Neue Firmware kann Probleme beheben, neue Funktionen hinzufügen, die Sicherheit verbessern, die Leistung steigern oder einen anderen Vorteil bieten. Es ist allgemein anerkannt, dass es eine gute Praxis ist, Software auf dem neuesten Stand zu halten, unabhängig davon, ob es sich um Geräte-Firmware, Anwendungssoftware oder ein Betriebssystem-Update handelt.

Wie Sie Software aktualisieren, hängt von der Art der Software und der Plattform ab, für die sie bestimmt ist. Automatische Software-Updates, die wenig oder gar kein Eingreifen des Benutzers erfordern, sind die Norm für moderne Smartphone- und Desktop-Betriebssysteme.

Bluetooth Mesh 1.0 bietet keinen automatischen oder standardisierten Mechanismus, um zu erkennen, dass neue Firmware für ein Gerät verfügbar ist, um sie zu erwerben oder zu installieren. Diese Aufgaben müssen manuell ausgeführt werden, und die Installation von Firmware-Updates muss direkt auf dem Gerät erfolgen, wobei die für diesen Zweck vorgesehene proprietäre Schnittstelle zu verwenden ist. In einem Netz , das aus Geräten mehrerer Hersteller besteht, kann der Prozess mehrere proprietäre Tools umfassen und sehr kompliziert werden. mesh

1.3 Binäre Bilder

Firmware-Updates werden in der Regel in eine einzelne Binärdatei gepackt, die als Image. Das Format der Image-Dateien variiert und hängt von der Zielplattform und ihrem Hersteller ab. Das Entpacken, Überprüfen und Installieren von Firmware erfordert ein proprietäres, herstellerspezifisches Verfahren.

1.4 Firmware-Updates und Sicherheit

Die Installation einer neuen Firmware birgt gewisse Sicherheitsrisiken in sich. Woher wissen Sie, dass die installierte Software wie behauptet vom Hersteller stammt? Woher wissen Sie, dass sie nicht manipuliert wurde und vielleicht bösartigen Code enthält?

Solche Dinge fallen nicht unter die Bluetooth® Spezifikationen. Um jedoch sicherzustellen, dass Firmware-Images nicht manipuliert wurden, wird generell empfohlen, nur Dateien zu verwenden, die vom Urheber digital signiert wurden. Digitale Signaturen verhindern, dass Dateien unbemerkt manipuliert werden können und verifizieren den Urheber der Datei. Auch die Einrichtung eines Servers, von dem ein Firmware-Update heruntergeladen werden kann, als vertrauenswürdige Quellewird in der Regel durch die Verwendung von digitalen Zertifikaten erreicht.

1.5 Modelle

Modelle sind die Bausteine der Anwendungsschicht Bluetooth® Mesh Geräteverhaltensweisen. Ein Modell ist eine Softwarekomponente, die einen bestimmten Satz von Verhaltensweisen implementiert und mit einem definierten Satz von Nachrichten und Zuständen verbunden ist. Es gibt Client-Modelle, die nur Nachrichten senden und empfangen, und es gibt Server-Modelle, die Nachrichten senden und empfangen und Zustandswerte enthalten, auf die die Nachrichten des Modells einwirken.

2. Über die Aktualisierung der Gerätefirmware

2.1 Fähigkeiten und Vorteile

2.1.1 Aktualisierung der Gerätefirmware

Die neue Funktion Device Firmware Update (DFU) von Bluetooth® Mesh bietet eine Standardmethode für Knoten im Netzwerk, um ihre Firmware auf dem neuesten Stand zu halten. Die Funktion umfasst die Überwachung der Verfügbarkeit neuer Firmware-Updates, die Beschaffung der Binärabbilder, die Verteilung innerhalb des Netzes und die Aktualisierung ausgewählter Knoten.

Ein typisches Netzwerk enthält in der Regel viele Produkte desselben Typs und desselben Herstellers. Die DFU-Funktion bietet eine Multicast Firmware-Verteilungsfunktion, die die in Bluetooth Mesh verwendete Broadcast-Kommunikation nutzt, so dass ein einziges Firmware-Update-Image mit einer minimalen Anzahl von Funkübertragungen an mehrere Geräte gleichzeitig verteilt werden kann.

DFU reduziert den manuellen Aufwand des Gebäudewartungsteams, um die Firmware der Geräte im Netzwerk auf dem neuesten Stand zu halten, erheblich.

2.1.2 Plug and Play

Die DFU-Funktion ermöglicht die Aktualisierung von Geräten, die aus vielen Subsystemen bestehen, von denen jedes seine eigene Firmware hat. Jede dieser Firmware-Instanzen wird in der Firmware-Informationsliste des Geräts aufgeführt.

Die Firmware-Informationsliste ist dynamisch, d. h., wenn Plug-and-Play-Komponenten hinzugefügt oder entfernt werden, spiegeln sich die Änderungen am Subsystem in der Firmware-Informationsliste des Geräts wider.

Im Zusammenhang mit der neuen Plug-and-Play-Fähigkeit führt Bluetooth Mesh Protocol Specification 1.1 eine neue formale Bezeichnung für den Lebenszyklus eines Geräts und dessen Struktur und Konfiguration ein. Das Konzept eines Begriffs wird in der Spezifikation wie folgt beschrieben:

A Begriff ist ein Zeitraum während der Lebensdauer eines Knotens, in dem sich die Struktur des Knotens (die Merkmale, die Elemente und Modelle) und die Unicast-Adressen der Knotenelemente nicht ändern. 

Der Beginn eines neuen Begriffs kann erforderlich sein, um eine Änderung der Hardwarekonfiguration eines physischen Geräts zu unterstützen, z. B. das Anbringen eines zusätzlichen Sensors, oder um eine Änderung der Teilsystemkonfiguration des Knotens zu unterstützen, z. B. ein leuchteninternes Netzwerk. Die Änderungen werden vom Knoten durch Ausfüllen der Zusammensetzungsdatenseite 128 angezeigt und werden wirksam, wenn eine neue Begriff beginnt. 

Die ursprüngliche Laufzeit eines Knotens in einem Netz beginnt, wenn der Knoten im Netz bereitgestellt wird. 

A Amtszeit endet und eine neue Begriff beginnt, wenn ein Verfahren zur Aktualisierung von Knotenadressen oder einer Knotenzusammensetzung ausgeführt wird. 

Der letzte Begriff eines Knotens in einem Netz endet, wenn der Knoten aus dem Netz entfernt wird. 

 

2.2 Technische Highlights

2.2.1 DFU-Rollen

Das DFU-System definiert eine Reihe von Knotenrollen. Die Rollen sind:

Role 

Description 

Initiator 

The Initiator identifies available firmware updates for a given list of nodes in the network. It executes procedures defined in the DFU specification under the control of an application. The Initiator typically runs on a device which supports both Bluetooth® Mesh and has internet connectivity, such as a smartphone or gateway device, and periodically checks manufacturers’ websites for new firmware releases. Having identified relevant updates, it acquires them and sends the new firmware images to a Distributor node. 

Distributor 

The Distributor receives new firmware images from an Initiator and is responsible for sending them to appropriate nodes in the network for installation. The Distributor is typically a physically separate device to the Initiator so that the Initiator (which will often be a smartphone application) does not need to be in range of the network during the entire process. The Distributor can be thought of as acting an intermediary for the Initiator. 

Target 

Target is the name given to a node which can receive a firmware image from a Distributor and install it. 

Stand-alone Updater 

A Stand-alone Updater fulfils the role of a combined Initiator and Distributor, acquiring firmware updates and sending them directly to Target nodes without the need for an intermediate Distributor.  

2.2.2 Modelle

Die DFU-Funktion basiert auf einer Reihe neuer mesh -Modelle und einer Reihe damit verbundener Verfahren, die sie einbeziehen.

  • Die Transport Modelle bieten einen verallgemeinerten Mechanismus für die Übertragung von Binary Large Objects (BLOBs) zwischen Knoten.
  • Die Firmware-Verteilung Modelle unterstützen Verfahren zur Verteilung von Firmware-Updates an Zielknoten.
  • Die Firmware-Aktualisierung Modelle unterstützen Verfahren zur Aktualisierung der Gerätefirmware.

Jedes Modell ist an einer Reihe von Verfahren beteiligt, die es insgesamt ermöglichen, verfügbare Firmware-Updates zu ermitteln, zu beschaffen und an die entsprechenden Knoten zu verteilen, zu überprüfen und zu installieren.

2.2.3 Rollen und Modelle

Die folgende Tabelle ist der DFU-Spezifikation entnommen und zeigt die Beziehung zwischen DFU-Rollen und den neuen Modellen.

Rolle

Firmware-Verteilungs-Client

Firmware-Verteilungsserver

Firmware-Update-Client

Firmware-Update-Server

BLOB-Übertragungs-Client

BLOB Transfer Server

Ziel

-

-

-

M

-

M

Initiator

M

-

M

-

M

-

Verteiler

-

M

M

-

M

M

Eigenständiger Updater

-

-

M

-

M

-

M: Die Unterstützung dieses Modells durch diese Rolle ist obligatorisch.

Ein mesh -Knoten kann mehrere Rollen unterstützen, indem für jede Rolle entsprechende Modelle instanziiert werden.

2.2.4 Übersicht über den Ablauf der Firmware-Aktualisierung

Es gibt eine Reihe von Varianten, wie die Beschaffung, Verteilung und Installation von Firmware-Updates durchgeführt werden kann. Zum Beispiel:

  • Die Firmware kann vom Vertriebspartner von der Website eines Anbieters über den Standard Firmware-Prüfung über HTTPS Verfahren oder mit Hilfe eines implementierungsspezifischen Verfahrens erhalten.
  • Ein Initiator-Knoten kann ein Firmware-Image beziehen und es an den Verteiler zur Verteilung an die Aktualisierungsknoten senden oder er kann Informationen senden, mit denen der Verteiler das Firmware-Image selbst beziehen kann.

Ein repräsentatives Beispiel dafür, wie der Initiatorknoten, der Verteilerknoten und ein oder mehrere Zielknoten zusammenarbeiten können, um ein Firmware-Update zu erhalten, zu verteilen und zu installieren, ist in Abbildung 1 dargestellt dargestellt und im folgenden Text beschrieben.

2.2.4.1 Suchen und Verteilen von Firmware-Updates

2241

Abbildung 1 - Beziehen und Verteilen von Firmware-Updates

Abbildung 1 zeigt eine Reihe von Prozeduren, die durchgeführt werden, um Firmware-Updates von einer Hersteller-Website zu erhalten und sie dann auf eine Reihe von Aktualisierungsknoten zu verteilen und zu installieren. Die Interaktionen zwischen den Knoten, die die verschiedenen DFU-Rollen übernehmen, sind dargestellt, und gegebenenfalls sind die beteiligten Modelle angegeben.

Zusammenfassend lässt sich Folgendes feststellen:

  1. Der Initiator erhält Informationen über die Firmware, die derzeit auf einer Liste von Knoten läuft, die von einer Anwendung einer höheren Schicht angegeben wurde.
  2. Der Initiator sucht nach relevanten Aktualisierungen dieser Firmware, in diesem Fall mit Hilfe von HTTPS-Anfragen, die an eine Hersteller-Website gesendet werden. Wenn eine Aktualisierung verfügbar ist, wird sie heruntergeladen. Wenn nicht, wird der Vorgang an dieser Stelle beendet.
  3. Der Initiator fügt dann die Details der Liste der Aktualisierungsknoten zur Liste der Verteilungsempfänger Status eines Firmware-Verteilungsservers auf dem Verteilerknoten hinzu. Der Einfachheit halber sollte jeder Knoten in der Liste in der Lage sein, das gleiche Firmware-Image zu akzeptieren.
  4. Der Initiator verwendet die Funktion Firmware hochladen und den BLOB übertragen Verfahren, um das Firmware-Image an den Verteiler zu übertragen.
  5. Der Initiator weist dann die Vertriebsstelle an, die Verteilung einzuleiten.
  6. Der Firmware-Update-Client auf dem Verteiler teilt dem entsprechenden Servermodell auf jedem Aktualisierungsknoten mit, dass ein Firmware-Update-Vorgang beginnt, und erwartet eine Statusmeldung als Antwort.
  7. 7. Der Verteiler verwendet das BLOB-Transfer-Verfahren, um das Firmware-Image an jedes Updating n

2.2.4.2 Verteilungsfortschritt prüfen

Während der Verteilung der Firmware an die Aktualisierungsknoten kann der Initiator den Verteiler um Informationen über den Stand der Arbeiten bitten.

Abbildung2

Abbildung 2 - Initiator prüft den Fortschritt des Verteilers

2.2.4.3 Überprüfen und Installieren der Firmware

Nach dem Empfang eines vollständigen Binärabbildes führen die Aktualisierungsknoten eine implementierungsspezifische Verifizierungsprüfung durch, z. B. durch Überprüfung einer digitalen Signatur auf dem BLOB. Der Verteiler überwacht den Status des Verfahrens beim Aktualisierungsknoten und weist den Aktualisierungsknoten gegebenenfalls an, das Firmware-Update zu installieren.

Abbildung3

Abbildung 3 - Aktualisierung des Knotens, Überprüfung des Firmware-Images und, wenn dazu aufgefordert, dessen Installation

2.2.5 Dateiformate

Firmware-Update-Dateien, die mit dem definierten Firmware-Abruf über HTTPS-Verfahren abgerufen werden, müssen ein Archivdateiformat verwenden, das in der Bluetooth Mesh Protokollspezifikation definiert ist. Das Format umfasst eine Manifestdatei, die den Inhalt der Datei beschreibt, die binäre Firmware-Image-Datei selbst und eine optionale Metadaten-Datei, die zusätzliche Informationen über das Firmware-Image enthält. Sowohl die Manifest- als auch die Metadaten-Datei verwenden ein definiertes JSON-Format.

2.2.6 Teilsystem Firmware

Ein Knoten kann seine Firmware in mehrere Teile aufteilen, von denen jeder unabhängig von den anderen aktualisiert werden kann. Jeder unabhängige Teil wird als Firmware-Subsystem bezeichnet. Der mesh Netzwerkstapel auf einem Knoten kann beispielsweise ein unabhängiges Firmware-Subsystem sein.

2.2.7 URIs aktualisieren

Das Modell des Firmware-Aktualisierungsservers enthält einen Zustand, der als Firmware-Informationsliste bezeichnet wird. Er besteht aus Update-URIs und zugehörigen Firmware-IDs. Die Firmware-ID identifiziert ein Firmware-Subsystem auf dem Knoten, und der Aktualisierungs-URI-Zustandswert gibt den Ort der Aktualisierungen für diese Firmware an. Die DFU-Spezifikation mesh gibt an, wie diese Informationen verwendet werden sollen, um Download-URIs für die Verwendung im Firmware-Prüfung über HTTP Verfahren verwendet werden, was zu einem URI wie dem vorliegenden führen kann:

https://mesh.example.com/check-for-updates/check?cfwid=02FF10000203

2.2.8 Verkehrskonzepte

Die BLOB-Übertragungsmodelle sind so konzipiert, dass sie die Übertragung jeder Art von binären großen Objekten ermöglichen. In Version 1.1 der Bluetooth® Mesh Protokollspezifikation werden sie jedoch nur für die Verteilung von Firmware-Images an Aktualisierungsknoten verwendet. Ein Verständnis der allgemeinen Fähigkeiten der BLOB-Transfer-Modelle ist wichtig, um zu verstehen, wie die Geräte-Firmware-Update-Funktion funktioniert.  Abbildung 4

 

Abbildung 4: BLOB-Übertragungsmodell. Zeigt die Aufteilung eines Bildes in Blöcke und die Aufteilung der Blöcke in Chunks

2.2.8.1 BLOB ID

Allen BLOBs wird ein eindeutiger 8-Oktett-Bezeichner zugewiesen, der während der BLOB-Übertragungsvorgänge verwendet wird.

2.2.8.2 Blöcke und Chunks

Ein BLOB ist unterteilt in eine Reihe von Blöcken durch den BLOB Transfer Client aufgeteilt. Die Blockgröße wird anhand der Fähigkeiten des Ziel-BLOB-Transfer-Servers bestimmt, die vom Client abgefragt werden.

Blöcke sind unterteilt in Blöcke gleicher Größe unterteilt (mit Ausnahme des letzten Chunks, der kleiner als die anderen sein kann, wenn die Blockgröße kein exaktes Vielfaches der Chunk-Größe ist).

Jeder BLOB-Transferserver berechnet eine Reihe von Parametern, darunter die größte Chunk-Größe, die er verarbeiten kann. Bei der Berechnung der maximalen Chunk-Größe wird die Maximum Transmit Unit (MTU) des Clients und des Servers berücksichtigt. Bei der Initialisierung einer Übertragung berechnet der Client eine Chunk-Größe, die von dieser Übertragung verwendet werden soll und die alle Empfänger aufnehmen können.

Jedem Chunk wird eine 16-Bit Chunk-Nummer um ihn innerhalb seines übergeordneten Blocks zu identifizieren.

2.2.8.3 Übertragungsmodi

Es sind zwei BLOB-Übertragungsmodi definiert.

Im BLOB-Übertragungsmodus schiebensteuert der Client den Datenfluss. Ein Block nach dem anderen wird als eine Reihe von Chunks entweder an eine Unicast- oder eine Multicast-Adresse übertragen. Der Client fragt dann den Server ab, um festzustellen, welche Chunks empfangen wurden, und alle fehlenden Chunks werden erneut übertragen.

Im Pull BLOB Transfer Modussteuert der Server den Datenfluss. Dieser Modus ist in erster Linie für Low Power Nodes gedacht und dient der Übertragung eines BLOBs von einem Client an jeweils nur einen Server.

2.2.8.4 Verfolgung des Übertragungsstatus

Die Beschaffenheit eines Bluetooth® Mesh Netzes mit seinen Multipfad- und Multi-Hop-Nachrichten und dem System der erneuten Übertragungen zur Erhöhung der Zuverlässigkeit bedeutet, dass die Reihenfolge der Zustellung von Nachrichten in keiner Weise garantiert werden kann. Daher kann auch nicht garantiert werden, dass BLOB-Übertragungsnachrichten, die die Blöcke, in die ein BLOB unterteilt wurde, übermitteln, in einer bestimmten Reihenfolge ankommen. Der BLOB-Transfer-Client kann also Blöcke in beliebiger Reihenfolge auswählen und, nachdem er einen Block ausgewählt hat, seine Chunks in beliebiger Reihenfolge senden.

Ein Zustand namens "Missing Chunks", der zum BLOB Transfer Server-Modell gehört, bietet ein Mittel, mit dem der Status jedes Chunks im aktiven Block verfolgt werden kann. Der Status "Missing Chunks" enthält eine Bitmaske, die wie folgt verwendet wird: Jede Bitposition im Statuswert gibt den Status des entsprechenden Chunks mit dieser Chunk-Nummer an. So zeigt z. B. die Bitposition 7 den Status des Chunks Nummer 7 des aktuellen Blocks an. Ein Wert von 1 bedeutet, dass der Chunk nicht empfangen wurde, während ein Wert von 0 bedeutet, dass er empfangen wurde.

Ein BLOB-Transfer-Client ruft den Wert des Status "Missing Chunks" von den Servern ab, an die er überträgt, und verwendet ihn, um Chunks zu identifizieren, die nicht empfangen wurden und noch übertragen werden müssen oder die erneut übertragen werden müssen.

2.2.9 Sicherheit

Die Pflege aktueller Software ist eine allgemein anerkannte bewährte Praxis, um Computergeräte aller Art sicher zu halten. Der Erwerb und die Installation von Software birgt jedoch eigene Sicherheitsrisiken. Sie müssen sicher sein, dass Sie die Software aus einer vertrauenswürdigen Quelle beziehen und dass der heruntergeladene Code in keiner Weise manipuliert wurde und während des Herunterladens nicht manipuliert werden kann. Beachten Sie, dass die Verwendung von HTTPS auch verhindert, dass passive Schnüffler herausfinden können, welche Firmware-Versionen Sie derzeit in Ihrem Netzwerk einsetzen und auf welche Versionen Sie aktualisieren. Dies kann eine wertvolle Information sein, wenn der Angreifer über bestimmte Schwachstellen in bestimmten Firmware-Versionen Bescheid weiß.

Nach der DFU-Spezifikation muss der Implementierer entscheiden, wie er diese beiden Probleme angeht.

Die Prüfen auf aktualisierte Firmware Prozedur gibt dem Implementierer die Wahl, entweder die angegebene Firmware-Prüfung über HTTPS und Firmware-Abruf über HTTPS Verfahren oder einen implementierungsspezifischen Satz von Verfahren zu verwenden.

Die Firmware-Überprüfung über HTTPS und/oder Firmware-Abruf über HTTPS Verfahren erlauben nur die Verwendung des sicheren HTTPS-Protokolls. Das HTTPS-Protokoll stellt sicher, dass die Daten während des Fluges verschlüsselt werden, und erfordert, dass der Server über ein digitales Zertifikat verfügt, das es dem HTTP-Client ermöglicht, die behauptete Identität des Servers zu authentifizieren. Die Daten werden verschlüsselt und jeder Versuch, die zwischen den beiden Endpunkten übertragenen Daten zu manipulieren, wird erkannt.

Es wird empfohlen, die sichersten Optionen für die Prüfung und den Abruf von Firmware-Updates zu verwenden.

3. Schließen Sie

Die Bluetooth® Mesh Geräte-Firmware-Aktualisierung macht es einfach, Best Practices zu befolgen und die Geräte-Firmware auf Geräten, die als Knoten im Netzwerk fungieren, auf dem neuesten Stand zu halten. Es wurde entwickelt, um die Überwachung der Verfügbarkeit neuer Versionen von Anbietern automatisch zu machen und eine einfache und möglichst unauffällige Benutzererfahrung zu unterstützen.

Hilfe erhalten