Hotspot Wi-Fi (Soft AP)

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

La funzionalità soft AP consente di configurare quanto segue:

  • SSID e BSSID
  • Tipo di sicurezza (incluso WPA3)
  • SSID nascosto
  • Banda operativa e canale (incluso ACS)
  • Numero massimo di client consentiti
  • Valore timeout arresto automatico
  • Lista consentita e lista bloccata per consentire il controllo utente dei dispositivi associati
  • Livello di randomizzazione MAC per l'AP BSSID
  • 802.11ax e 802.11be

La disponibilità di questi controlli dipende dalle funzionalità del dispositivo. Android 11 introduce le API per ottenere questi le funzionalità di machine learning. I produttori di dispositivi possono anche specificare le funzionalità di base del dispositivo tramite overlay.

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

Sviluppa app con API hotspot

L'AOSP fornisce un'implementazione predefinita di un hotspot Wi-Fi con tethering Impostazioni, tuttavia non supporta tutte le API per Soft AP configurazione.

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

  1. Registra un callback per ottenere le funzionalità del dispositivo utilizzando WifiManager#registerSoftApCallback per un hotspot con tethering oppure WifiManager#registerLocalOnlyHotspotSoftApCallback per un acquisto solo locale un hotspot.

    Il callback SoftApCallback fornisce i seguenti metodi:

    • SoftApCallback#onCapabilityChanged: Fornisce informazioni sulle funzionalità del dispositivo, tra cui le numero di client supportati e se sono supportati SAE o ACS.
    • SoftApCallback#onInfoChanged: Fornisce informazioni sull'AP software in esecuzione (valido solo una volta incluse le informazioni su banda e frequenza.
    • SoftApCallback#onConnectedClientsChanged: Fornisce un elenco dei client connessi. Per ogni cliente, puoi ottenere l'indirizzo MAC. Per ottenere le informazioni IP, utilizza il metodo Chiamata di TetheringEventCallback#onClientsChanged.
    • SoftApCallback#onStateChanged: Fornisce aggiornamenti sullo stato del soft AP non appena viene attivato e disattivata.
    • SoftApCallback#onBlockedClientConnecting: Fornisce le informazioni sul client bloccato con uno dei seguenti elementi motivi del blocco: il dispositivo ha raggiunto il numero massimo di client che può supportare o a cui il cliente non è esplicitamente autorizzato connettersi.

Per un hotspot con tethering:

  1. Configura la configurazione soft AP per il tethering chiamando il WifiManager#setSoftApConfiguration e fornendo un'istanza SoftApConfiguration. Costruire SoftApConfiguration con SoftApConfiguration.Builder .
  2. Avvia il tethering chiamando il metodo di tethering all'indirizzo TetheringManager#startTethering

Per hotspot solo locale:

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

Implementare elenchi di elementi consentiti e bloccati

Un tipico requisito dell'operatore è fornire all'utente i controlli delle dispositivi autorizzati ad associare al Soft AP. Esistono diversi meccanismi per farlo:

  • Limita il numero massimo di dispositivi che possono essere associati al soft AP utilizzando SoftApConfiguration.Builder#setMaxNumberOfClients. Assicurati di specifica un numero inferiore al numero massimo di client supportati dal dispositivo. Puoi ottenere il numero massimo da SoftApCapability#getMaxSupportedClients.
  • Fornire un controllo dinamico utilizzando liste consentite e bloccate:

    • La configurazione predefinita di un Soft AP consente a tutti i dispositivi di associate al soft AP, ad eccezione dei dispositivi i cui indirizzi MAC sono aggiunto a SoftApConfiguration.Builder#setBlockedClientList.
    • Se il soft AP è configurato con SoftApConfiguration.Builder#setClientControlByUserEnabled(true), viene utilizzata la lista consentita.

      • Tutti i dispositivi con indirizzi MAC memorizzati SoftApConfiguration.Builder#setBlockedClientList è bloccato da dell'associazione.
      • Tutti i dispositivi con indirizzi MAC memorizzati SoftApConfiguration.Builder#setAllowedClientList è consentito dell'associazione.
      • Tutti gli altri dispositivi (ovvero i dispositivi con indirizzi MAC non sono nella lista consentita o bloccata) non sono bloccati ma SoftApCallback#onBlockedClientConnecting è , consentendo all'app di controllo (ovvero l'app Impostazioni) di eseguire un'azione, ad esempio chiedere conferma all'utente quindi aggiungi il dispositivo alla lista consentita o alla lista bloccata. a seconda del comportamento dell'utente.

    Tieni presente che i dispositivi possono utilizzare la funzionalità lista consentita solo se: supportati sul dispositivo. Puoi verificare il supporto del dispositivo utilizzando SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).

Implementazione

Per supportare il tethering tramite un hotspot o un hotspot solo locale: i produttori di dispositivi devono fornire impostazioni app, framework e HAL/firmware:

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

  • Framework: il codice del framework AOSP supporta tutte le funzionalità descritto in Sviluppare app con API hotspot.

  • HAL/firmware per hotspot: L'elenco HIDL Hostapd.hal versione 1.2 o successive oppure il modello AIDL IHostapd.aidl.

Personalizzazione

Per personalizzare l'implementazione, i produttori di dispositivi devono configurare gli overlay e le configurazioni degli operatori indicati di seguito, che sono documentati packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml:

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: il valore predefinito dell'intervallo di timeout di arresto. Valido solo se SoftApConfiguration#setAutoShutdownEnabled è abilitato. Può essere sostituito utilizzando SoftApConfiguration#setShutdownTimeoutMillis.
  • config_wifiHardwareSoftapMaxClientCount: la limitazione hardware il numero massimo di client supportati. Il numero massimo di client supportate dal dispositivo sono le risorse hardware e di operatore minime dei vincoli (specificati da CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT). Il risultato finale viene fornito all'app con SoftApCapabilities#getMaxSupportedClients.
  • config_wifiSofapClientForceDisconnectSupported: se il dispositivo è possibilità di forzare la disconnessione di un client. Obbligatorio per abilitare l'autorizzazione ed elenchi di blocco. Comunicazione all'app di controllo (app Impostazioni) tramite SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).
  • (Disponibile a partire da 13 anni) config_wifiSoftapPassphraseAsciiEncodableCheck: Indica se la passphrase soft AP deve essere codificabile con ASCII.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: se o meno per eseguire l'upgrade automatico della configurazione delle impostazioni di banda a dual band durante della configurazione cloud quando è supportato un nuovo dispositivo.
  • (Disponibile a partire da 13 anni) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: Indica se il framework aggiunge automaticamente bande inferiori alla configurazione di banda per evitare la gestione della coesistenza.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported: se dinamico o meno l'aggiornamento dei codici paese in modalità AP è supportato sul dispositivo
  • Canale supportato: config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelList e config_wifiSoftap60gChannelList.
  • Ripristina l'assistenza che specifica se le voci corrispondenti vengono reimpostate al valore predefinito 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 reimpostati. Questo è fondamentale se il nuovo dispositivo non supporta la configurazione.
  • Funzionalità hardware:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (Disponibile a partire da 13 anni) config_wifiSoftapOweTransitionSupported
    • (Disponibile a partire da 13 anni) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (Disponibile a partire da 13 anni) config_wifiSoftapIeee80211beSupported
    • config_wifiSoftapMacAddressCustomizationSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap24ghzSupported
    • config_wifiSoftap5ghzSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftap60ghzSupported
    • config_wifiSoftapAcsIncludeDfs

Convalida

Android mette a disposizione una serie di test delle unità e delle suite di test di compatibilità (CTS, Compatibility Test Suite). per convalidare la funzionalità hotspot. La funzione hotspot può essere testata anche utilizzando la suite di test per i fornitori (VTS, Vendor Test Suite).

Test delle unità

Verifica il pacchetto hotspot utilizzando i seguenti test.

  • Test di servizio:

    atest packages/modules/Wifi/service/tests/wifitests/
    
  • Test del gestore:

    atest packages/modules/Wifi/framework/tests/
    

Test della Compatibility Test Suite (CTS)

Utilizza i test CTS per convalidare la funzionalità degli hotspot. Il CTS rileva quando la funzione è abilitata e include automaticamente test associati.

Per attivare i test CTS, esegui:

atest android.net.wifi.cts.WifiManagerTest

Suite di test del fornitore (VTS)

Se l'interfaccia HIDL è implementata, esegui:

atest VtsHalWifiHostapdV1_2Target

Se l'interfaccia AIDL è implementata, esegui:

atest VtsHalHostapdTargetTest