Wi-Fi Aware

La fonctionnalité Wi-Fi Aware ajoutée dans Android 8.0 permet aux appareils compatibles de se découvrir, de se connecter et de se situer les uns par rapport aux autres (fonctionnalité ajoutée dans Android 9) directement à l'aide du protocole Wi-Fi Aware, sans accès à Internet ni au réseau mobile. Cette fonctionnalité, basée sur la spécification Wi-Fi Aware (versions 2.0, 3.0, 3.1 et 4.0) de la Wi-Fi Alliance (WFA), permet de partager facilement des données à haut débit entre des appareils et des applications de confiance qui ne sont pas connectés au réseau.

Exemples et source

Pour utiliser cette fonctionnalité, les fabricants d'appareils doivent implémenter le HAL du fournisseur Wi-Fi. Dans Android 14 et versions ultérieures, l'interface HAL du fournisseur est définie à l'aide d'AIDL. Pour Android 13 et versions antérieures, l'interface HAL du fournisseur est définie à l'aide de HIDL.

Suivez l'interface Wi-Fi pour utiliser la fonctionnalité Wi-Fi Aware. Selon l'interface implémentée, il s'agit de l'un des éléments suivants :

  • AIDL : hardware/interfaces/wifi/aidl
  • HIDL : hardware/interfaces/wifi/1.2 ou version ultérieure

Vous pouvez vous référer à l'ancienne HAL Wi-Fi pour voir comment elle est corrélée aux interfaces AIDL et HIDL : hardware/libhardware_legacy/+/android16-release/include/hardware_legacy/wifi_nan.h.

Implémentation

Les fabricants d'appareils doivent fournir une assistance pour le framework, le HAL et le micrologiciel :

  • Framework :
    • Code AOSP
    • Activer Aware : nécessite un flag de fonctionnalité et un flag de compilation
  • Prise en charge de la couche HAL Wi-Fi Aware (NAN) (implique la prise en charge du micrologiciel)

Pour implémenter cette fonctionnalité, les fabricants d'appareils implémentent l'interface Wi-Fi et activent deux indicateurs de fonctionnalité :

  • Dans BoardConfig.mk ou BoardConfig-common.mk situé dans device/<oem>/<device>, ajoutez l'indicateur suivant :

    WIFI_HIDL_FEATURE_AWARE := true
    
  • Dans device.mk situé dans device/<oem>/<device>, modifiez la variable d'environnement PRODUCT_COPY_FILES pour inclure la compatibilité avec la fonctionnalité 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 inclut la mesure de la distance aux appareils pairs à l'aide du protocole IEEE 802.11mc, également appelé Round Trip Time (RTT). Cette sous-fonctionnalité de Wi-Fi Aware est conditionnée à la prise en charge de la fonctionnalité Wi-Fi RTT par l'appareil, c'est-à-dire qu'elle nécessite que l'appareil soit compatible avec Wi-Fi Aware et Wi-Fi RTT. Pour en savoir plus, consultez Wi-Fi RTT.

Sinon, tout ce qui est nécessaire pour cette fonctionnalité est inclus dans AOSP.

L'option WIFI_HIDL_FEATURE_AWARE est ignorée si l'option WIFI_HAL_INTERFACE_COMBINATIONS est spécifiée. Pour en savoir plus, consultez Simultanéité multi-interface Wi-Fi.

Sélection aléatoire de l'adresse MAC

Android exige que l'adresse MAC des interfaces de découverte (NMI) et de données (NDP) Wi-Fi Aware soit aléatoire et ne soit pas identique à la véritable adresse MAC de l'appareil. Les adresses MAC doivent être les suivantes :

  • Elle est générée de manière aléatoire chaque fois que Wi-Fi Aware est activé ou réactivé.
  • Lorsque Wi-Fi Aware est activé, l'adresse MAC doit être sélectionnée de manière aléatoire à un intervalle régulier configuré par le paramètre NanConfigRequest.macAddressRandomizationIntervalSec. Par défaut, le framework définit cette valeur sur 30 minutes.

Suspendre et reprendre

Dans Android 14 et les versions ultérieures, Wi-Fi Aware permet aux applications privilégiées de suspendre et de reprendre les sessions de découverte actives (y compris tous les chemins de données associés à ces sessions). La prise en charge de cette fonctionnalité permet aux appareils de reprendre les sessions de découverte plus rapidement et d'utiliser moins d'énergie, car les sessions de découverte peuvent être suspendues.

Si un appareil est compatible avec cette fonctionnalité de suspension et de reprise, le micrologiciel suspend la session Wi-Fi Aware lorsqu'une application privilégiée suspend la session de découverte. Lorsqu'une session de découverte est suspendue, l'appareil ne transmet ni ne reçoit de trames pour cette session, y compris les NDP actifs dans cette session. Si toutes les sessions de découverte sont suspendues, l'appareil ne transmet ni ne reçoit aucun frame Wi-Fi Aware.

Lorsqu'une application privilégiée reprend une session de découverte suspendue, le framework restaure la session dans son état précédent, y compris toutes les sessions NDP associées. La reprise d'une session de découverte suspendue est plus rapide que l'activation de Wi-Fi Aware et la création d'une session de découverte.

Pour permettre la suspension et la reprise des sessions de découverte, les fabricants d'appareils doivent fournir une assistance HAL et micrologicielle. Pour plus d'informations, consultez IWifiNanIface.java.

Les fabricants d'appareils peuvent utiliser des communications hors bande (par exemple, BLE) pour synchroniser la suspension et la reprise sur plusieurs appareils.

Validation

Android fournit un ensemble de tests unitaires, de tests Compatibility Test Suite (CTS) et de tests CTS Verifier pour valider la fonctionnalité Wi-Fi Aware. Wi-Fi Aware peut également être testé à l'aide de la Vendor Test Suite (VTS).

Tests unitaires

Les tests du package Wi-Fi Aware sont exécutés à l'aide des éléments suivants :

Tests de service :

atest com.android.server.wifi.aware

Tests pour les administrateurs :

atest android.net.wifi.aware

Tests de la suite de tests de compatibilité (CTS)

Utilisez les tests CTS pour valider la fonctionnalité Wi-Fi Aware. Le CTS détecte lorsque la fonctionnalité est activée et inclut automatiquement les tests associés.

Les tests CTS peuvent être déclenchés à l'aide des méthodes suivantes :

atest SingleDeviceTest

Tests du Vérificateur CTS

Les tests CTS Verifier valident le comportement Wi-Fi Aware à l'aide de deux appareils : un appareil de test et un appareil connu comme fonctionnel. Pour exécuter les tests, ouvrez CTS Verifier et accédez à la section "Wi-Fi Aware Tests" (Tests Wi-Fi Aware).