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:
Registra una richiamata per ottenere le funzionalità del dispositivo utilizzando
WifiManager#registerSoftApCallback
per un hotspot collegato oWifiManager#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 callbackTetheringEventCallback#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:
- Configura la configurazione del soft AP per il tethering chiamando il metodo
WifiManager#setSoftApConfiguration
e fornendo un'istanzaSoftApConfiguration
. CostruisciSoftApConfiguration
utilizzando la classeSoftApConfiguration.Builder
. - Avviare il tethering chiamando il metodo di tethering in
TetheringManager#startTethering
.
Per hotspot solo locale:
- 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 daSoftApCapability#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.
- Tutti i dispositivi i cui indirizzi MAC si trovano in
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 )
.- 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
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 seSoftApConfiguration#setAutoShutdownEnabled
è abilitato. Può essere sovrascritto utilizzandoSoftApConfiguration#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 daCarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT
). Il risultato finale viene fornito all'app conSoftApCapabilities#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) tramiteSoftApCapabilities#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
econfig_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 sutrue
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