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 è determinata 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 offre 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 dei fornitori (VTS).

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