Reconocimiento de Wi-Fi

La función de reconocimiento de Wi-Fi agregada en Android 8.0 permite que los dispositivos compatibles se descubran, se conecten y se comuniquen entre sí (se agregó en Android 9) directamente con el protocolo de reconocimiento de Wi-Fi sin acceso a Internet ni a una red móvil. Esta función, basada en la especificación de reconocimiento de Wi-Fi de Wi-Fi Alliance (WFA) (versiones 2.0, 3.0, 3.1 y 4.0), facilita el uso compartido de datos de alta capacidad de procesamiento entre dispositivos de confianza y apps que de otro modo estarían fuera de la red.

Ejemplos y fuente

Para usar esta función, los fabricantes de dispositivos deben implementar la HAL del proveedor de Wi-Fi. En Android 14 y versiones posteriores, la interfaz de la HAL del proveedor se define con AIDL. En Android 13 y versiones anteriores, la interfaz de la HAL del proveedor se define con HIDL.

Sigue la interfaz de Wi-Fi para usar la función de reconocimiento de Wi-Fi. Según la interfaz implementada, puede ser una de las siguientes:

  • AIDL: hardware/interfaces/wifi/aidl
  • HIDL: hardware/interfaces/wifi/1.2 o posterior

Puedes consultar la HAL de Wi-Fi heredada para ver cómo se relaciona con las interfaces AIDL y HIDL: hardware/libhardware_legacy/+/android17-release/include/hardware_legacy/wifi_nan.h.

Implementación

Los fabricantes de dispositivos deben proporcionar compatibilidad con el framework y la HAL o el firmware:

  • Framework:
    • Código del Proyecto de código abierto de Android (AOSP)
    • Habilitar Aware: Requiere una marca de función y una marca de compilación
  • Compatibilidad con la HAL de reconocimiento de Wi-Fi (NAN) (lo que implica compatibilidad con el firmware)

Para implementar esta función, los fabricantes de dispositivos implementan la interfaz de Wi-Fi y habilitan dos marcas de funciones:

  • En BoardConfig.mk o BoardConfig-common.mk, que se encuentra en device/<oem>/<device>, agrega la siguiente marca:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • En device.mk, que se encuentra en device/<oem>/<device>, modifica la PRODUCT_COPY_FILES variable de entorno para incluir compatibilidad con la función de reconocimiento de Wi-Fi:

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

El reconocimiento de Wi-Fi incluye el rango de dispositivos pares con el protocolo IEEE 802.11mc, también conocido como tiempo de ida y vuelta (RTT). Esta subfunción del reconocimiento de Wi-Fi depende de que el dispositivo admita la función de Wi-Fi RTT, es decir, requiere que el dispositivo admita el reconocimiento de Wi-Fi y Wi-Fi RTT. Para obtener más detalles, consulta Wi-Fi RTT.

De lo contrario, todo lo que se requiere para esta función se incluye en AOSP.

Se ignora la marca WIFI_HIDL_FEATURE_AWARE si se especifica la marca WIFI_HAL_INTERFACE_COMBINATIONS. Para obtener más información, consulta Simultaneidad de varias interfaces de Wi-Fi.

Aleatorización de MAC

Android requiere que la dirección MAC de las interfaces de descubrimiento (NMI) y de datos (NDP) de reconocimiento de Wi-Fi se aleatorice y no sea idéntica a la dirección MAC real del dispositivo. Las direcciones MAC deben cumplir con lo siguiente:

  • Aleatorizarse cada vez que se habilite o se vuelva a habilitar el reconocimiento de Wi-Fi
  • Cuando el reconocimiento de Wi-Fi esté habilitado, la dirección MAC debe aleatorizarse en un intervalo regular configurado por el parámetro NanConfigRequest.macAddressRandomizationIntervalSec. El framework lo configura de forma predeterminada en 30 minutos.

Suspender y reanudar

En Android 14 y versiones posteriores, el reconocimiento de Wi-Fi permite que las apps con privilegios puedan suspender y reanudar las sesiones de descubrimiento activas (incluidas todas las rutas de datos asociadas con esas sesiones). Admitir esta capacidad permite que los dispositivos reanuden las sesiones de descubrimiento más rápido y usen menos energía, ya que se pueden suspender.

Si un dispositivo admite esta capacidad de suspender y reanudar, el firmware suspende la sesión de reconocimiento de Wi-Fi cuando una app con privilegios suspende la sesión de descubrimiento. Cuando una sesión de descubrimiento está en estado suspendido, el dispositivo no transmite ni recibe ningún marco para esa sesión, incluidos los NDP activos en esa sesión. Si se suspenden todas las sesiones de descubrimiento, el dispositivo no transmite ni recibe ningún marco de reconocimiento de Wi-Fi.

Cuando una app con privilegios reanuda una sesión de descubrimiento suspendida, el framework devuelve la sesión a su estado anterior, incluidas todas las sesiones de NDP asociadas. Reanudar una sesión de descubrimiento suspendida es más rápido que iniciar el reconocimiento de Wi-Fi y crear una sesión de descubrimiento nueva.

Para admitir la capacidad de suspender y reanudar las sesiones de descubrimiento, los fabricantes de dispositivos deben proporcionar compatibilidad con la HAL y el firmware. Para obtener más información, consulta IWifiNanIface.java.

Los fabricantes de dispositivos pueden usar comunicaciones fuera de banda (por ejemplo, BLE) para sincronizar la suspensión y la reanudación en varios dispositivos.

Validación

Android proporciona un conjunto de pruebas de unidades, pruebas del Conjunto de pruebas de compatibilidad (CTS) y pruebas del Verificador del CTS para validar la función de reconocimiento de Wi-Fi. El reconocimiento de Wi-Fi también se puede probar con el Conjunto de pruebas de proveedores (VTS).

Pruebas de unidades

Las pruebas del paquete de reconocimiento de Wi-Fi se ejecutan con lo siguiente:

Pruebas de servicio:

atest com.android.server.wifi.aware

Pruebas de administrador:

atest android.net.wifi.aware

Pruebas del Conjunto de pruebas de compatibilidad (CTS)

Usa las pruebas del CTS para validar la función de reconocimiento de Wi-Fi. El CTS detecta cuando la función está habilitada y, automáticamente, incluye las pruebas asociadas.

Las pruebas del CTS se pueden activar con lo siguiente:

atest SingleDeviceTest

Pruebas del Verificador del CTS

Las pruebas del Verificador del CTS validan el comportamiento del reconocimiento de Wi-Fi con dos dispositivos: un dispositivo de prueba y un dispositivo que funciona correctamente. Para ejecutar las pruebas, abre el Verificador del CTS y navega a la sección titulada Wi-Fi Aware Tests.