Concorrenza Wi-Fi STA/STA

Android 12 introduce la concorrenza Wi-Fi STA/STA, che consente ai dispositivi di connettersi a due reti Wi-Fi contemporaneamente. Questa funzione opzionale abilita le seguenti funzioni.

  • Make-before-break: il dispositivo effettua una connessione a una nuova rete Wi-Fi prima di rompere la connessione esistente. Ciò si traduce in transizioni più fluide quando si passa da una rete Wi-Fi all'altra
  • Concurrent solo locale e collegamento internet: il dispositivo si connette a una rete locale di sola senza interrompere la connessione internet-fornendo principale del dispositivo.
  • Concurrent limitato e connessione internet: Si connette dispositivo a una rete limitata (disponibile solo per alcune applicazioni privilegiati) senza interrompere la connessione internet-fornendo principale del dispositivo.

Questa pagina descrive il comportamento del dispositivo quando questa funzione è abilitata e i dettagli di implementazione per produttori e fornitori di dispositivi.

Implementazione

I dispositivi devono supportare quanto segue per implementare la concorrenza Wi-Fi STA/STA:

  • Il chip o il firmware Wi-Fi deve supportare due connessioni STA simultanee. Il firmware deve supportare tutte le combinazioni di canali e bande per entrambe le connessioni. Per evitare problemi di prestazioni, si consiglia di utilizzare un chip Wi-Fi compatibile con DBS 2x2+2x2.

  • Il dispositivo deve supportare le seguenti API di fornitore HAL versione 1.5

    • IWifiChip.setMultiStaPrimaryConnection()
    • IWifiChip.setMultiStaUseCase()
  • La combinazione di interfaccia HAL Wi-Fi deve avere due interfacce STA concorrenti esposte utilizzando un formato Specifaction quali [{STA} <= 2, ...] . Per ulteriori informazioni, vedere multi-interfaccia Wi-Fi concorrenza .

Se tali prerequisiti sono soddisfatti, implementare la concorrenza Wi-Fi STA/STA effettuando le seguenti operazioni:

  1. Attivare una o più funzioni utilizzando singolarmente sovrapposizioni di risorse di runtime (disabilitato per impostazione predefinita).

    • Make-before-break: config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • Concurrent-solo locali e connessione internet: config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • Concurrent limitato e connessione a Internet: config_wifiMultiStaRestrictedConcurrencyEnabled
  2. Convalidare ogni implementazione come descritto nelle rispettive sezioni di seguito.

Per un migliore supporto Wi-Fi STA / STA concorrenza, si raccomanda che i quadri e applicazioni OEM personalizzate utilizzano il NetworkCallback#onCapabilitiesChanged() il metodo, invece di WifiManager#getConnectionInfo() , che restituisce solo WifiInfo per una singola rete e stata sconsigliata a Android 12 . per ulteriori informazioni, vedere Wi-Fi rete di richiesta API per la connettività peer-to-peer .

Make-before-break

La funzione di make-before-break permette ai dispositivi di connnect a una nuova rete Wi-Fi, pur mantenendo la connessione di rete Wi-Fi esistente, solo disconnettersi dalla vecchia rete quando si connette con successo alla nuova rete Wi-Fi e dispone di accesso a Internet.

Il caso d'uso make-before-break risolve i seguenti problemi in Android 11 o versioni precedenti, in cui il dispositivo deve disconnettersi dalla rete Wi-Fi esistente prima di connettersi a una nuova rete (break-before-make).

  • Quando ci si connette a una nuova rete, il dispositivo potrebbe scoprire di avere una password Wi-Fi errata salvata o che la nuova rete non ha accesso a Internet. Ciò costringe il dispositivo a tornare alla vecchia rete, portando a una notevole quantità di tempo senza connettività Wi-Fi.

  • La vecchia rete viene disconnessa improvvisamente, il che significa che tutti i socket vengono chiusi. Le app spesso non reagiscono bene a un'improvvisa perdita di connettività e questo potrebbe portare l'utente a sperimentare alcuni secondi senza connettività Internet fino a quando la nuova connessione non viene completamente stabilita.

  • La rete predefinita cambia due volte, dalla vecchia rete Wi-Fi alla rete cellulare, quindi dalla rete cellulare alla nuova rete Wi-Fi. Ciò fa sì che le app reagiscano due volte alle modifiche della rete. Il dispositivo deve anche impiegare un breve lasso di tempo utilizzando i dati cellulari.

Il flusso make-before-break viene utilizzato solo per gli switch di rete Wi-Fi automatici avviati dal sistema operativo. Gli switch di rete avviati dall'utente utilizzano il flusso legacy break-before-make, in cui la rete precedente viene completamente disconnessa prima che venga connessa la nuova rete. In alcuni casi, il flusso break-before-make viene utilizzato anche negli switch automatici avviati dal sistema operativo, ad esempio quando si passa tra due reti entrambe configurate per utilizzare l'indirizzo MAC di fabbrica.

Applicazioni può controllare se questo caso d'uso è supportata sul dispositivo utilizzando la WifiManager#isMakeBeforeBreakWifiSwitchingSupported() API.

Convalida del make-before-break

Per convalidare la tua implementazione, attiva uno switch di rete Wi-Fi automatico (assicurando che sia disponibile una rete con una potenza del segnale più forte della rete attualmente connessa) e verifica che il dispositivo mantenga la connessione esistente durante la connessione alla nuova rete. Per visualizzare lo stato di entrambe le interfacce Wi-Fi e verificare che entrambe siano connesse, utilizzare il seguente comando.

adb shell wpa_cli -i wlan0 status ; echo ; adb shell wpa_cli -i wlan1 status

Se la nuova rete non dispone di connettività, il dispositivo tenta di connettersi alla rete, mantenendo la connessione con la rete esistente, e interrompe il tentativo quando rileva che la nuova rete non dispone di Internet. Il dispositivo continua quindi a utilizzare la connessione esistente come rete Wi-Fi primaria.

Connessione simultanea solo locale e Internet

La funzione simultanea connessione locale sola e Internet permette ai dispositivi di collegarsi ad un solo locale contatto, come una connessione ad un dispositivo degli oggetti, in concomitanza con la rete internet-fornendo primario. Questa funzione migliora l'esperienza dell'utente quando direttamente collegamento a dispositivi internet degli oggetti, quali fotocamere, che è possibile attraverso la WifiNetworkSpecifier API aggiunto Android 10.

In Android 11 e versioni precedenti, i dispositivi si disconnettono dalla rete Wi-Fi primaria quando si collegano a un dispositivo IoT, con conseguente perdita della connettività Internet (a meno che il dispositivo non disponga di un altro tipo di trasporto disponibile, come i dati cellulari).

Applicazioni può verificare se questa funzione è supportata sul dispositivo utilizzando la WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported() API.

Per ulteriori informazioni sulle modifiche alla concomitante funzione locale-only e connessione internet in Android 12, vedere Wi-Fi rete di richiesta API per la connettività peer-to-peer .

Convalida della connessione solo locale e Internet

Per convalidare questa funzione, utilizzare i seguenti test CTS e ACTS:

  • CTS: MultiStaConcurrencyWifiNetworkSpecifierTest
  • ATTI: WifiStaConcurrencyNetworkRequestTest

Connessione Internet limitata e simultanea

La concomitante ristretto e funzione di connessione internet permette al dispositivo di conccurently connettersi a una primaria rete Wi-Fi per l'utente e una rete Wi-Fi limitato che è disponibile solo per selezionare le applicazioni.

Applicazioni può verificare se questa funzione è supportata sul dispositivo utilizzando la WifiManager#isStaConcurrencyForRestrictedConnectionsSupported() API.

Per consentire a un dispositivo di connettersi a reti Wi-Fi limitate secondarie, procedi nel seguente modo:

  1. Aggiungere suggerimenti rete Wi-Fi con setOemPaid o setOemPrivate impostata su true.

  2. In ConnectivityManager , presentare una NetworkRequest con le funzionalità corrispondenti:

Quando il dispositivo rileva i risultati della scansione con una rete che corrisponde al suggerimento OEM pagato o privato, si connette automaticamente ad essa come rete secondaria.

Convalida simultanea limitata e connessione Internet

Per convalidare questa funzione, utilizzare i seguenti test CTS e ACTS:

  • CTS: MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest
  • ATTI: WifiStaConcurrencyNetworkRequestTest

Linee guida per i chip Wi-Fi del fornitore

Per i fornitori di chip Wi-Fi, utilizzare le seguenti linee guida per supportare la concorrenza Wi-Fi STA/STA.

Il chip Wi-Fi deve supportare due connessioni STA simultanee. Ciò significa che supporta quanto segue:

  • Ogni interfaccia STA ha un MAC univoco programmabile dal framework.
  • L'interfaccia STA secondaria può essere creata e distrutta dinamicamente.
  • Ogni STA può essere collegata a un SSID diverso (all'interno della stessa banda o di una banda diversa).
  • Ogni STA può essere collegata allo stesso SSID (all'interno della stessa banda o di una banda diversa). I due STA non devono mai essere collegati alla stessa BSSID.

Le funzionalità critiche devono operare in base all'interfaccia e devono essere disponibili sull'interfaccia principale. Di seguito è riportato un elenco di queste caratteristiche critiche:

  • Roaming deve essere supportato su almeno l'interfaccia principale (apparecchio con IWifiChip.setMultiStaPrimaryConnection() ). Se il roaming è supportato su entrambe le interfacce, le decisioni su una connessione non devono entrare in conflitto con la seconda connessione simultanea. Ad esempio, un'interfaccia non deve effettuare il roaming al BSSID dell'altra connessione.

  • APF (e altri offload come ARP e NS) devono essere supportati su almeno l'interfaccia principale (apparecchio con IWifiChip.setMultiStaPrimaryConnection() ).

  • Le statistiche del livello di collegamento devono operare in base all'interfaccia.

Di seguito sono consigliate le implementazioni di chip Wi-Fi per diversi scenari di concorrenza:

  • Il chip Wi-Fi deve consentire il quadro di chiamare IWifiChip.setMultiStaUseCase() con una delle seguenti costanti per specificare la funzione corrente:

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY : specifica la funzione Make-before-break. La qualità della connessione primaria deve essere prioritaria rispetto alla connessione secondaria.
    • DUAL_STA_NON_TRANSIENT_UNBIASED : Specifica il concomitante solo locale e collegamento internet o la funzione di connessione internet limitato e concorrente. La qualità di entrambe le connessioni deve avere la stessa priorità.
  • Poiché doppi STA concorrenti possono portare a modalità MCC, SCC e DBS di funzionamento, l'attuazione fornitore deve scegliere la migliore configurazione radio quando il framework chiama IWifiChip.setMultiStaUseCase() per indicare la funzione. Le seguenti sono linee guida generali:

    • Se disponibile, è preferibile 2x2+2x2 DBS.
    • Se possibile, evitare 1x1+1x1 DBS a causa dell'eccessivo impatto sulla qualità della connessione. Preferisci invece MCC.
    • Il duty cycle MCC deve essere configurabile dal driver o dal firmware per le varie funzioni. Il quadro non imposta il ciclo di lavoro del Centro clienti direttamente, ma interroga queste informazioni utilizzando StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent .
    • Se si utilizza MCC, si consigliano i seguenti cicli di lavoro tra le connessioni primarie e secondarie:

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY : 70% primaria, secondaria 30%.
      • DUAL_STA_NON_TRANSIENT_UNBIASED : 50% primaria, secondaria 50%.