Wi-Fi Aware

La funzionalità Wi-Fi Aware aggiunta in Android 8.0 consente ai dispositivi supportati di rilevarsi, connettersi e misurare la distanza (aggiunta in Android 9) tra loro direttamente utilizzando il protocollo Wi-Fi Aware senza accesso a internet o alla rete cellulare. Questa funzionalità, basata sulla specifica Wi-Fi Aware (versioni 2.0, 3.0, 3.1 e 4.0) della Wi-Fi Alliance (WFA), consente la facile condivisione di dati ad alta velocità tra dispositivi e app attendibili che altrimenti non sono in rete.

Esempi e fonte

Per utilizzare questa funzionalità, i produttori di dispositivi devono implementare l'HAL 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 tratta di:

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

Puoi fare riferimento all'HAL Wi-Fi legacy per vedere la correlazione con le interfacce AIDL e HIDL: hardware/libhardware_legacy/+/android16-release/include/hardware_legacy/wifi_nan.h.

Implementazione

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

  • Framework:
    • Codice AOSP
    • Abilita Aware: richiede sia un flag funzionalità sia un flag build
  • Supporto HAL (livello di astrazione hardware) 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, che si trova in device/<oem>/<device>, aggiungi il seguente flag:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • In device.mk che si trova in device/<oem>/<device>, modifica la variabile di ambiente PRODUCT_COPY_FILES in modo da includere il supporto per la 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, 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 che Wi-Fi RTT. Per maggiori dettagli, consulta Wi-Fi RTT.

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 Concorrenza multi-interfaccia Wi-Fi.

Randomizzazione MAC

Android richiede che l'indirizzo MAC delle interfacce di rilevamento (NMI) e dati (NDP) di Wi-Fi Aware sia randomizzato e non identico al vero indirizzo MAC del dispositivo. Gli indirizzi MAC devono essere:

  • Viene assegnato in modo casuale ogni volta che Wi-Fi Aware viene attivato o riattivato.
  • Quando Wi-Fi Aware è attivo, l'indirizzo MAC deve essere randomizzato a intervalli regolari configurati dal parametro NanConfigRequest.macAddressRandomizationIntervalSec. Questa è configurata dal framework per impostazione predefinita su 30 minuti.

Sospensione e ripresa

In Android 14 e versioni successive, Wi-Fi Aware supporta la possibilità per le app con privilegi di sospendere e riprendere le sessioni di rilevamento attive (inclusi tutti i percorsi dei dati associati a queste sessioni). Il supporto di questa funzionalità consente ai dispositivi di riprendere più rapidamente le sessioni di rilevamento 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 sospeso, il dispositivo non trasmette né riceve frame per quella sessione, inclusi eventuali NDP attivi nella sessione. Se tutte le sessioni di rilevamento sono sospese, il dispositivo non trasmette né riceve frame Wi-Fi Aware.

Quando un'app con privilegi riprende una sessione di rilevamento sospesa, il framework ripristina lo stato precedente della sessione, 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 di HAL e firmware. Per maggiori dettagli, vedi IWifiNanIface.java.

I produttori di dispositivi possono utilizzare comunicazioni fuori banda (ad esempio, BLE) per sincronizzare la sospensione e la ripresa su più dispositivi.

Convalida

Android fornisce una serie di test unitari, test Compatibility Test Suite (CTS) e test 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 del servizio:

atest com.android.server.wifi.aware

Test del gestore:

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à è abilitata e include automaticamente i test associati.

I test CTS possono essere attivati utilizzando:

atest SingleDeviceTest

Test di CTS Verifier

I test CTS Verifier convalidano il comportamento di Wi-Fi Aware utilizzando due dispositivi: un dispositivo di test e un dispositivo funzionante. Per eseguire i test, apri CTS Verifier e vai alla sezione intitolata Test Wi-Fi Aware.