Wi-Fi Aware

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

Exemples et source

Pour utiliser cette fonctionnalité, les fabricants d'appareils doivent implémenter la 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 du Wi-Fi pour utiliser la fonctionnalité Wi-Fi Aware. En fonction de l'interface implémentée, plusieurs options s'offrent à vous:

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

Vous pouvez vous reporter à l'ancien HAL Wi-Fi pour voir sa corrélation avec les interfaces AIDL et HIDL : hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h.

Implémentation

Les fabricants d'appareils doivent fournir une compatibilité avec le framework et le micrologiciel HAL/micrologiciel:

  • Framework:
    • Code AOSP
    • Activer Aware: nécessite à la fois un flag de fonctionnalité et un indicateur de compilation
  • Compatibilité HAL Wi-Fi Aware (NAN) (ce qui implique la compatibilité avec le micrologiciel)

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

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

    WIFI_HIDL_FEATURE_AWARE := true
    
  • Dans le fichier 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 des fonctionnalités allant des appareils pairs à l'aide du protocole IEEE 802.11mc, également appelé délai aller-retour (DAR). Cette sous-fonctionnalité de Wi-Fi Aware n'est disponible que pour l'appareil compatible avec la fonctionnalité de DAR Wi-Fi. En d'autres termes, l'appareil doit être compatible à la fois avec le Wi-Fi Aware et le DAR Wi-Fi. Pour en savoir plus, consultez DAR Wi-Fi.

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

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

randomisation MAC

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

  • Chaque fois que Wi-Fi Aware est activé ou réactivé, les résultats sont aléatoires.
  • Lorsque le service Wi-Fi Aware est activé, l'adresse MAC doit passer de façon aléatoire à un intervalle régulier configuré par le paramètre NanConfigRequest.macAddressRandomizationIntervalSec. Par défaut, cette durée est configurée par le framework sur 30 minutes.

Suspendre et réactiver

Dans Android 14 et versions ultérieures, Wi-Fi Aware permet aux applications privilégiées de suspendre et de reprendre des sessions de découverte actives (y compris tous les chemins de données associés à ces sessions). Cette possibilité 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 prend en charge 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 frames 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 de trames Wi-Fi Aware.

Lorsqu'une application privilégiée reprend une session de découverte suspendue, le framework renvoie la session à son état précédent, y compris toutes les sessions NDP associées. Il est plus rapide de reprendre une session de découverte suspendue que d'activer Wi-Fi Aware et de créer une session de découverte.

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

Les fabricants d'appareils peuvent utiliser les 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. Vous pouvez également tester le Wi-Fi Aware à l'aide de la suite de test fournisseur (VTS).

Tests unitaires

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

Tests du service:

atest com.android.server.wifi.aware

Tests du responsable:

atest android.net.wifi.aware

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

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

Les tests CTS peuvent être déclenchés à l'aide des éléments suivants:

atest SingleDeviceTest

Tests CTS Verifier

Les tests CTS Verifier valident le comportement de Wi-Fi Aware à l'aide de deux appareils: un appareil de test et un appareil produit connu. Pour exécuter les tests, ouvrez l'outil de vérification CTS et accédez à la section intitulée Tests de reconnaissance du Wi-Fi.