Wi-Fi Aware

La funzionalità Wi-Fi Aware aggiunta in Android 8.0 consente ai dispositivi che supportano il rilevamento, la connessione e il raggio d'azione (aggiunti in Android 9) direttamente tramite il protocollo Wi-Fi Aware senza accesso a internet o alla rete mobile. Questa funzionalità, basata sulla specifica Wi-Fi Aware di Wi-Fi Alliance (WFA), (versioni 2.0, 3.0, 3.1 e 4.0), consente di condividere facilmente i dati a velocità effettiva elevata tra dispositivi e app attendibili che altrimenti si trovano all'esterno della rete.

Esempi e origine

Per utilizzare questa funzionalità, i produttori di dispositivi devono implementare l'HAL del fornitore Wi-Fi. In Android 14 e versioni successive, l'interfaccia HAL del fornitore è definita utilizzando AIDL. Per Android 13 e versioni precedenti, l'interfaccia HAL del fornitore è definita utilizzando HIDL.

Segui l'interfaccia Wi-Fi per utilizzare la funzionalità Wi-Fi Aware. A seconda dell'interfaccia implementata, si può procedere in uno dei seguenti modi:

  • AIDL: hardware/interfaces/wifi/aidl
  • HIDL: hardware/interfaces/wifi/1.2 o versioni successive

Per vedere come è correlato alle interfacce AIDL e HIDL, puoi fare riferimento alla versione precedente dell'HAL Wi-Fi: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h.

Implementazione

I produttori di dispositivi devono fornire il supporto sia del framework sia di HAL/firmware:

  • Framework:
    • Codice AOSP
    • Attiva Aware: richiede sia un flag della funzionalità sia un flag di compilazione
  • Supporto HAL Wi-Fi Aware (NAN) (che implica il supporto del firmware)

Per implementare questa funzionalità, i produttori di dispositivi implementano l'interfaccia Wi-Fi e attivano due flag di funzionalità:

  • In BoardConfig.mk o BoardConfig-common.mk in device/<oem>/<device>, aggiungi il seguente flag:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • In device.mk, situato in device/<oem>/<device>, modifica la variabile di ambiente PRODUCT_COPY_FILES in modo da includere il supporto della funzionalità Wi-Fi consapevole:

    PRODUCT_COPY_FILES +=
    frameworks/native/data/etc/android.hardware.wifi.aware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.aware.xml
    

Il Wi-Fi Aware comprende i dispositivi peer che utilizzano il protocollo IEEE 802.11mc, noto anche come Round Trip Time (RTT). Questa funzionalità secondaria di Wi-Fi Aware è condizionata al supporto della funzionalità Wi-Fi RTT da parte del dispositivo, ovvero richiede che il dispositivo supporti sia Wi-Fi Aware sia Wi-Fi RTT. Per maggiori dettagli, consulta RTT Wi-Fi.

In caso contrario, tutto ciò che serve per questa funzionalità è incluso in AOSP.

Il flag WIFI_HIDL_FEATURE_AWARE viene ignorato se viene specificato il flag WIFI_HAL_INTERFACE_COMBINATIONS. Per maggiori informazioni, consulta Contemporaneità tra più interfacce Wi-Fi.

Randomizzazione MAC

Android richiede che l'indirizzo MAC della scoperta Wi-Fi Aware (NMI) e delle interfacce di dati (NDP) sia casuale e non identico all'indirizzo MAC reale del dispositivo. Gli indirizzi MAC devono essere:

  • Viene generato in modo casuale ogni volta che la funzionalità Wi-Fi Aware viene attivata o riattivata.
  • Quando è attiva la funzionalità Wi-Fi Aware, l'indirizzo MAC deve essere randomizzato a un intervallo regolare configurato dal parametro NanConfigRequest.macAddressRandomizationIntervalSec. Per impostazione predefinita, il framework lo configura su 30 minuti.

Sospendi e riprendi

In Android 14 e versioni successive, la tecnologia Wi-Fi Aware supporta la possibilità per le app con privilegi di sospendere e riprendere le sessioni di rilevamento attive (inclusi tutti i percorsi dati associati a queste sessioni). Il supporto di questa funzionalità consente ai dispositivi di riprendere le sessioni di rilevamento più rapidamente e di consumare meno energia perché le sessioni di rilevamento possono essere sospese.

Se un dispositivo supporta questa funzionalità di sospensione e ripristino, il firmware sospende la sessione Wi-Fi Aware quando un'app con privilegi sospende la sessione di rilevamento. Quando una sessione di rilevamento è in stato di sospensione, il dispositivo non trasmette o riceve frame per quella sessione, inclusi eventuali NDP attivi al suo interno. Se tutte le sessioni di rilevamento sono sospese, il dispositivo non trasmette o riceve frame Aware Wi-Fi.

Quando un'app privilegiata riprende una sessione di rilevamento sospesa, il framework ripristina la sessione allo stato precedente, incluse tutte le sessioni NDP associate. Riprendi una sessione di rilevamento sospesa è più veloce che attivare Aware Wi-Fi e creare una nuova sessione di rilevamento.

Per supportare la possibilità di sospendere e riprendere le sessioni di rilevamento, i produttori di dispositivi devono fornire il supporto per HAL e il firmware. Per maggiori dettagli, vedi IWifiNanIface.java.

I produttori di dispositivi possono utilizzare le comunicazioni out-of-band (ad esempio BLE) per sincronizzare la sospensione e la ripresa su più dispositivi.

Convalida

Android fornisce un insieme di test di unità, test della suite di test di compatibilità (CTS) e test di CTS Verifier per convalidare la funzionalità Wi-Fi aware. Wi-Fi Aware può essere testato anche utilizzando la Vendor Test Suite (VTS).

Test delle unità

I test del pacchetto Wi-Fi Aware vengono eseguiti utilizzando:

Test di servizio:

atest com.android.server.wifi.aware

Test di gestione:

atest android.net.wifi.aware

Test della suite di test di compatibilità (CTS)

Utilizza i test CTS per convalidare la funzionalità Wi-Fi Aware. Il CTS rileva quando la funzionalità è abilitata e include automaticamente i test associati.

I test CTS possono essere attivati utilizzando:

atest SingleDeviceTest

Test di CTS Verifier

I test di CTS Verifier convalidano il comportamento di Wi-Fi Aware utilizzando due dispositivi: un dispositivo di prova e uno di prodotti noti. Per eseguire i test, apri CTS Verifier e vai alla sezione Wi-Fi Aware Tests (Test Wi-Fi Aware).