Supporto per hotspot Wi-Fi (AP software) per il tethering

Android supporta il tethering tramite un hotspot Wi-Fi (Soft AP). Da Android 11, la configurazione Soft AP disponibile per i produttori di dispositivi supporta più casi d'uso e personalizzazioni dell'operatore, inclusa la configurazione di quanto segue:

  • SSID e BSSID
  • Tipo di sicurezza (incluso WPA3)
  • SSID nascosto
  • Banda e canale operativi (compreso ACS)
  • Numero massimo di client consentiti
  • Valore di timeout di spegnimento automatico
  • Lista consentita e lista bloccata per consentire all'utente il controllo dei dispositivi associati

Le capacità del dispositivo determinano la disponibilità di questi controlli. Android 11 introduce le API per ottenere queste funzionalità. I produttori di dispositivi possono anche specificare le capacità del dispositivo di base utilizzando gli overlay.

Tieni presente che alcune API sono API di sistema e sono limitate tramite autorizzazioni in modo che solo l'app Impostazioni del sistema possa accedervi.

Esempi e fonte

Un'implementazione predefinita è fornita dall'app Impostazioni AOSP, tuttavia non utilizza tutte le API per la configurazione di Soft AP. Un'app chiamante deve svolgere queste tre funzioni:

  1. Registrare un callback per ottenere le funzionalità del dispositivo utilizzando WifiManager#registerSoftApCallback . Il SoftApCallback callback fornisce diversi metodi:

    • SoftApCallback#onCapabilityChanged : Fornisce informazioni sulle funzionalità del dispositivo, tra cui il numero massimo di client supportati, e se SAE o ACS sono supportati.
    • SoftApCallback#onInfoChanged : Fornisce informazioni sulla corsa soft AP (valido solo una volta avviato), comprese le band e le informazioni di frequenza.
    • SoftApCallback#onConnectedClientsChanged : Fornisce un elenco di clienti collegati. Per ogni client è possibile ottenere l'indirizzo MAC. Per ottenere le informazioni IP, utilizzare il TetheringEventCallback#onClientsChanged callback.
    • SoftApCallback#onStateChanged : fornisce aggiornamenti sullo stato della AP morbido come viene abilitata e disabilitata.
    • SoftApCallback#onBlockedClientConnecting : fornisce le informazioni client bloccato con uno dei seguenti motivi del blocco: il dispositivo ha raggiunto il numero massimo di client che può sostenere o il client non è esplicitamente autorizzato a connettersi.
  2. Configurare la configurazione AP morbido da utilizzare per legare chiamando il WifiManager#setSoftApConfiguration metodo e fornendo un SoftApConfiguration istanza. È possibile costruire SoftApConfiguration utilizzando la SoftApConfiguration.Builder di classe.

  3. Avviare il tethering chiamando il metodo tethering al TetheringManager#startTethering .

Implementazione di elenchi di autorizzazioni e blocchi

Un requisito tipico del gestore è quello di fornire all'utente i controlli dei dispositivi che possono essere associati al Soft AP. Ci sono diversi meccanismi per farlo:

  • Limitare il numero massimo di dispositivi che possono associare alla AP morbido utilizzando SoftApConfiguration.Builder#setMaxNumberOfClients . Assicurati di specificare un numero inferiore al numero massimo di client supportati dal dispositivo. È possibile ottenere il numero massimo di SoftApCapability#getMaxSupportedClients .
  • Fornire un controllo dinamico utilizzando gli elenchi di autorizzazioni e blocchi:

    • La configurazione di default di un soft AP permette a tutti i dispositivi di associare alla AP morbido tranne che per i dispositivi i cui indirizzi MAC sono aggiunti al SoftApConfiguration.Builder#setBlockedClientList .
    • Se il soft AP è configurato con SoftApConfiguration.Builder#setClientControlByUserEnabled( true ) , l'consentono elenco viene utilizzato.

      • Tutti i dispositivi i cui indirizzi MAC sono in SoftApConfiguration.Builder#setBlockedClientList sono bloccati da associazione.
      • Tutti i dispositivi i cui indirizzi MAC sono in SoftApConfiguration.Builder#setAllowedClientList sono consentiti associazione.
      • Tutti gli altri dispositivi (cioè, dispositivi i cui indirizzi MAC non sono nella lista di consentire o blocco) vengono bloccati da un'associazione ma SoftApCallback#onBlockedClientConnecting viene chiamato, consentendo l'applicazione di controllo (che è, le impostazioni dell'applicazione) di compiere un'azione, per ad esempio, chiedendo conferma all'utente e quindi aggiungendo il dispositivo all'elenco di autorizzazioni o all'elenco di blocco a seconda del comportamento dell'utente.

    Tieni presente che i dispositivi possono utilizzare la funzionalità dell'elenco di autorizzazioni solo se è supportata nel dispositivo. È possibile verificare il supporto dispositivo utilizzando SoftApCapability#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT ) .

Implementazione

Per supportare il tethering tramite un hotspot Wi-Fi (Soft AP), i produttori di dispositivi devono fornire l'app Impostazioni, il framework e il supporto HAL/firmware:

  • Impostazioni app: l'applicazione Impostazioni AOSP prevede una linea di base per la configurazione di un hotspot tethering con SSID e credenziali di sicurezza. Questo codice può essere usato così com'è o modificato per fornire funzionalità aggiuntive come descritto in Esempi e sorgente .

  • Quadro: Il codice del framework AOSP supporta tutte le funzionalità descritte in Esempi e fonte .

  • HAL / firmware per hotspot: IHostapd.HAL versione 1.2 o superiore.

personalizzazione

Per personalizzare l'attuazione, i produttori di dispositivi devono configurare le seguenti sovrapposizioni e configurazioni portanti, che sono documentati in packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml :

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds : L'intervallo di timeout di spegnimento predefinito. Valido solo se SoftApConfiguration#setAutoShutdownEnabled è abilitato. Possono essere ignorate utilizzando SoftApConfiguration#setShutdownTimeoutMillis .
  • config_wifiHardwareSoftapMaxClientCount : La limitazione hardware per il numero massimo di client supportati. Il numero massimo di client supportati dal dispositivo è il minimo dei vincoli hardware e carrier (specificato da CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT ). Il risultato finale è previsto per l'applicazione con SoftApCapabilities#getMaxSupportedClients .
  • config_wifiSofapClientForceDisconnectSupported : se il dispositivo ha la capacità di forzare disconnessione di un client. Necessario per abilitare gli elenchi di autorizzazioni e blocchi. Comunicate al app di controllo (Impostazioni app) attraverso SoftApCapabilities#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT ) .
  • Supporto del canale: config_wifiSoftap2gChannelList , config_wifiSoftap5gChannelList e config_wifiSoftap6gChannelList .
  • Ripristinare il supporto precisando se le voci corrispondenti sono riportate ai valori predefiniti per il ripristino della configurazione hotspot a un nuovo dispositivo: config_wifiSoftapResetChannelConfig , config_wifiSoftapResetHiddenConfig , config_wifiSoftapResetUserControlConfig , config_wifiSoftapResetAutoShutdownTimerConfig , config_wifiSoftapResetMaxClientSettingConfig . Si noti che questi sono impostati su true per impostazione predefinita, il che significa che i valori vengono azzerati. Questo è fondamentale se il nuovo dispositivo non supporta la configurazione.
  • Funzionalità hardware:

    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftapAcsIncludeDfs

Convalida

Android fornisce una serie di test unitari, test di integrazione (Android Connectivity Test Suite o ACTS) e test Compatibility Test Suite (CTS) per convalidare la funzione hotspot. La funzione hotspot può essere testata anche utilizzando Vendor Test Suite (VTS).

Test unitari

Verificare il pacchetto hotspot utilizzando i seguenti test.

  • Test di servizio:

    atest packages/modules/Wifi/service/tests/wifitests/
    
  • Test manager:

    atest packages/modules/Wifi/framework/tests/
    

Test di integrazione (ACTS)

Il ATTI suite di test hotspot, che si trova in tools/test/connectivity/acts/tests/google/wifi/WifiSoftApTest.py , implementa test funzionali della funzione hotspot.

Test Compatibility Test Suite (CTS)

Utilizzare CTS test per convalidare la funzionalità di hotspot. CTS rileva quando la funzione è abilitata e include automaticamente i test associati.

Per attivare i test CTS, eseguire:

atest android.net.wifi.cts.WifiManagerTest

Suite di test del fornitore (VTS)

Per eseguire i test VTS, eseguire:

atest VtsHalWifiHostapdV1_2Target