Hotspot Wi-Fi (Soft AP)

Android fornisce supporto per hotspot Wi-Fi (Soft AP), incluso il tethering tramite un hotspot Wi-Fi e hotspot Wi-Fi solo locali.

La funzione Soft AP consente la configurazione di quanto segue:

  • SSID e BSSID
  • Tipo di sicurezza (incluso WPA3)
  • SSID nascosto
  • Banda operativa e canale (incluso 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
  • Livello di randomizzazione MAC per il BSSID AP
  • 802.11ax e 802.11be

Le funzionalità 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 funzionalità di base del dispositivo 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.

Sviluppo di app con API hotspot

Un'implementazione predefinita di un hotspot Wi-Fi collegato è fornita dall'app Impostazioni AOSP, tuttavia non utilizza tutte le API per la configurazione Soft AP.

Per supportare il tethering tramite un hotspot o un hotspot solo locale, l'app deve eseguire le seguenti funzioni:

  1. Registra una richiamata per ottenere le funzionalità del dispositivo utilizzando WifiManager#registerSoftApCallback per un hotspot collegato o WifiManager#registerLocalOnlyHotspotSoftApCallback per un hotspot solo locale.

    La richiamata SoftApCallback fornisce i seguenti metodi:

    • SoftApCallback#onCapabilityChanged : fornisce informazioni sulle funzionalità del dispositivo, incluso il numero massimo di client supportati e se SAE o ACS sono supportati.
    • SoftApCallback#onInfoChanged : fornisce informazioni sul Soft AP in esecuzione (valido solo una volta avviato), comprese le informazioni su banda e frequenza.
    • SoftApCallback#onConnectedClientsChanged : fornisce un elenco di client connessi. Per ciascun client è possibile ottenere l'indirizzo MAC. Per ottenere le informazioni sull'IP, utilizzare il callback TetheringEventCallback#onClientsChanged .
    • SoftApCallback#onStateChanged : fornisce aggiornamenti sullo stato del Soft AP man mano che viene abilitato e disabilitato.
    • SoftApCallback#onBlockedClientConnecting : fornisce le informazioni sul client bloccato con uno dei motivi seguenti per il blocco: il dispositivo ha raggiunto il numero massimo di client che può supportare o il client non è esplicitamente autorizzato a connettersi.

Per un hotspot cablato:

  1. Configura la configurazione del soft AP per il tethering chiamando il metodo WifiManager#setSoftApConfiguration e fornendo un'istanza SoftApConfiguration . Costruisci SoftApConfiguration utilizzando la classe SoftApConfiguration.Builder .
  2. Avviare il tethering chiamando il metodo di tethering in TetheringManager#startTethering .

Per hotspot solo locale:

  1. Avvia l'hotspot solo locale con una configurazione soft AP specifica chiamando il metodo WifiManager#startLocalOnlyHotspot .

Implementazione di elenchi di autorizzazioni e blocchi

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

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

    • La configurazione predefinita di un Soft AP consente a tutti i dispositivi di associarsi al Soft AP, ad eccezione dei dispositivi i cui indirizzi MAC vengono aggiunti a SoftApConfiguration.Builder#setBlockedClientList .
    • Se il Soft AP è configurato con SoftApConfiguration.Builder#setClientControlByUserEnabled( true ) , viene utilizzato l'elenco consentiti.

      • Tutti i dispositivi i cui indirizzi MAC si trovano in SoftApConfiguration.Builder#setBlockedClientList vengono bloccati dall'associazione.
      • È consentita l'associazione a tutti i dispositivi i cui indirizzi MAC si trovano in SoftApConfiguration.Builder#setAllowedClientList .
      • Tutti gli altri dispositivi (ovvero i dispositivi i cui indirizzi MAC non sono nell'elenco Consenti o Blocca) vengono bloccati dall'associazione ma viene chiamato SoftApCallback#onBlockedClientConnecting , consentendo all'app di controllo (ovvero l'app Impostazioni) di eseguire un'azione, per ad esempio, chiedendo conferma all'utente e quindi aggiungendo il dispositivo all'elenco consentiti o all'elenco bloccati a seconda del comportamento dell'utente.

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

Implementazione

Per supportare il tethering tramite un hotspot o per supportare un hotspot solo locale, i produttori dei dispositivi devono fornire app Impostazioni, framework e supporto HAL/firmware:

  • App Impostazioni: l'app Impostazioni AOSP fornisce una base per la configurazione di un hotspot di tethering con SSID e credenziali di sicurezza. Questo codice può essere utilizzato così com'è o modificato per fornire funzionalità aggiuntive come descritto in Sviluppo di app con API hotspot .

  • Framework: il codice del framework AOSP supporta tutte le funzionalità descritte in Sviluppo di app con API hotspot .

  • HAL/firmware per hotspot: HIDL IHostapd.hal versione 1.2 o successiva oppure AIDL IHostapd.aidl .

Personalizzazione

Per personalizzare l'implementazione, i produttori dei dispositivi devono configurare i seguenti overlay e configurazioni dell'operatore, documentate in packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml :

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds : intervallo di timeout di spegnimento predefinito. Valido solo se SoftApConfiguration#setAutoShutdownEnabled è abilitato. Può essere sovrascritto utilizzando SoftApConfiguration#setShutdownTimeoutMillis .
  • config_wifiHardwareSoftapMaxClientCount : limitazione hardware per il numero massimo di client supportati. Il numero massimo di client supportati dal dispositivo è il minimo dei vincoli hardware e dell'operatore (specificati da CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT ). Il risultato finale viene fornito all'app con SoftApCapabilities#getMaxSupportedClients .
  • config_wifiSofapClientForceDisconnectSupported : indica se il dispositivo ha la capacità di forzare la disconnessione di un client. Necessario per abilitare gli elenchi consentiti e bloccati. Comunicato all'app di controllo (app Impostazioni) tramite SoftApCapabilities#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT ) .
  • (Disponibile da 13) config_wifiSoftapPassphraseAsciiEncodableCheck : se è necessario che la passphrase soft AP sia codificabile ASCII.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported : indica se aggiornare automaticamente o meno la configurazione delle impostazioni della banda a doppia banda durante il ripristino della configurazione cloud quando è supportato un nuovo dispositivo.
  • (Disponibile da 13) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled : indica se il framework aggiunge automaticamente le bande inferiori alla configurazione della banda per evitare la gestione della coesistenza.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported : se l'aggiornamento dinamico del codice paese in modalità AP è supportato o meno sul dispositivo
  • Supporto canale: config_wifiSoftap2gChannelList , config_wifiSoftap5gChannelList , config_wifiSoftap6gChannelList e config_wifiSoftap60gChannelList .
  • Ripristina supporto specificando se le voci corrispondenti vengono ripristinate ai valori predefiniti quando si ripristina la configurazione dell'hotspot su un nuovo dispositivo: config_wifiSoftapResetChannelConfig , config_wifiSoftapResetHiddenConfig , config_wifiSoftapResetUserControlConfig , config_wifiSoftapResetAutoShutdownTimerConfig , config_wifiSoftapResetMaxClientSettingConfig . Tieni presente che questi sono impostati su true per impostazione predefinita, il che significa che i valori vengono ripristinati. Questo è fondamentale se il nuovo dispositivo non supporta la configurazione.
  • Funzionalità hardware:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (Disponibile da 13) config_wifiSoftapOweTransitionSupported
    • (Disponibile da 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (Disponibile da 13) config_wifiSoftapIeee80211beSupported
    • config_wifiSoftapMacAddressCustomizationSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap24ghzSupported
    • config_wifiSoftap5ghzSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftap60ghzSupported
    • config_wifiSoftapAcsIncludeDfs

Validazione

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

Test unitari

Verifica il pacchetto hotspot utilizzando i test seguenti.

  • Test di servizio:

    atest packages/modules/Wifi/service/tests/wifitests/
    
  • Prove dirigenziali:

    atest packages/modules/Wifi/framework/tests/
    

Test di integrazione (ACTS)

La suite di test hotspot ACTS , situata in tools/test/connectivity/acts_tests/tests/google/wifi/WifiSoftApTest.py , implementa test funzionali della funzionalità hotspot.

Test della Compatibility Test Suite (CTS).

Utilizza i test CTS per convalidare la funzionalità hotspot. CTS rileva quando la funzionalità è 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)

Se è implementata l'interfaccia HIDL, eseguire:

atest VtsHalWifiHostapdV1_2Target

Se l'interfaccia AIDL è implementata, eseguire:

atest VtsHalHostapdTargetTest