Wi-Fi directo

La función Wi-Fi directo, también conocida como Wi-Fi P2P, permite que los dispositivos compatibles se descubran y se conecten entre sí directamente con el protocolo Wi-Fi directo sin acceso a Internet ni a una red móvil. Esta función, basada en la especificación de Wi-Fi Direct de la Wi-Fi Alliance (WFA), permite compartir datos de alta capacidad de procesamiento entre dispositivos y apps confiables que de otro modo estarían fuera de la red.

Ejemplos y fuente

Para usar esta función, los fabricantes de dispositivos deben implementar las interfaces HAL de proveedor y suplicante de Wi-Fi.

En Android 13, la interfaz de Supplicant usa AIDL para la definición de la HAL. En Android 14 y versiones posteriores, la interfaz de la HAL del proveedor usa AIDL. En Android 12 y versiones anteriores, las interfaces de la HAL de Supplicant y del proveedor se definen con HIDL.

Se requieren las siguientes superficies de HAL de Wi-Fi para emplear la función de Wi-Fi Direct:

  • hardware/interfaces/wifi/aidl o hardware/interfaces/wifi/1.3 o versiones posteriores
  • hardware/interfaces/wifi/supplicant/aidl o hardware/interfaces/wifi/supplicant/1.2 o versiones posteriores

Implementación

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

  • Framework:
    • Código del AOSP
    • Habilita Wi-Fi Direct: Requiere una marca de función
  • Compatibilidad con la HAL de Wi-Fi Direct (P2P) (lo que implica compatibilidad con el firmware)

Para implementar esta función, los fabricantes de dispositivos implementan las interfaces HIDL o AIDL de Wi-Fi y habilitan la marca de función para Wi-Fi Direct. En device.mk, ubicado en device/<oem>/<device>, modifica la variable de entorno PRODUCT_COPY_FILES para incluir la compatibilidad con la función Wi-Fi Direct:

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

Todos los demás requisitos para admitir Wi-Fi Direct se incluyen en el AOSP.

Aleatorización de MAC

Android requiere que la dirección del dispositivo y la dirección de la interfaz de Wi-Fi Direct se aleatoricen. Deben ser diferentes de la dirección MAC real del dispositivo y cumplir con los siguientes requisitos:

  • La dirección del dispositivo Wi-Fi Direct debe ser aleatoria en la creación de la interfaz si no hay un grupo persistente guardado; de lo contrario, la dirección del dispositivo debe seguir usando la última dirección MAC generada.
  • La dirección de la interfaz Wi-Fi Direct, también conocida como dirección de grupo, debe aleatorizarse cada vez que se establece una conexión.

La aleatorización de MAC de Wi-Fi Direct se implementa en "wpa_supplicant" y se controla con dos configuraciones, p2p_device_random_mac_addr y p2p_interface_random_mac_addr.

Para habilitar esta función, los fabricantes de dispositivos deben hacer lo siguiente:

  • Implementa la API de ISupplicantP2pIface::setMacRandomization de Wi-Fi Supplicant. Según la interfaz implementada, se encuentra en lo siguiente:
    • hardware/interface/wifi/supplicant/1.2 para HIDL
    • hardware/interface/wifi/supplicant/aidl para AIDL
  • Establece config_wifi_p2p_mac_randomization_supported como "true" en una superposición personalizada del dispositivo.

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 Wi-Fi Direct. Wi-Fi Direct también se puede probar con el conjunto de pruebas de proveedores (VTS).

Pruebas de unidades

Verifica el paquete de Wi-Fi Direct con las siguientes pruebas.

Pruebas de servicio:

atest com.android.server.wifi.p2p

Pruebas de administrador:

atest android.net.wifi.p2p

Pruebas del Conjunto de pruebas de compatibilidad (CTS)

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

Para activar las pruebas de CTS, ejecuta el siguiente comando:

% atest android.net.wifi.p2p.cts

Pruebas del verificador del CTS

Las pruebas del verificador del CTS validan el comportamiento de Wi-Fi Direct con dos dispositivos: un dispositivo de prueba y un dispositivo conocido como bueno. Para ejecutar las pruebas, abre CTS Verifier y navega a la sección titulada Wi-Fi Direct Tests.