Wi-Fi directo

La función Wi-Fi Direct, también conocida como Wi-Fi P2P, permite que los dispositivos compatibles se descubran y se conecten entre sí directamente mediante el protocolo Wi-Fi Direct sin acceso a Internet ni a la red móvil. Esta función, basada en la especificación 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 de HAL del proveedor y solicitante de Wi-Fi.

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

Se requieren las siguientes plataformas HAL de Wi-Fi para usar la función 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 una versión posterior

Implementación

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

  • Marco de trabajo:
    • Código del AOSP
    • Habilitar Wi-Fi directo: Requiere una marca de función.
  • Compatibilidad con HAL para Wi-Fi directo (P2P), lo que implica compatibilidad con firmware

Para implementar esta función, los fabricantes de dispositivos implementan las interfaces Wi-Fi HIDL o AIDL 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 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 AOSP.

Aleatorización de MAC

Android requiere que la dirección del dispositivo y la dirección de la interfaz de Wi-Fi Direct sean aleatorias. Deben ser diferentes de la dirección MAC verdadera del dispositivo y deben cumplir los siguientes requisitos:

  • La dirección del dispositivo Wi-Fi Direct debe ser aleatoria cuando se crea 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 ser aleatoria 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 parámetros de configuración, p2p_device_random_mac_addr y p2p_interface_random_mac_addr.

Para habilitar esta función, los fabricantes de dispositivos deben cumplir con los siguientes requisitos:

  • 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 en "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 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 directo mediante las siguientes pruebas.

Pruebas de servicio:

atest com.android.server.wifi.p2p

Pruebas del administrador:

atest android.net.wifi.p2p

Pruebas del conjunto de pruebas de compatibilidad (CTS)

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

Para activar las pruebas de CTS, ejecuta lo siguiente:

% atest android.net.wifi.p2p.cts

Pruebas del verificador del CTS

Las pruebas del verificador del CTS validan el comportamiento de Wi-Fi directo mediante dos dispositivos: un dispositivo de prueba y uno bueno conocido. Para ejecutar las pruebas, abre el verificador del CTS y navega a la sección titulada Pruebas de Wi-Fi directo.