Contemporaneità STA/STA Wi-Fi

Android 12 introduce la contemporaneità Wi-Fi STA/STA, che consente ai dispositivi di connettersi a due reti Wi-Fi contemporaneamente. Questa funzionalità facoltativa attiva le seguenti funzioni.

  • Preparati prima dell'interruzione: il dispositivo si connette a una nuova rete Wi-Fi. prima di interrompere la connessione esistente. Ciò porta transizioni più fluide passando da una rete Wi-Fi all'altra
  • Connessione simultanea solo locale e a internet: il dispositivo si connette a una rete solo locale senza interrompere la connessione che fornisce la connessione a internet principale.
  • Connessione a internet e limitata simultanea: il dispositivo si connette a una rete con limitazioni (disponibile solo per alcune app con privilegi) senza interrompere la connessione a internet principale del dispositivo.
  • (Android 13 o versioni successive) Più simultanei reti con connessione a internet: il dispositivo si connette a due reti, entrambe senza restrizioni e disponibili per tutte le app, e fornire connettività a internet.

In questa pagina viene descritto il comportamento del dispositivo quando questa funzione è attiva e le i dettagli di implementazione per i produttori e i fornitori di dispositivi.

Implementazione

I dispositivi devono supportare quanto segue per poter implementare STA/STA Wi-Fi contemporaneità:

  • Il chip o il firmware Wi-Fi deve supportare due STA contemporaneamente e connessioni a Internet. Il firmware deve supportare tutte le combinazioni di canali e bande per entrambe le connessioni. Per evitare problemi di prestazioni, ti consigliamo di utilizzare un chip Wi-Fi 2x2 + 2x2 DBS.

  • Il dispositivo deve supportare le seguenti API nel file AIDL o HIDL implementazione di IWifiChip.

    • IWifiChip.setMultiStaPrimaryConnection(String ifName)
    • IWifiChip.setMultiStaUseCase(MultiStaUseCase useCase)
  • La combinazione di interfacce Wi-Fi dell'HAL deve avere due interfacce STA simultanee utilizzando un formato di specifica come [{STA} <= 2, ...]. Per ulteriori informazioni, vedi Contemporaneità multi-interfaccia Wi-Fi.

Se questi prerequisiti sono soddisfatti, implementa la contemporaneità Wi-Fi STA/STA eseguendo le seguenti:

  1. Attiva singolarmente una o più funzioni utilizzando overlay risorse di runtime (disattivati da predefinita).

    • Preparati prima della pausa: config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • Connessione simultanea solo locale e a internet. config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • Connessione a internet e limitata simultanea: config_wifiMultiStaRestrictedConcurrencyEnabled
    • Più reti simultanee con connessione a internet: config_wifiMultiStaMultiInternetConcurrencyEnabled
  2. Convalida ogni implementazione come descritto nelle rispettive sezioni.

Per un supporto migliore della contemporaneità Wi-Fi STA/STA, consigliamo di usare modelli di framework e app usano il metodo NetworkCallback#onCapabilitiesChanged() invece di WifiManager#getConnectionInfo(), che restituisce solo WifiInfo per un'unica rete ed è stato ritirato in Android 12. Per ulteriori informazioni, vedi API Wi-Fi Network Request per la connettività peer-to-peer.

Prima della pausa

La funzione make-before-break consente ai dispositivi di connettersi a una nuova rete Wi-Fi rete pur mantenendo la connessione di rete Wi-Fi esistente, disconnettersi dalla vecchia rete quando si connette correttamente alla nuova È disponibile una rete Wi-Fi e dispone di accesso a internet.

Il caso d'uso "make-before-break" risponde ai seguenti problemi Android 11 o versioni precedenti, dove il dispositivo deve disconnettersi dalla rete Wi-Fi esistente prima di connetterti a una nuova rete (pausa prima di fare).

  • Quando ti connetti a una nuova rete, il dispositivo potrebbe rilevare di avere un password Wi-Fi errata salvata o la nuova rete dispongono di accesso a internet. Questa operazione costringe il dispositivo a tornare alla versione precedente causando una notevole quantità di tempo senza connettività Wi-Fi.

  • La vecchia rete si è disconnessa bruscamente, il che significa che i socket si chiudono. Le app spesso non reagiscono bene a un'improvvisa perdita di e questo può portare che l'utente non dispone di connessione a internet per qualche secondo fino al nuovo completamente stabile.

  • La rete predefinita cambia due volte: dalla rete Wi-Fi precedente a quella cellulare, quindi dalla rete cellulare alla nuova rete Wi-Fi. Questo fa sì che le app reagiscano rete cambia due volte. Il dispositivo deve inoltre spendere un breve importo usando la rete dati.

Il flusso "make-before-break" viene utilizzato solo per la rete Wi-Fi automatica avviati dal sistema operativo. I switch di rete avviati dall'utente utilizzano la versione precedente flusso break-before-make, in cui la rete precedente è completamente disconnessa prima della connessione della nuova rete. In alcuni casi, il flusso break-before-make viene utilizzato anche nei commutatori automatici avviati dalla Sistema operativo, ad esempio, quando si passa da una rete all'altra, entrambe configurate per l'utilizzo all'indirizzo MAC di fabbrica.

Le app possono controllare se questo caso d'uso è supportato sul dispositivo utilizzando API WifiManager#isMakeBeforeBreakWifiSwitchingSupported().

Convalida il passaggio prima dell'interruzione

Per convalidare l'implementazione, attiva uno switch di rete Wi-Fi automatico (garantendo una rete con una potenza del segnale più forte rispetto a quella rete connessa sia disponibile) e verifica che il dispositivo mantenga connessione esistente durante la connessione alla nuova rete. Per visualizzare lo stato di entrambe le interfacce Wi-Fi e verificare che entrambe siano connesse: usa questo 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 La nuova rete non dispone di internet. Il dispositivo continua a utilizzare connessione esistente come rete Wi-Fi principale.

Connessione a internet e solo locale contemporaneamente

La funzione di connessione simultanea solo locale e a internet consente ai dispositivi di connettersi a una connessione solo locale, ad esempio una connessione a un dispositivo IoT, in concomitanza con la principale rete di fornitura di internet. Questa funzione migliora l'esperienza utente quando si connette direttamente ai dispositivi IoT, come fotocamere, che è possibile mediante l'API WifiNetworkSpecifier aggiunta in Android 10.

In Android 11 e versioni precedenti, i dispositivi si disconnettono principale della rete Wi-Fi quando ci si connette a un dispositivo IoT, con la conseguente perdita a internet (a meno che per il dispositivo non sia disponibile un altro tipo di trasporto, come la rete dati).

Le app possono controllare se questa funzione è supportata sul dispositivo utilizzando API WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported().

Per ulteriori informazioni sulle modifiche allo standard solo locale e a internet in contemporanea, funzione di connessione in Android 12, consulta API Wi-Fi Network Request per la connettività peer-to-peer.

Convalida solo la connessione locale e la connessione a internet

Per convalidare questa funzione, utilizza MultiStaConcurrencyWifiNetworkSpecifierTest test CTS.

Connessione a internet e limitata simultanea

La funzione di connessione simultanea limitata e connessione a internet consente al dispositivo per connettersi contemporaneamente a una rete Wi-Fi principale per l'utente e a rete Wi-Fi con restrizioni disponibile solo per alcune app.

Le app possono controllare se questa funzione è supportata sul dispositivo utilizzando API WifiManager#isStaConcurrencyForRestrictedConnectionsSupported().

Per consentire a un dispositivo di connettersi a reti Wi-Fi secondarie limitate: segui questi passaggi:

  1. Aggiungi Suggerimenti per le reti Wi-Fi con setOemPaid: o setOemPrivate impostato su true.

  2. In ConnectivityManager, invia una NetworkRequest con il codice funzionalità:

Quando il dispositivo rileva risultati della scansione con una rete corrispondente all'OEM a pagamento o Suggerimento privato OEM, si connette automaticamente a quest'ultimo come rete secondaria.

Convalida la connessione a internet e limitata simultanea

Per convalidare questa funzione, utilizza MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest test CTS.

Più reti in contemporanea con connessione a internet

Disponibile per Android 13 o versioni successive, la la funzionalità di più reti con connessione a internet consente al dispositivo di si connettono contemporaneamente a due reti (AP), entrambe senza restrizioni (tutte le app hanno accesso) e offrono accesso a internet.

Le app possono controllare se questa funzione è supportata sul dispositivo utilizzando WifiManager#isStaConcurrencyForMultiInternetSupported() .

Se la funzionalità è supportata, le app con privilegi possono abilitarla utilizzando WifiManager#setStaConcurrencyForMultiInternetMode(int mode). La prevede le seguenti modalità:

Per eseguire query sulla modalità delle funzionalità attualmente attiva, utilizza il WifiManager#getStaConcurrencyForMultiInternetMode() .

Quando la funzionalità è attiva, segui questi passaggi per richiedere un'ulteriore che fornisce accesso a internet.

  1. Creare un indicatore di rete Wi-Fi utilizzando WifiNetworkSpecifier.Builder Scegli una banda per l'indicatore utilizzando setBand() . Non specificare l'SSID o il BSSID come rete aggiuntiva per il banda specificata viene selezionata dal framework Wi-Fi.

  2. Utilizzo ConnectivityManager, crea una NetworkRequest con NET_CAPABILITY_INTERNET funzionalità.

  3. Aggiungi l'indicatore alla richiesta di rete insieme a un NetworkCallback per monitorare lo stato della richiesta ed inviarla a ConnectivityManager. Se una rete salvata con la banda richiesta nel risultato della scansione e la connessione alla rete riuscito, NetworkCallback.onAvailable() viene richiamato sull'oggetto callback.

Convalida più reti simultanee con connessione a internet

Per convalidare questa funzione, utilizza il seguente test CTS:

  • CTS: MultiStaConcurrencyMultiInternetWifiNetworkTest

Linee guida per i chip Wi-Fi del fornitore

Per i fornitori di chip Wi-Fi, fai riferimento alle seguenti linee guida per supportare Contemporaneità STA/STA Wi-Fi.

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

  • Ogni interfaccia STA dispone di un MAC univoco programmabile dal framework.
  • L'interfaccia STA secondaria può essere creata ed eliminata in modo dinamico.
  • Ogni STA può essere collegata a un SSID diverso (all'interno dello stesso cinturino o un cinturino diverso).
  • Ogni STA può essere connessa allo stesso SSID (all'interno dello stesso cinturino o un cinturino diverso). I due STA non devono mai essere connesso allo stesso BSSID.

Le funzionalità critiche devono operare sulla base della singola interfaccia e devono essere disponibili nell'interfaccia principale. Di seguito è riportato un elenco di queste criticità caratteristiche:

  • Il roaming deve essere supportato almeno nell'interfaccia principale (impostato utilizzando IWifiChip.setMultiStaPrimaryConnection()). Se il roaming è supportato entrambe le interfacce, le decisioni su una connessione non devono essere in conflitto con alla seconda connessione simultanea. Ad esempio, un'interfaccia non deve spostarsi al BSSID dell'altra connessione.

  • L'APF (e altri offload come ARP e NS) devono essere supportati almeno all'interfaccia principale (impostata utilizzando IWifiChip.setMultiStaPrimaryConnection()).

  • Le statistiche del livello di link devono operare sulla base dell'interfaccia.

Di seguito sono riportate le implementazioni consigliate dei chip Wi-Fi per diverse scenari di contemporaneità:

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

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY: specifica il parametro Funzione Make-Before-Break. La qualità della connessione principale deve avere la priorità sulla connessione secondaria.
    • DUAL_STA_NON_TRANSIENT_UNBIASED: specifica il parametro simultanea, solo locale e a internet o simultanea con accesso limitato e connessione a internet. La qualità di entrambi devono avere la stessa priorità.
  • Poiché due STA simultanei possono portare alle modalità MCC, SCC e DBS di operativa, l'implementazione del fornitore deve scegliere la radio configurazione quando il framework chiama IWifiChip.setMultiStaUseCase() indicano la funzione. Ecco alcune linee guida generali:

    • È preferibile 2x2+2x2 DBS, se disponibile.
    • Se possibile, evitare DBS 1x1+1x1 a causa dell'impatto eccessivo sui e la qualità della connessione. Preferisci il Centro clienti.
    • Il ciclo di servizio del Centro clienti deve essere configurabile dal driver o dal firmware le varie funzioni. Il framework non imposta il ciclo di servizio del Centro clienti ma esegue query per queste informazioni usando StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent.
    • Se utilizzi il Centro clienti, ti consigliamo i seguenti cicli di servizio tra il e le connessioni secondarie:

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