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

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
  • Bit 0 (MSB): veraltet und von Seeker ignoriert.
  • Bit 1: 1, wenn der Seeker anfordert, dass der Provider die Kopplung initiieren soll, und diese Anfrage die BR/EDR-Adresse des Seekers enthält. Andernfalls 0.
  • Bit 2: 1, wenn der Seeker den Provider auffordert, den vorhandenen Namen zu melden. Andernfalls 0.
  • Bit 3: 1, wenn dies für das rückwirkende Schreiben des Kontoschlüssels gilt. Andernfalls 0.
  • Bit 4: 1, wenn der Sucher das BLE-Gerät unterstützt. Andernfalls 0.
  • Bit 5: 1, wenn der Sucher LE Audio unterstützt. Andernfalls 0.
  • Die Bits 6 und 7 sind für die zukünftige Verwendung reserviert und werden ignoriert.
variiert Obligatorisch
2–7 uint48 Entweder:
  • Aktuelle BLE-Adresse des Anbieters
  • Identitätsadresse des Anbieters
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:
  • Aktuelle BLE-Adresse des Anbieters
  • Identitätsadresse des Anbieters
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:
  • Bit 0 ist festgelegt: Länge der zusätzlichen Daten, weniger als 6
  • Bit 1 ist festgelegt: Daten-ID
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
  • Bit 0 (MSB): 1, wenn der Anbieter ein reines LE-Gerät ist, andernfalls 0. Wenn Bit 0 auf 1 gesetzt ist, geht der Seeker davon aus, dass Bit 1 auf 1 gesetzt ist.
  • Bit 1: 1, wenn der Anbieter LE-Bonding bevorzugt, andernfalls 0.
  • Bit 2: 1, wenn der Adresstyp der zweiten Adresse „Zufällig“ ist, 0, wenn „Öffentlich“.
  • Bit 3–7 sind für die zukünftige Verwendung reserviert und werden ignoriert.
variiert
2 uint8 Anzahl der Adressen des Anbieters
Gültige Werte sind 1 und 2.
variiert
3–8 oder
3–14
  • Die erste Adresse muss die Identitätsadresse des primären Geräts sein und muss koppelbar sein, wenn die BR/EDR-Kopplung bevorzugt wird.
  • Die zweite Adresse muss die Bondable-Adresse des sekundären Geräts sein, sofern das sekundäre Gerät verfügbar ist.
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:
  • 0x02 = Passkey des Suchenden
  • 0x03 = Passkey des Anbieters
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:

  1. 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.
  2. Prüfen Sie, ob der entschlüsselte Wert mit 0x04 oder 0xFF beginnt. Wenn nicht, ignorieren Sie diesen Schreibvorgang und beenden Sie den Vorgang.
    • Wenn der Wert 0x04 ist:
      • 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 0xFF ist:
      • 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.

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:
  • 0x01(personalisierter Name): utf8s

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:

  1. Generieren Sie 8 kryptografisch zufällige Byte für die Nonce.
  2. 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?

    1. Der AES-Schlüssel ist das freigegebene Secret aus Schritt 4 des Verfahrens.
    2. clearBlock[i] ist ein 16-Byte-Block, der bei data[i * 16] beginnt. Der letzte Block kann kleiner als 16 Byte sein.
  3. Führen Sie concat(encryptedBlock[0], encryptedBlock[1],...) aus, um die verschlüsselten Daten zu erstellen.

  4. Generieren Sie HMAC-SHA256 durch

    sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(nonce, encrypted_data)))))
    

    Bitte wo?

    1. K wird durch concat(shared_secret, 48-byte ZEROs) generiert. Das shared_secret stammt aus Schritt 4 des Verfahrens.
    2. opad ist ein äußeres Padding von 64 Byte, das aus wiederholten Byte mit dem Wert 0x5C besteht.
    3. ipad ist ein inneres Padding von 64 Byte, das aus wiederholten Byte mit dem Wert 0x36 besteht.
  5. 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:

  1. Prüfen Sie die Integrität der Daten, indem Sie die ersten 8 Byte von HMAC-SHA256 prüfen.
  2. 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?

    1. encryptedBlock[i] ist ein 16-Byte-Block, der bei encrypted_data[i * 16] beginnt. Der letzte Block kann kleiner als 16 Byte sein.
    2. Der AES-Schlüssel wird aus dem Handshake generiert oder identifiziert, z.B.
      1. 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.
      2. In Benennungsablauf 2 ist es der Kontoschlüssel.
  3. 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:
  • Personalisierten Namen lesen, 0x01
  • Personalisierter Name, siehe Tabelle 4.3.1
  • Informationen zu koordinierten Sets lesen, 0x02
  • Gerätefunktionen lesen, 0x03

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:
  • Personalisierter Name, siehe Tabelle 4.3.1
  • Informationen zu koordinierten Sets finden Sie in Tabelle 4.3.2.
  • Gerätefunktionen, siehe Tabelle 4.3.3
  • Fehlercode
    • 0x80 (Nicht unterstützte Anfrage)
    • 0x81 (Ungültige Anfrage)

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“
  • 0x00: linke Komponente
  • 0x01: rechte Komponente
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
  • Bits 0–15: reserviert, müssen auf 0 gesetzt werden

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
    1. Sucher: GATT-Benachrichtigung aktivieren
    2. Anbieter: GATT-Benachrichtigung registriert
    3. Sucher: GATT-Schreibanfrage, die Rohdaten enthalten nur Action ID
    4. Anbieter: GATT-Schreibantwort
    5. Anbieter: GATT Notify, die Rohdaten enthalten
      • Aktions-ID
      • Daten für die Aktions-ID
    6. Seeker: GATT-Benachrichtigung erhalten
  • Schnelles Pairing – Schreiben: Daten an den Anbieter schreiben
    1. Sucher: GATT-Schreibanfrage, die Rohdaten enthalten
      • Aktions-ID
      • Daten für die Aktions-ID
    2. Anbieter: GATT-Schreibantwort

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

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:

  1. Generieren Sie 8 kryptografisch zufällige Byte für die Nonce.
  2. 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?

    1. Der AES-Schlüssel ist das freigegebene Secret aus Schritt 4 des Verfahrens.
    2. clearBlock[i] ist ein 16-Byte-Block, der bei data[i * 16] beginnt. Der letzte Block kann kleiner als 16 Byte sein.
  3. Führen Sie concat(encryptedBlock[0], encryptedBlock[1],...) aus, um die verschlüsselten Daten zu erstellen.

  4. Generieren Sie HMAC-SHA256 durch

    sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(nonce, encrypted_data)))))
    

    Bitte wo?

    1. K wird durch concat(shared_secret, 48-byte ZEROs) generiert. Das shared_secret stammt aus Schritt 4 des Verfahrens.
    2. opad ist ein äußeres Padding von 64 Byte, das aus wiederholten Byte mit dem Wert 0x5C besteht.
    3. ipad ist ein inneres Padding von 64 Byte, das aus wiederholten Byte mit dem Wert 0x36 besteht.
  5. 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:

  1. Prüfen Sie die Integrität der Daten, indem Sie die ersten 8 Byte von HMAC-SHA256 prüfen.
  2. 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?

    1. encryptedBlock[i] ist ein 16-Byte-Block, der bei encrypted_data[i * 16] beginnt. Der letzte Block kann kleiner als 16 Byte sein.
    2. Der AES-Schlüssel wird aus dem Handshake generiert oder identifiziert, zum Beispiel:
      1. 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.
      2. In Benennungsablauf 2 ist es der Kontoschlüssel.
  3. 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:

  1. status-updating: wenn der Anbieter auf eine neue Firmware aktualisiert. Alternativ kann der Anbieter die Version der bereitgestellten Firmware zurückgeben.

  2. 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“.