Wi-Fi Aware

La funzionalità Wi-Fi Aware aggiunta in Android 8.0 consente ai dispositivi supportati di rilevarsi, connettersi e comunicare tra loro direttamente utilizzando il protocollo Wi-Fi Aware senza accesso a internet o alla rete mobile. Questa funzionalità, basata sulla specifica Wi-Fi Aware (versioni 2.0, 3.0, 3.1 e 4.0) della Wi-Fi Alliance (WFA), consente di condividere facilmente dati ad alta velocità tra dispositivi e app attendibili che altrimenti non sono in 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, può essere:

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

Puoi fare riferimento all'HAL Wi-Fi precedente per vedere come è correlato alle interfacce AIDL e HIDL: 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
    • Abilita Aware: richiede sia un flag funzionalità sia un flag build
  • 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 aware:

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

Wi-Fi Aware include la misurazione della distanza dai dispositivi peer utilizzando il protocollo IEEE 802.11mc, conosciuto anche come tempo di transito (RTT). Questa funzionalità secondaria di Wi-Fi Aware è obbligatoria se il dispositivo supporta la funzionalità Wi-Fi RTT, 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 è necessario per questa funzionalità è incluso in AOSP.

Il flag WIFI_HIDL_FEATURE_AWARE viene ignorato se viene specificato il flag WIFI_HAL_INTERFACE_COMBINATIONS. Per ulteriori informazioni, consulta Contemporaneità multi-interfaccia 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 scelto in modo casuale ogni volta che la funzionalità Wi-Fi Aware viene attivata o riattivata.
  • Quando Wi-Fi Aware è attivato, 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 ripresa, il firmware sospende la sessione Wi-Fi Aware quando un'app privilegiata 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 Wi-Fi Aware.

Quando un'app privilegiata riprende una sessione di rilevamento sospesa, il framework ripristina la sessione allo stato precedente, incluse tutte le sessioni NDP associate. La ripresa di una sessione di rilevamento sospesa è più rapida rispetto all'attivazione di Wi-Fi Aware e alla creazione di 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, consulta 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. CTS rileva quando la funzionalità è attivata 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 test e un dispositivo noto come buono. Per eseguire i test, apri CTS Verifier e vai alla sezione Wi-Fi Aware Tests (Test Wi-Fi Aware).