Schnelles Pairing
Der Anbieter für Schnelles Pairing muss den Fast Pair-Dienst (UUID 0xFE2C) implementieren, der die folgenden Eigenschaften enthält.
| Name | Verschlüsselt | Berechtigungen | UUID | Obligatorisch? |
|---|---|---|---|---|
| Modell-ID | Nein | Lesen | FE2C1233-8366-4814-8EB0-01DE32100BEA |
Obligatorisch |
| Schlüsselbasierte Kopplung | Nein | Schreiben und benachrichtigen | FE2C1234-8366-4814-8EB0-01DE32100BEA |
Obligatorisch |
| Passkey | Nein | Schreiben und benachrichtigen | FE2C1235-8366-4814-8EB0-01DE32100BEA |
Obligatorisch |
| Kontoschlüssel | Nein | Schreiben | FE2C1236-8366-4814-8EB0-01DE32100BEA |
Obligatorisch |
| Zusätzliche Daten | Nein | Schreiben und benachrichtigen | FE2C1237-8366-4814-8EB0-01DE32100BEA |
*C1 |
| Nachrichtenstream-PSM | Ja | Lesen | FE2C1239-8366-4814-8EB0-01DE32100BEA |
*C2 |
| Zusätzlicher Passkey | Nein | Lesen, schreiben und benachrichtigen | FE2C123A-8366-4814-8EB0-01DE32100BEA |
*C3 |
| FP Device Action | Nein | Schreiben und benachrichtigen | FE2C123B-8366-4814-8EB0-01DE32100BEA |
*C4 |
Bedingt obligatorisch
- C1: Wenn der Anbieter die Benennungsfunktion unterstützt und das Merkmal FP Device Action nicht implementiert
- C2: wenn der Provider Nachrichtenstream: L2CAP unterstützt
- C3: wenn der Anbieter einen internen Kommunikationskanal zwischen Komponenten hat
- C4: Wenn der Anbieter während des Kopplungsvorgangs zusätzliche Informationen austauschen muss, z. B. ein Anbieter ohne internen Kommunikationskanal zwischen Komponenten.
Merkmal: Modell-ID
Mit diesem Merkmal kann der Seeker die Modell-ID bei Bedarf lesen, auch wenn das Gerät nicht im sichtbaren Modus wirbt. Es sollten immer die folgenden Daten zurückgegeben werden:
| Oktett | Datentyp | Beschreibung | Wert |
|---|---|---|---|
| 0–2 | uint24 |
Modell-ID | variiert |
Merkmal: Schlüsselbasiertes Pairing
Dieses Merkmal steuert das schlüsselbasierte Kopplungsverfahren. Bei diesem Verfahren wird ein gewisses Maß an Vertrauen hergestellt, indem überprüft wird, ob sowohl der Suchende als auch der Anbieter im Besitz eines vorinstallierten Schlüssels sind. Der Schlüssel ist jeweils unterschiedlich:
Fall 1: Der vorinstallierte Schlüssel basiert auf dem öffentlichen/privaten Schlüsselpaar für den Spoofing-Schutz und dem eigenen öffentlichen/privaten Schlüsselpaar des Suchers, das sich bei jedem Kopplungsversuch ändert.
- Der Anbieter befindet sich im Kopplungsmodus.
- Der Sucher überprüft, ob der Anbieter im Besitz des privaten Schlüssels für den Anti-Spoofing-Schutz ist.
Im Kopplungsmodus kann der Anbieter natürlich auch auf die übliche Weise koppeln, z. B. mit einem Gerät, das die schlüsselbasierte Kopplung von „Schnelles Pairing“ nicht unterstützt.
Fall 2: Der vorinstallierte Schlüssel ist einer der Kontoschlüssel.
- Der Anbieter befindet sich normalerweise nicht im Kopplungsmodus. Dies ist jedoch keine Voraussetzung. Der Anbieter sollte die Verwendung eines Kontoschlüssels auch im Kopplungsmodus unterstützen.
- Der Seeker und der Provider prüfen jeweils, ob der andere im Besitz des Kontoschlüssels ist.
Da beide Fälle bis auf den verwendeten vorinstallierten Schlüssel extrem ähnlich sind, werden sie im Verfahren kombiniert.
Datenformat
Informationen zur Verwendung der einzelnen Formate finden Sie in der Anleitung.
| Oktett | Datentyp | Beschreibung | Wert | Obligatorisch? |
|---|---|---|---|---|
| 0–15 | uint128 |
Verschlüsselte Anfrage | variiert | Obligatorisch |
| 16–79 | Öffentlicher Schlüssel | variiert | Optional |
Tabelle 1.1: Verschlüsselte Anfrage, die vom Sucher in das Merkmal geschrieben wird.
| Oktett | Datentyp | Beschreibung | Wert | Obligatorisch? |
|---|---|---|---|---|
| 0 | uint8 |
Mitteilungsart | 0x00 = Schlüsselbasierte Kopplungsanfrage |
Obligatorisch |
| 1 | uint8 |
Flags
|
variiert | Obligatorisch |
| 2–7 | uint48 |
Entweder:
|
variiert | Obligatorisch |
| 8–13 | uint48 |
BR/EDR-Adresse des Suchenden | variiert | Wird nur angezeigt, wenn Bit 1 oder 3 des Flags gesetzt ist |
| n – 15 | Zufälliger Wert (Salt) | variiert | Obligatorisch |
Tabelle 1.2.1: Rohe Anfrage (Typ 0x00). Decrypted from the Encrypted Request in Table 1.1.
| Oktett | Datentyp | Beschreibung | Wert | Obligatorisch? |
|---|---|---|---|---|
| 0 | uint8 |
Mitteilungsart | 0x10 = Aktionsanfrage |
Obligatorisch |
| 1 | uint8 |
Flags
|
variiert | Obligatorisch |
| 2–7 | uint48 |
Entweder:
|
variiert | Obligatorisch |
| 8 | uint8 |
Nachricht an die Gruppe schicken | variiert | Erforderlich, wenn Flags-Bit 0 festgelegt ist |
| 9 | uint8 |
Nachrichtencode | variiert | Erforderlich, wenn Flags-Bit 0 festgelegt ist |
| 10 | uint8 |
Abhängig von Flags:
|
variiert | Erforderlich, wenn Flags-Bit 0 oder 1 festgelegt ist |
| 11 – n | Zusätzliche Daten | variiert | Optional | |
| n – 15 | Zufälliger Wert (Salt) | variiert | Obligatorisch |
Tabelle 1.2.2: Raw Request (Typ 0x10). Decrypted from the Encrypted Request in Table 1.1.
| Oktett | Datentyp | Beschreibung | Wert |
|---|---|---|---|
| 0 | uint8 |
Mitteilungsart | 0x01 = Antwort auf schlüsselbasierte Kopplung |
| 1–6 | uint48 |
Öffentliche (BR/EDR-)Adresse des Anbieters | variiert |
| 7–15 | Zufälliger Wert (Salt) | variiert |
Tabelle 1.3: Rohantwort (Typ 0x01). Verschlüsselt, um die verschlüsselte Antwort in Tabelle 1.4 zu erzeugen.
| Oktett | Datentyp | Beschreibung | Wert |
|---|---|---|---|
| 0 | uint8 |
Mitteilungsart | 0x02 = Key-based Pairing Extended Response |
| 1 | uint8 |
Flags
|
variiert |
| 2 | uint8 |
Anzahl der Adressen des Anbieters Gültige Werte sind 1 und 2. |
variiert |
| 3–8 oder 3–14 |
|
variiert | |
| 9–15 oder 15 | Zufälliger Wert (Salt) | variiert |
Tabelle 1.3.2: Unformatierte Antwort (Typ 0x02). Verschlüsselt, um die verschlüsselte Antwort in Tabelle 1.4 zu erzeugen.
| Oktett | Datentyp | Beschreibung | Wert |
|---|---|---|---|
| 0–15 | uint128 |
Verschlüsselte Antwort | variiert |
Tabelle 1.4: Verschlüsselte Antwort, die vom Anbieter über eine Benachrichtigung an den Sucher gesendet wird
Merkmal: Passkey
Dieses Merkmal wird während des schlüsselbasierten Kopplungsverfahrens verwendet.
| Oktett | Datentyp | Beschreibung | Wert |
|---|---|---|---|
| 0–15 | uint128 |
Verschlüsselter Passkey-Block | variiert |
Tabelle 2.1: Verschlüsselter Passkey-Block. Informationen zur Verwendung findest du unter „Schlüsselbasierte Kopplung“.
| Oktett | Datentyp | Beschreibung | Wert |
|---|---|---|---|
| 0 | uint8 |
Mitteilungsart | Eine der Folgenden:
|
| 1–3 | unit32 |
6-stelliger Passkey | variiert |
| 4–15 | Zufälliger Wert (Salt) | variiert |
Tabelle 2.2: Rohblock für Passkeys. Entschlüsselte Version von Tabelle 2.1.
Merkmal: Kontoschlüssel
Nach dem Koppeln schreibt der Fast Pair Seeker einen Kontoschlüssel in den Fast Pair Provider.
| Oktett | Datentyp | Beschreibung | Wert |
|---|---|---|---|
| 0–15 | uint128 |
Kontoschlüssel (verschlüsselt) | variiert |
Wenn der Schnelles Pairing-Anbieter eine Schreibanfrage erhält, muss er Folgendes tun:
- Entschlüsseln Sie den Kontoschlüssel mit dem gemeinsamen Secret, das in Schritt 4 des Verfahrens generiert wurde.
- Für Dienstleister, die eine Kaution hinterlegen müssen (häufig):
- Prüfen Sie vor dem Entschlüsseln, ob der gemeinsame Schlüssel zum Entschlüsseln der Passkey-Anfrage aus Schritt 12 verwendet wurde. Wenn dieser Schritt mit diesem Secret nicht erfolgreich war, ignorieren Sie diesen Schreibvorgang und beenden Sie den Vorgang.
- An diesem Punkt wird das gemeinsame Secret (K im Verfahren) für diese Kopplung nicht mehr verwendet. Alle Anfragen, die mit diesem Schlüssel verschlüsselt eingehen, ohne dass der Vorgang neu gestartet wurde, sollten abgelehnt werden.
- Für Dienstleister, die eine Kaution hinterlegen müssen (häufig):
- Prüfen Sie, ob der entschlüsselte Wert mit
0x04oder0xFFbeginnt. Wenn nicht, ignorieren Sie diesen Schreibvorgang und beenden Sie den Vorgang.- Wenn der Wert
0x04ist:- Prüfen Sie, ob in der gespeicherten Kontoschlüsselliste Platz für den neuen Wert ist.
- Wenn nicht, löschen Sie den Wert, der am längsten nicht verwendet wurde, aus der Liste.
- Fügen Sie den neuen Wert der Liste hinzu.
- Wenn der Wert
0xFFist:- Behandle dies als temporäre Kopplungssitzung und führe keinen Vorgang aus.
- Das kann beim Ablauf Kontoschlüssel rückwirkend schreiben passieren.
- Speichern Sie den Schlüssel nicht und verwenden Sie ihn nicht in der Kontoschlüsselliste, bei der Verschlüsselung oder bei MAC-Berechnungen.
- Das Entfernen der Bindung wird durch ein funktionsspezifisches Ereignis oder eine Zeitüberschreitung ausgelöst. Für die LE-Audiofreigabe wird dringend empfohlen, die BLE-Bindung und den Linkschlüssel 10 Minuten nach dem Trennen der temporären Sitzung zu entfernen.
- Wenn der Wert
Kontoschlüssel in der Liste werden während der schlüsselbasierten Kopplung verwendet.
Merkmal: Zusätzliche Daten
ersetzt.Dieser Dienst muss das folgende Merkmal aufweisen.
| Merkmal des Fast Pair Service | Verschlüsselt | Berechtigungen | UUID |
|---|---|---|---|
| Daten | Nein | Schreiben und benachrichtigen | FE2C1237-8366-4814-8EB0-01DE32100BEA |
| Altes Merkmal des Dienstes „Schnelles Pairing“ (wird voraussichtlich am 1.1.2021 eingestellt) | Verschlüsselt | Berechtigungen | UUID |
|---|---|---|---|
| Daten | Nein | Schreiben und benachrichtigen | 0x1237 |
Bevor du in dieses Merkmal schreibst oder es benachrichtigst, muss ein Handshake über das Merkmal FE2C1234-8366-4814-8EB0-01DE32100BEA erfolgen, um ein gemeinsames Secret zu haben. AES-CTR wird verwendet, um Daten zu verschlüsseln, die über dieses Merkmal fließen. Der Algorithmus wird unten definiert. Dieser Modus ist sicherer für Daten, die über einen einzelnen 16-Byte-Block hinausgehen. HMAC-SHA256 wird verwendet, um die Datenintegrität zu gewährleisten, die ebenfalls unten definiert ist.
| Oktett | Beschreibung | Wert |
|---|---|---|
| 0–7 | Die ersten 8 Byte von HMAC-SHA256. | variiert |
| 8–15 | Nonce, die von der AES-CTR-Verschlüsselung verwendet wird. | variiert |
| 16 – var | Verschlüsselte Daten. | variiert |
Tabelle 3.1: Datenpaket, das vom Anbieter über eine Benachrichtigung an den Suchenden oder vom Suchenden über einen Schreibvorgang an den Anbieter gesendet wird.
| Oktett | Datentyp | Beschreibung | Wert |
|---|---|---|---|
| 0 – var | byte array |
Daten | variiert, decodiere sie gemäß der Daten-ID in Tabelle 1.2.2:
|
Tabelle 3.2: Rohdaten. Entschlüsselt aus den verschlüsselten Daten in Tabelle 3.1.
Wenn eine Benachrichtigung angefordert wird (z.B. Anforderung eines personalisierten Namens über Bit 2 in Tabelle 1.2.1), muss der Schnelles Pairing-Anbieter Folgendes tun:
- Generieren Sie 8 kryptografisch zufällige Byte für die Nonce.
Verschlüsseln Sie die Daten mit AES-CTR, wobei jeder 16-Byte-Block mit folgendem generiert wird:
encryptedBlock[i] = clearBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))Bitte wo?
- Der AES-Schlüssel ist das freigegebene Secret aus Schritt 4 des Verfahrens.
- clearBlock[i] ist ein 16-Byte-Block, der bei data[i * 16] beginnt. Der letzte Block kann kleiner als 16 Byte sein.
Führen Sie concat(encryptedBlock[0], encryptedBlock[1],...) aus, um die verschlüsselten Daten zu erstellen.
Generieren Sie HMAC-SHA256 durch
sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(nonce, encrypted_data)))))Bitte wo?
- K wird durch concat(shared_secret, 48-byte ZEROs) generiert. Das shared_secret stammt aus Schritt 4 des Verfahrens.
- opad ist ein äußeres Padding von 64 Byte, das aus wiederholten Byte mit dem Wert
0x5Cbesteht. - ipad ist ein inneres Padding von 64 Byte, das aus wiederholten Byte mit dem Wert
0x36besteht.
Nehmen Sie die ersten 8 Byte aus dem HMAC-SHA256 als Präfix des Datenpakets.
Wenn der Schnelles Pairing-Anbieter eine Schreibanfrage erhält, muss er Folgendes tun:
- Prüfen Sie die Integrität der Daten, indem Sie die ersten 8 Byte von HMAC-SHA256 prüfen.
Entschlüsseln Sie die verschlüsselten Daten mit AES-CTR, wobei jeder Block mit
clearBlock[i] = encryptedBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))Bitte wo?
- encryptedBlock[i] ist ein 16-Byte-Block, der bei encrypted_data[i * 16] beginnt. Der letzte Block kann kleiner als 16 Byte sein.
- Der AES-Schlüssel wird aus dem Handshake generiert oder identifiziert, z.B.
- In Benennungsablauf 1 stammt er von ECDH und wird für diese Kopplung nicht noch einmal verwendet. Alle Anfragen, die mit diesem Schlüssel verschlüsselt eingehen, ohne dass das Verfahren neu gestartet wurde, sollten abgelehnt werden.
- In Benennungsablauf 2 ist es der Kontoschlüssel.
Führen Sie concat(clearBlock[0], clearBlock[1],...) aus, um die Rohdaten zu erstellen.
Merkmal: Nachrichtenstream-PSM
Siehe BLE-Gerät: Nachrichtenstream-PSM
Merkmal: Zusätzlicher Passkey
Siehe BLE-Gerät: Zusätzlicher Passkey.
Merkmal: FP-Geräteaktion
| Merkmal des Fast Pair Service | Verschlüsselt | Berechtigungen | UUID |
|---|---|---|---|
| FP-Geräteaktion | Nein | Schreiben und benachrichtigen | FE2C123B-8366-4814-8EB0-01DE32100BEA |
| Oktett | Beschreibung | Wert |
|---|---|---|
| 0–7 | Die ersten 8 Byte von HMAC-SHA256. | variiert |
| 8–15 | Nonce, die von der AES-CTR-Verschlüsselung verwendet wird. | variiert |
| 16 – var | Verschlüsselte Daten. | variiert |
Tabelle 4.1: Datenpaket, das vom Anbieter als Benachrichtigung an den Suchenden oder vom Suchenden als Schreibvorgang an den Anbieter gesendet wird.
| Oktett | Datentyp | Beschreibung | Wert |
|---|---|---|---|
| 0 – var | byte array |
Aktionsanfrage | Eine der Folgenden:
|
Tabelle 4.2: Rohdaten. Entschlüsselt aus den verschlüsselten Daten in Tabelle 4.1, die vom Suchenden als Schreibvorgang an den Anbieter gesendet wurden.
| Oktett | Datentyp | Beschreibung | Wert |
|---|---|---|---|
| 0 – var | byte array |
Aktionsantwort | Eine der Folgenden:
|
Tabelle 4.3: Rohdaten Entschlüsselt aus den verschlüsselten Daten in Tabelle 4.1, die vom Anbieter als Benachrichtigung an den Suchenden gesendet wurden.
| Oktett | Datentyp | Beschreibung | Wert |
|---|---|---|---|
| 0 | uint8 |
Aktions-ID | 0x01 |
| 1 – var | utf8s |
Personalisierter Name | variiert |
Tabelle 4.3.1: Personalisiertes Namensformat
| Oktett | Datentyp | Beschreibung | Wert |
|---|---|---|---|
| 0 | uint8 |
Aktions-ID | 0x02 |
| 1 | uint8 |
Mitgliedstyp für koordinierte Sets für „Schnelles Pairing“ |
|
| 2 | uint8 |
Größe des koordinierten Sets | Anzahl der Komponenten |
| 3 | uint8 |
Schlüsseltyp für die Identitätsauflösung festlegen | 0x01 (Nur-Text-SIRK) |
| 4–19 | uint128 |
Schlüsselwert für die Identitätsauflösung festlegen | 16-Byte-Daten, siehe Coordinated Set Identification Service |
Tabelle 4.3.2: Format für Informationen zu koordinierten Sets
| Oktett | Datentyp | Beschreibung | Wert |
|---|---|---|---|
| 0 | uint8 |
Aktions-ID | 0x03 |
| 1–2 | uint16 |
Gerätefunktionen |
|
Tabelle 4.3.3: Format für Gerätefunktionen
Schnelles Pairing – Vorgänge
Für dieses Merkmal sind zwei Hauptvorgänge definiert:
- Schnelles Pairing – Lesen: Daten vom Anbieter lesen
- Sucher: GATT-Benachrichtigung aktivieren
- Anbieter: GATT-Benachrichtigung registriert
- Sucher: GATT-Schreibanfrage, die Rohdaten enthalten nur
Action ID - Anbieter: GATT-Schreibantwort
- Anbieter: GATT Notify, die Rohdaten enthalten
- Aktions-ID
- Daten für die Aktions-ID
- Seeker: GATT-Benachrichtigung erhalten
- Schnelles Pairing – Schreiben: Daten an den Anbieter schreiben
- Sucher: GATT-Schreibanfrage, die Rohdaten enthalten
- Aktions-ID
- Daten für die Aktions-ID
- Anbieter: GATT-Schreibantwort
- Sucher: GATT-Schreibanfrage, die Rohdaten enthalten
Aktions-ID für das Lesen unterstützter Aktionen für „Schnelles Pairing“
- 0x01 (personalisierter Name)
- 0x02 (Informationen zum koordinierten Set)
- 0x03 (Gerätefunktionen)
Fast Pair Write Supported Action ID
- 0x01 (personalisierter Name)
- Bei allen anderen Befehlen, bei denen eine Schreibanfrage eine Aktions-ID gefolgt von Daten enthält, muss der Anbieter mit einer GATT-Benachrichtigung antworten, die „Ungültige Anfrage“ (0x81) enthält, wie in Tabelle 4.3 beschrieben.
Wenn der Provider eine Aktions-ID nicht versteht, antwortet er mit einer GATT-Benachrichtigung, die „Nicht unterstützte Anfrage“ (0x80) enthält, wie in Tabelle 4.3 beschrieben.
Krypto-Algorithmus
.Wenn eine Benachrichtigung angefordert wird, muss der Schnelles Pairing-Anbieter Folgendes tun:
- Generieren Sie 8 kryptografisch zufällige Byte für die Nonce.
Verschlüsseln Sie die Daten mit AES-CTR, wobei jeder 16-Byte-Block mit folgendem generiert wird:
encryptedBlock[i] = clearBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))Bitte wo?
- Der AES-Schlüssel ist das freigegebene Secret aus Schritt 4 des Verfahrens.
clearBlock[i]ist ein 16-Byte-Block, der beidata[i * 16]beginnt. Der letzte Block kann kleiner als 16 Byte sein.
Führen Sie
concat(encryptedBlock[0], encryptedBlock[1],...)aus, um die verschlüsselten Daten zu erstellen.Generieren Sie HMAC-SHA256 durch
sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(nonce, encrypted_data)))))Bitte wo?
- K wird durch concat(shared_secret, 48-byte ZEROs) generiert. Das shared_secret stammt aus Schritt 4 des Verfahrens.
- opad ist ein äußeres Padding von 64 Byte, das aus wiederholten Byte mit dem Wert
0x5Cbesteht. - ipad ist ein inneres Padding von 64 Byte, das aus wiederholten Byte mit dem Wert
0x36besteht.
Nehmen Sie die ersten 8 Byte aus dem HMAC-SHA256 als Präfix des Datenpakets.
Wenn der Schnelles Pairing-Anbieter eine Schreibanfrage erhält, muss er Folgendes tun:
- Prüfen Sie die Integrität der Daten, indem Sie die ersten 8 Byte von HMAC-SHA256 prüfen.
Entschlüsseln Sie die verschlüsselten Daten mit AES-CTR, wobei jeder Block mit
clearBlock[i] = encryptedBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))Bitte wo?
encryptedBlock[i]ist ein 16-Byte-Block, der beiencrypted_data[i * 16]beginnt. Der letzte Block kann kleiner als 16 Byte sein.- Der AES-Schlüssel wird aus dem Handshake generiert oder identifiziert, zum Beispiel:
- In Benennungsablauf 1 stammt er von ECDH und wird für diese Kopplung nicht noch einmal verwendet. Alle Anfragen, die mit diesem Schlüssel verschlüsselt eingehen, ohne dass das Verfahren neu gestartet wurde, sollten abgelehnt werden.
- In Benennungsablauf 2 ist es der Kontoschlüssel.
Führen Sie
concat(clearBlock[0], clearBlock[1],...)aus, um die Rohdaten zu erstellen.
Device Information Service
Der Schnelles Pairing-Anbieter sollte auch den Device Information Service (UUID 0x180A) unterstützen. Der Schnelles Pairing-Sucher verwendet die folgenden Merkmale.
| Name | Verschlüsselt | Berechtigungen | UUID |
|---|---|---|---|
| Firmware-Version | Nein | Lesen | 0x2A26 |
Merkmal: Firmware-Version
Mit diesem Merkmal kann der Seeker die Firmwareversion des Providers nach Bedarf lesen. Es sollten immer die folgenden Daten zurückgegeben werden:
| Oktett | Datentyp | Beschreibung | Wert |
|---|---|---|---|
| 0 – var | utf8s |
Firmware-Revisionscode | variiert |
Sie sollte in einem einzelnen UTF-8-String gekapselt sein, auch wenn es mehr als eine Firmware (z. B. 3 Firmwares für den linken Kopfhörer, den rechten Kopfhörer und das Case) auf dem Anbieter gibt. Der Anbieter kann auch die spezifischen Strings für Sonderfälle zurückgeben:
status-updating: wenn der Anbieter auf eine neue Firmware aktualisiert. Alternativ kann der Anbieter die Version der bereitgestellten Firmware zurückgeben.
status-abnormal: wenn der Anbieter einen abnormalen Status hat. Beispielsweise ist eine Fehlfunktion aufgetreten, weil das Firmware-Update fehlgeschlagen ist. Dieser Wert führt dazu, dass der Seeker eine Meldung anzeigt, die den Nutzer darüber informiert, dass er jetzt aktualisiert werden muss.
Der Anbieter sollte den Zugriff auf das Merkmal „Firmware Revision“ einschränken, um das Tracking von Geräten zu verhindern. Vorgeschlagene Einschränkungen:
- Verbundene Geräte sollten jederzeit Zugriff haben
- jedes Gerät sollte Zugriff haben, wenn der Anbieter sichtbar ist
Wenn der Anbieter „Hub finden“ unterstützt, ist eine zusätzliche Implementierung erforderlich. Weitere Informationen findest du unter Firmware-Updates für „Mein Gerät finden“.