Dispositivo Bluetooth Low Energy (BLE)

L'implementazione del servizio Google Fast Pair (GFPS) per i dispositivi BLE è compatibile con la specifica Bluetooth Core v4.2 o versioni successive.

Il seguente addendum alla specifica Accoppiamento rapido consentirà il supporto per i dispositivi solo Low Energy (LE) e Low Energy Audio (LEA) in GFPS.

Livelli di conformità

Le parole chiave "shall", "must", "will", "should", "may" e "can" menzionate nella specifica sono spiegate di seguito:

Termine Descrizione
shall è obbligatorio per: utilizzato per definire i requisiti.
must viene utilizzato per esprimere:
una conseguenza naturale di un requisito obbligatorio precedentemente indicato
OPPURE
un'affermazione di fatto indiscutibile (sempre vera indipendentemente dalle circostanze).
will è vero che: utilizzato solo nelle affermazioni di fatto.
should è consigliabile: utilizzato per indicare che tra diverse possibilità una è consigliata in quanto particolarmente adatta, ma non obbligatoria.
maggio è autorizzato a: utilizzato per consentire le opzioni.
possiamo è in grado di: utilizzato per mettere in relazione un'affermazione in modo causale.

Caratteristica di accoppiamento basato su chiave

Messaggio dal richiedente al fornitore

La richiesta non elaborata type 0x00 della caratteristica di accoppiamento basato su chiave utilizza il bit 4 per indicare se il richiedente supporta la specifica del dispositivo BLE e utilizza il bit 5 per indicare se il richiedente supporta LE Audio.

Ottetto Tipo di dati Descrizione Valore Obbligatorio?
0 uint8 Tipo di messaggio 0x00 = Richiesta di accoppiamento basata su chiave Obbligatorio
1 uint8 Flag
  • Bit 0 (MSB): deprecato e ignorato da Seeker.
  • Bit 1: 1 se il richiedente chiede al fornitore di avviare l'associazione e questa richiesta contiene l'indirizzo BR/EDR del richiedente. 0 in caso contrario.
  • Bit 2: 1 se il richiedente chiede al fornitore di comunicare il nome esistente. 0 in caso contrario.
  • Bit 3: 1 se si tratta di scrittura retroattiva della chiave account. 0 in caso contrario.
  • Bit 4: 1 se il dispositivo di ricerca supporta la specifica del dispositivo BLE. 0 in caso contrario.
  • Bit 5: 1 se il dispositivo di ricerca supporta LE Audio. 0 in caso contrario.
  • I bit 6-7 sono riservati per un uso futuro e devono essere ignorati.
varia Obbligatorio
2 - 7 uint48 Scegli una delle opzioni seguenti:
  • Indirizzo BLE attuale del fornitore
  • Indirizzo dell'identità del fornitore
varia Obbligatorio
8 - 13 uint48 Indirizzo BR/EDR del richiedente varia Presente solo se è impostato il bit 1 o 3 dei flag
n - 15 Valore casuale (salt) varia Obbligatorio

Messaggio dal fornitore al richiedente

Quando il bit 4 della richiesta è impostato, il nuovo messaggio di risposta type 0x02 per la caratteristica di accoppiamento basato su chiave può essere utilizzato per fornire opzioni di accoppiamento aggiuntive al richiedente.

Ottetto Tipo di dati Descrizione Valore
0 uint8 Tipo di messaggio 0x02 = Key-based Pairing Extended Response
1 uint8 Flag
  • Bit 0 (MSB): 1 se il fornitore è un dispositivo solo LE, 0 altrimenti. Se il bit 0 è impostato su 1, il cercatore presuppone che il bit 1 sia impostato su 1.
  • Bit 1: 1 se il fornitore preferisce l'associazione LE, 0 altrimenti.
  • Bit 2: 1 se il tipo di indirizzo del secondo indirizzo è casuale, 0 se è pubblico.
  • I bit da 3 a 7 sono riservati per uso futuro e devono essere ignorati.
varia
2 uint8 Numero di indirizzi del fornitore
(nella versione attuale, il numero è 1 o 2, perché dobbiamo modificare la modalità di cifratura a blocchi in AES-CTR se il numero è >= 3)
varia
3 - 8 o
3 - 14
  • Il primo indirizzo deve essere l'indirizzo dell'identità del dispositivo principale e deve essere associabile se è preferita l'associazione BR/EDR
  • Il secondo indirizzo deve essere l'indirizzo obbligazionario del secondario, se disponibile
varia
9 - 15 o 15 Valore casuale (salt) varia

Un fornitore che supporta la specifica del dispositivo BLE deve leggere il bit 4 e il bit 5 per comprendere le funzionalità del cercatore

  • Quando il bit 4 è 0, il fornitore deve ignorare il bit 5 e rispondere con il formato type 0x01
  • Quando il bit 4 è 1,
    • Per il fornitore solo LE, deve rispondere con type 0x02 per indicare la preferenza di accoppiamento LE.
    • Per il fornitore in modalità doppia, può rispondere con type 0x02 per indicare la preferenza di accoppiamento BR/EDR o LE.
  • Per i casi di provider in modalità doppia LE Audio (LEA), consulta Esempio: accoppiamento con un provider in modalità doppia LEA come riferimento.

Caratteristica PSM (Protocol Service Multiplexor) del flusso di messaggi

Per supportare lo stream di messaggi per i dispositivi BLE, l'accoppiamento rapido stabilirà e manterrà un canale L2CAP BLE per l'invio e la ricezione di messaggi. Accoppiamento rapido Il server L2CAP deve implementare il controllo del flusso basato sul credito LE.

Questa caratteristica consente al richiedente di leggere il valore PSM e quindi stabilire una connessione L2CAP sicura in base al valore PSM.

Caratteristica del servizio di accoppiamento rapido Criptato Autorizzazioni UUID
PSM Message Stream Lettura FE2C1239-8366-4814-8EB0-01DE32100BEA
Ottetto Tipo di dati Descrizione Valore
0 uint8 Stato
  • 0x00 = Sconosciuto. FP Seeker riproverà più volte
  • 0x01 = Pronto per la connessione
  • 0x02 = Non disponibile. FP Seeker non utilizzerà questo componente per la connessione questa volta
varia
1 - 2 uint16 Il valore PSM deve essere compreso tra 0x80 e 0xFF varia

Nota:per TWS esistono due componenti: primario e secondario. Il ruolo di questi componenti è intercambiabile in determinate condizioni. Supponendo che A sia il componente principale e B sia il componente secondario, a causa dello scaricamento della batteria del componente A , il componente B deve assumere il ruolo di componente principale e questo scenario è chiamato role switch.

Dopo role switch, se il fornitore non è in grado di gestire il flusso di messaggi di accoppiamento rapido, disconnette in modo proattivo la connessione L2CAP esistente. Il richiedente dell'accoppiamento rapido può quindi ristabilire la connessione del flusso di messaggi L2CAP con il nuovo componente principale.

Caratteristica aggiuntiva della passkey

Questa caratteristica serve a fornire protezione MITM sui componenti aggiuntivi.

CSIS Fake Member MITM Protection

L'accoppiamento rapido richiede la protezione MITM nell'ambito della procedura di accoppiamento. Poiché CSIS non fornisce protezione MITM, l'attuale progettazione di FP per più componenti deve essere estesa per fornire protezione MITM sui componenti aggiuntivi.

Definizione della caratteristica

Caratteristica del servizio di accoppiamento rapido Criptato Autorizzazione UUID
Passkey aggiuntiva Read,write,notify FE2C123A-8366-4814-8EB0-01DE32100BEA

Messaggi

Il formato del messaggio viene applicato alle operazioni di lettura, scrittura e notifica.

Formato dei dati criptati

I dati criptati vengono inviati utilizzando la connessione GATT dell'accoppiamento rapido.

Ottetto Tipo di dati Descrizione Valore
0-15 uint128 Blocco passkey aggiuntive criptate varia
Formato dei dati non elaborati

Dopo aver decriptato i dati criptati utilizzando il segreto condiviso, il formato è il seguente

Ottetto Tipo di dati Descrizione Valore
0 uint8 Tipo di messaggio uno tra
  • 0x00 = Passkey del richiedente
  • 0x01 = Passkey del fornitore
1-3 uint24 Passkey di 6 cifre varia
4-9 uint48 Indirizzo del componente di accoppiamento di destinazione varia
10 uint8 Codice di stato, utilizzato solo dall'operazione di lettura Uno tra
  • 0x00 = Success
  • 0x01 = In attesa. FP Seeker retry until timeout
  • 0x02 = Errore. FP Seeker stop retry
11-15 Valore casuale (salt) varia

Il componente principale (il primo accoppiato) è il ponte tra il richiedente dell'accoppiamento rapido e i componenti di accoppiamento aggiuntivi. La caratteristica deve seguire le linee guida:

  • Quando riceve una richiesta di scrittura da Fast Pair Seeker, il fornitore deve
    • Imposta l'indirizzo del componente che viene accoppiato
    • Inviare la passkey al componente da accoppiare
    • Imposta il codice di stato su In attesa, 0x01
  • Quando riceve una richiesta di lettura prima di ricevere la passkey dal componente da accoppiare, il fornitore deve restituire un messaggio con
    • Passkey, qualsiasi valore
    • L'indirizzo del componente da collegare.
    • Codice di stato In attesa, 0x01
  • Prima che il fornitore invii la notifica al richiedente dell'accoppiamento rapido, imposta il risultato per la richiesta di lettura con
    • Passkey del componente da accoppiare
    • L'indirizzo del componente da collegare.
    • Codice di stato riuscito, 0x00
  • Se si verifica un errore non recuperabile sul lato del provider, imposta il risultato
    • Passkey, qualsiasi valore
    • L'indirizzo del componente da collegare.
    • Codice di stato di errore, 0x02

Per maggiori dettagli, vedi il diagramma MITM 1 e il diagramma MITM 2.

Requisiti dei dispositivi LE

LE Advertising

Per la modalità rilevabile o non rilevabile, il Fornitore deve utilizzare RPA per pubblicizzare i dati Fast Pair.

Funzionalità di bonding

Per i dispositivi compatibili con LE, il cercatore deve creare un accoppiamento con la connessione LE esistente. Dopo aver superato la verifica dell'accoppiamento basato sulla chiave di accoppiamento rapido, il fornitore deve consentire l'associazione con RPA e impostare la funzionalità di I/O su DisplayYesNo per la verifica del passcode di accoppiamento rapido.

Requisiti dei dispositivi LEA

LEA Advertising

Per i dispositivi dual mode: Per la modalità rilevabile, il fornitore deve pubblicizzare i dati dell'accoppiamento rapido con l'indirizzo identità. Per la modalità non rilevabile, il fornitore deve pubblicizzare i dati dell'accoppiamento rapido con RPA. È vivamente consigliato di utilizzare la pubblicità legacy (BT 4.2) per supportare i dispositivi meno recenti per la compatibilità con le versioni precedenti. È necessario modificare l'IRK ogni volta che vengono ripristinati i dati di fabbrica del dispositivo.

Per i dispositivi non a doppia modalità: Per la modalità rilevabile o non rilevabile, il Fornitore deve utilizzare la pubblicità estesa (BT 5.0) con RPA per pubblicizzare i dati Fast Pair.

La pubblicità connettibile LE contenente i dati del servizio FP deve includere l'UUID CAS in conformità con il requisito del profilo dell'adattatore Bluetooth (BAP 1.0.1) e del profilo audio comune.

Il fornitore può indicare la funzionalità LEA includendo l'UUID CAS (0x1853) nei dati di servizio (tipo di annuncio 0x16) o negli UUID della classe di servizio a 16 bit (tipo di annuncio 0x02 o 0x03), indipendentemente dalla modalità rilevabile.

Per la pubblicità non rilevabile, se non è disponibile spazio sufficiente nella pubblicità legacy a causa dell'inclusione di dati della batteria e SASS, è obbligatorio includere l'UUID CAS nella risposta alla scansione.

Funzionalità di associazione LEA

Il dispositivo di ricerca deve creare un accoppiamento con la connessione LE esistente. Dopo aver superato la verifica dell'accoppiamento basato sulla chiave di accoppiamento rapido, il fornitore dual mode deve consentire l'associazione con l'indirizzo dell'identità e l'RPA, mentre il fornitore non dual mode deve consentire l'associazione con l'RPA e impostare la funzionalità di I/O su DisplayYesNo per la verifica del passcode di accoppiamento rapido.

Canale di comunicazione interno tra i componenti

La connessione GATT esistente viene mantenuta per eseguire la protezione MITM sui componenti aggiuntivi. Il componente accoppiato principale gestisce la distribuzione dei messaggi tra Fast Pair Seeker e i suoi componenti rimanenti.

La comunicazione interna viene utilizzata per Initial Pair e Subsequent Pair

  • Quando la procedura di accoppiamento basata su chiave viene eseguita sul componente principale, quest'ultimo invia un messaggio per modificare la funzionalità di I/O dei componenti rimanenti.
  • Al termine dell'accoppiamento rapido, il componente principale invia un messaggio per reimpostare la funzionalità di I/O dei componenti rimanenti
  • Quando viene eseguita la procedura per la passkey aggiuntiva, il componente principale deve gestire le consegne delle passkey tra Fast Pair Seeker e i suoi componenti rimanenti

È ora di modificare la funzionalità di I/O

  • Modifica la funzionalità di I/O in DisplayYesNo quando la procedura di accoppiamento basata su chiave è stata superata
    • Se il dispositivo ha più componenti, tutti devono essere impostati su DisplayYesNo
    • Un'eccezione per cui il Fornitore non deve modificare la funzionalità IO in DisplayYesNo è Retroactive Pair, il cui bit 3 della richiesta di accoppiamento basato su chiave è impostato su 1. Vedi Messaggio dal richiedente al fornitore
  • Modifica la funzionalità di I/O all'impostazione predefinita
    • Accoppiamento iniziale
      • Se la connessione LE viene interrotta, termina la sessione di Accoppiamento rapido
      • Dopo l'associazione del dispositivo principale, se non viene inviata un'ulteriore richiesta di scrittura della passkey entro 15 secondi, termina la sessione di accoppiamento rapido
      • Dopo aver ricevuto un'ulteriore richiesta di scrittura della passkey, se il componente da accoppiare non viene accoppiato entro 15 secondi, termina la sessione di accoppiamento rapido
      • Dopo che tutti i componenti sono stati accoppiati, se non viene inviata alcuna richiesta di scrittura della chiave dell'account entro 15 secondi, termina la sessione di accoppiamento rapido
      • Dopo aver ricevuto la richiesta di scrittura della chiave dell'account, imposta il timeout di 15 secondi per terminare la sessione di accoppiamento rapido
    • Accoppiamento successivo
      • Se la connessione LE viene interrotta, termina la sessione di Accoppiamento rapido
      • Dopo l'associazione della chiave primaria, se non viene inviata un'ulteriore richiesta di scrittura della passkey entro 15 secondi, termina la sessione di accoppiamento rapido
      • Dopo aver ricevuto un'ulteriore richiesta di scrittura della passkey, se il componente da accoppiare non viene accoppiato entro 15 secondi, termina la sessione di accoppiamento rapido
      • Quando tutti i componenti sono accoppiati, termina la sessione di Accoppiamento rapido.

Nascondi indicazione UI

Quando le cuffie non sono pronte per l'accoppiamento, il Fornitore deve utilizzare type 0b0010 per impostare l'indicazione dell'interfaccia utente nascosta per i dati della chiave dell'account per comunicare al Richiedente di non mostrare l'interfaccia utente di accoppiamento successiva (vedi Payload pubblicitario: dati dell'account Fast Pair).

Requisiti dei dispositivi LE Audio

Requisiti Bluetooth

Consulta Android, LE Audio headset recommendations.

Supporto CTKD

Per i dispositivi dual mode, CTKD da LE a BR/EDR è obbligatorio e in linea con i requisiti BAP.

Annuncio del target

Un dispositivo periferico deve utilizzare l'annuncio mirato per richiedere una connessione da un dispositivo centrale accoppiato. Gli annunci mirati sono definiti in BAP e CAP per la gestione delle connessioni in base alla tabella 8.4 (p. 48/58) di CAP 1.0.

Supporto del server GATT EATT

EATT consente al dispositivo centrale di inviare più transazioni GATT in parallelo quando il dispositivo è accoppiato. Per il dispositivo che supporta CSIP, le prestazioni della connessione del profilo aumenteranno e presto inizierà la procedura di bonding CSIP per gli altri auricolari.

Se il Provider non è un singolo dispositivo, ma un insieme coordinato con implementazione CSIP, per ridurre il numero di volte in cui viene eseguita la Service Discovery e velocizzare la connessione, il Provider deve implementare la memorizzazione nella cache GATT definita in Bluetooth 5.1.

Requisiti dell'accoppiamento rapido

LE Advertising

Per la modalità rilevabile o non rilevabile, se il dispositivo ha più componenti, i dati di Accoppiamento Rapido devono essere pubblicizzati dal componente principale. Se il dispositivo non è pronto per l'accoppiamento successivo, il componente secondario può pubblicare dati di Accoppiamento Rapido per funzionalità estese. Vedi Nascondere l'indicazione della UI.

Visibilità del servizio GATT

Il database GATT deve essere uguale per tutte le connessioni GATT di trasporto LE. Il servizio LE Audio (0x184E) deve essere incluso nel database GATT della connessione di accoppiamento rapido.

Esempio: accoppiamento con un fornitore LEA dual mode

Scenario 1: quando il Seeker non supporta LEA

Il fornitore deve essere compatibile con le versioni precedenti del richiedente che non supporta LEA.

Componenti
  • Provider: A2DP/HFP/LEA
  • Seeker: A2DP/HFP
Comportamento previsto per l'accoppiamento iniziale / successivo
  • Il fornitore pubblicizza i dati del servizio Accoppiamento rapido (0xFE2C) con l'indirizzo di identità (iniziale) o RPA (successivo).
    • Utilizzare la pubblicità legacy
  • Il richiedente riceve la pubblicità del fornitore con l'indirizzo dell'identità per l'accoppiamento iniziale o RPA per l'accoppiamento successivo
  • Il richiedente invia la richiesta di accoppiamento basato su chiave
    • Il bit del flag 5 della richiesta di accoppiamento basato su chiave è impostato su 0
  • Il fornitore invia la risposta all'accoppiamento basato su chiave con l'indirizzo pubblico in uno dei seguenti formati:
    • Se viene utilizzato il tipo di messaggio 0x01, l'indirizzo deve essere pubblico
    • Se viene utilizzato il tipo di messaggio 0x02
      • Il bit 0 deve essere 0
      • Bit-1 deve essere 0
      • L'indirizzo deve essere pubblico
  • Il Seeker crea un legame con il trasporto BR/EDR
    • La funzionalità IO è impostata su DisplayYesNo per BR/EDR
  • Il richiedente e il fornitore eseguono la procedura di verifica della passkey dell'accoppiamento rapido

Scenario 2: quando il tracker supporta LEA

Componenti
  • Fornitore
    • Supportare A2DP/HFP/LEA
    • Singolo componente
  • Seeker
    • SupportA2DP/HFP/LEA
Comportamento previsto per l'accoppiamento iniziale / successivo
  • Il fornitore pubblicizza i dati del servizio Accoppiamento rapido (0xFE2C) con l'indirizzo di identità (iniziale) o RPA (successivo).
    • Utilizzare la pubblicità legacy
  • Il richiedente invia la richiesta di accoppiamento basato su chiave
    • Il bit 5 del flag della richiesta di accoppiamento basato su chiave è impostato su 1
  • Il fornitore invia la risposta all'accoppiamento basato su chiavi con il tipo di messaggio 0x02
    • Il bit 0 deve essere 0
    • Bit-1 deve essere 1
    • L'indirizzo è Indirizzo identità
  • Il Seeker crea un accoppiamento con la connessione LE esistente sul trasporto LE
    • La direzione CTKD è da LE a BR/EDR
    • La funzionalità di input/output è impostata su DisplayYesNo per LE
  • Il richiedente e il fornitore eseguono la procedura di verifica della passkey dell'accoppiamento rapido

Scenario 3: quando il richiedente supporta l'LEA e il CSIP è coinvolto

Componenti
  • Fornitore
    • Supportare A2DP/HFP/LEA
    • Componenti multipli
      • Il componente principale è BR/EDR/LE
      • Il componente secondario è solo LE
  • Seeker
    • Supportare A2DP/HFP/LEA
Comportamento previsto per l'accoppiamento iniziale / successivo
  • Il componente principale annuncia i dati del servizio di accoppiamento rapido (0xFE2C) con l'indirizzo Identity (iniziale) o RPA (successivo).
    • Utilizzare la pubblicità legacy
  • Il richiedente invia la richiesta di accoppiamento basato su chiave al componente principale
    • Il bit 5 del flag della richiesta di accoppiamento basato su chiave è impostato su 1
  • Il componente principale invia la risposta all'accoppiamento basato su chiave con il tipo di messaggio 0x02
    • Il bit 0 deve essere 0
    • Bit-1 deve essere 1
    • Gli indirizzi sono i seguenti:
      • Il primo indirizzo è l'indirizzo identità del componente principale
      • Il secondo indirizzo è l'indirizzo associabile per il componente secondario, il secondo componente utilizza anche questo indirizzo per la pubblicità CSIP
  • Il cercatore crea un accoppiamento con il componente principale sulla connessione LE esistente
    • La direzione CTKD è da LE a BR/EDR
    • La funzionalità di input/output è impostata su DisplayYesNo per LE
  • Il richiedente crea un legame con il componente secondario il cui indirizzo proviene dalla risposta estesa dell'accoppiamento basato su chiave
    • La funzionalità di I/O deve essere DisplayYesNo, altrimenti rifiuta la richiesta di accoppiamento
  • Il richiedente e il fornitore eseguono la procedura di protezione MITM per l'accoppiamento del componente secondario. Il fornitore deve implementare entrambi gli scenari
  • Il componente Seeker attende di essere accoppiato al componente secondario

Diagramma sequenziale per l'attacco MITM

Questa sessione descrive la sequenza della procedura di protezione MITM.

Ricevere la passkey dal componente in fase di accoppiamento tramite notifica

Ottieni la passkey dal componente associato tramite lettura

Problema noto

FP per LEA è stato ottimizzato per funzionare con Android V(Android 15).

Al contrario, abbiamo riscontrato numerosi problemi con le cuffie che supportano LEA, ma non dispongono dell'implementazione corretta di Accoppiamento rapido su LEA (ovvero solo Accoppiamento rapido su Classic). Nello specifico e ad esempio, quando l'RPA del fornitore non viene generato dalla chiave di risoluzione dell'identità (IRK) corretta e l'indirizzo non può essere risolto. Sebbene non sia stato possibile testare un elenco completo di configurazioni di cuffie, i nostri test limitati hanno rivelato vari problemi, tra cui la mancata visualizzazione delle notifiche della batteria degli auricolari, la mancanza della funzionalità di cambio audio (SASS), errori di accoppiamento iniziali e successivi diffusi e altro ancora.

Pertanto, consigliamo vivamente ai partner di implementare la specifica Fast Pair-LEA sia per i nuovi dispositivi sia per quelli esistenti sul campo (tramite aggiornamenti over-the-air) che supportano la doppia modalità.