Concurrencia Wi-Fi STA/STA

Android 12 presenta la concurrencia Wi-Fi STA/STA, que permite que los dispositivos se conecten a dos redes Wi-Fi al mismo tiempo. Esta característica opcional permite las siguientes funciones.

  • Hacer antes de interrumpir : el dispositivo se conecta a una nueva red Wi-Fi antes de interrumpir la conexión existente. Esto da como resultado transiciones más suaves al cambiar entre redes Wi-Fi.
  • Conexión simultánea solo local y de Internet : el dispositivo se conecta a una red solo local sin interrumpir la conexión principal de suministro de Internet del dispositivo.
  • Conexión a Internet y restringida simultánea : el dispositivo se conecta a una red restringida (disponible solo para ciertas aplicaciones privilegiadas) sin interrumpir la conexión principal de Internet del dispositivo.

Esta página describe el comportamiento del dispositivo cuando esta función está habilitada y los detalles de implementación para los fabricantes y proveedores de dispositivos.

Implementación

Los dispositivos deben ser compatibles con lo siguiente para implementar la simultaneidad Wi-Fi STA/STA:

  • El chip o firmware Wi-Fi debe admitir dos conexiones STA simultáneas. El firmware debe admitir todas las combinaciones de canales y bandas para ambas conexiones. Para evitar problemas de rendimiento, recomendamos usar un chip Wi-Fi compatible con DBS 2x2+2x2.

  • El dispositivo debe admitir las siguientes API en el proveedor HAL versión 1.5

    • IWifiChip.setMultiStaPrimaryConnection()
    • IWifiChip.setMultiStaUseCase()
  • La combinación de interfaz HAL Wi-Fi debe tener dos interfaces STA simultáneas expuestas mediante un formato de especificación como [{STA} <= 2, ...] . Para obtener más información, consulte Simultaneidad de múltiples interfaces Wi-Fi .

Si se cumplen esos requisitos previos, implemente la simultaneidad Wi-Fi STA/STA haciendo lo siguiente:

  1. Habilite una o más funciones individualmente usando superposiciones de recursos de tiempo de ejecución (deshabilitadas de forma predeterminada).

    • Hacer antes de interrumpir : config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • Conexión simultánea solo local e Internet : config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • Conexión a Internet y restringida simultánea : config_wifiMultiStaRestrictedConcurrencyEnabled
  2. Valide cada implementación como se describe en sus respectivas secciones a continuación.

Para admitir mejor la simultaneidad Wi-Fi STA/STA, recomendamos que los marcos y las aplicaciones personalizados de OEM usen el método NetworkCallback#onCapabilitiesChanged() en lugar de WifiManager#getConnectionInfo() , que solo devuelve WifiInfo para una sola red y quedó obsoleto en Android 12 Para obtener más información, consulte API de solicitud de red Wi-Fi para conectividad punto a punto .

Hacer antes de romper

La función de hacer antes de interrumpir permite que los dispositivos se conecten a una nueva red Wi-Fi mientras mantienen la conexión de la red Wi-Fi existente, y solo se desconectan de la red anterior cuando se conecta con éxito a la nueva red Wi-Fi y tiene acceso a Internet.

El caso de uso de hacer antes de interrumpir aborda los siguientes problemas en Android 11 o versiones anteriores, donde el dispositivo debe desconectarse de la red Wi-Fi existente antes de conectarse a una nueva red (interrumpir antes de hacer).

  • Al conectarse a una nueva red, el dispositivo puede descubrir que tiene guardada una contraseña Wi-Fi incorrecta o que la nueva red no tiene acceso a Internet. Esto obliga al dispositivo a volver a la red anterior, lo que lleva a una cantidad significativa de tiempo sin conectividad Wi-Fi.

  • La red anterior se desconecta abruptamente, lo que significa que todos los enchufes se cierran. Las aplicaciones a menudo no reaccionan bien a una pérdida repentina de conectividad y esto puede hacer que el usuario experimente unos segundos sin conexión a Internet hasta que la nueva conexión esté completamente establecida.

  • La red predeterminada cambia dos veces, de la red Wi-Fi anterior a la red celular y luego de la red celular a la nueva red Wi-Fi. Esto hace que las aplicaciones reaccionen dos veces a los cambios de red. El dispositivo también debe pasar un breve período de tiempo utilizando datos móviles.

El flujo de hacer antes de interrumpir solo se usa para cambios de red Wi-Fi automáticos iniciados por el sistema operativo. Los conmutadores de red iniciados por el usuario utilizan el flujo heredado de ruptura antes de la creación, en el que la red anterior se desconecta por completo antes de que se conecte la nueva red. En ciertos casos, el flujo break-before-make se usa incluso en cambios automáticos iniciados por el sistema operativo, por ejemplo, cuando se cambia entre dos redes, ambas configuradas para usar la dirección MAC de fábrica.

Las aplicaciones pueden verificar si este caso de uso es compatible con el dispositivo mediante la WifiManager#isMakeBeforeBreakWifiSwitchingSupported() .

Validación de hacer antes de romper

Para validar su implementación, active un cambio de red Wi-Fi automático (asegurándose de que esté disponible una red con una intensidad de señal más fuerte que la red conectada actualmente) y verifique que el dispositivo mantenga la conexión existente mientras se conecta a la nueva red. Para ver el estado de ambas interfaces Wi-Fi y verificar que ambas estén conectadas, use el siguiente comando.

adb shell wpa_cli -i wlan0 status ; echo ; adb shell wpa_cli -i wlan1 status

Si la nueva red no tiene conectividad, el dispositivo intenta conectarse a la red, mientras mantiene la conexión con la red existente, y cancela el intento cuando detecta que la nueva red no tiene Internet. Luego, el dispositivo continúa usando la conexión existente como la red Wi-Fi principal.

Conexión simultánea solo local e Internet

La función de conexión a Internet y solo local simultánea permite que los dispositivos se conecten a una conexión solo local, como una conexión a un dispositivo IoT, al mismo tiempo que la red proveedora de Internet principal. Esta función mejora la experiencia del usuario cuando se conecta directamente a dispositivos IoT, como cámaras, lo cual es posible a través de la API WifiNetworkSpecifier agregada en Android 10.

En Android 11 y versiones anteriores, los dispositivos se desconectan de la red Wi-Fi principal cuando se conectan a un dispositivo IoT, lo que provoca una pérdida de conectividad a Internet (a menos que el dispositivo tenga otro tipo de transporte disponible, como datos móviles).

Las aplicaciones pueden verificar si esta función es compatible con el dispositivo mediante la WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported() .

Para obtener más información sobre los cambios en la función de conexión a Internet y solo local simultánea en Android 12, consulte API de solicitud de red Wi-Fi para conectividad punto a punto .

Validación de la conexión solo local y de Internet

Para validar esta función, utilice las siguientes pruebas CTS y ACTS:

  • CTS: MultiStaConcurrencyWifiNetworkSpecifierTest
  • Actos: WifiStaConcurrencyNetworkRequestTest

Conexión a internet y restringida concurrente

La función de conexión a Internet y restringida simultánea permite que el dispositivo se conecte simultáneamente a una red Wi-Fi principal para el usuario y a una red Wi-Fi restringida que solo está disponible para aplicaciones seleccionadas.

Las aplicaciones pueden verificar si esta función es compatible con el dispositivo mediante la WifiManager#isStaConcurrencyForRestrictedConnectionsSupported() .

Para permitir que un dispositivo se conecte a redes Wi-Fi restringidas secundarias, siga estos pasos:

  1. Agregue sugerencias de redes Wi-Fi con setOemPaid o setOemPrivate establecido en verdadero.

  2. En ConnectivityManager , presente una NetworkRequest con las capacidades correspondientes:

Cuando el dispositivo detecta resultados de escaneo con una red que coincide con la sugerencia privada o de pago del OEM, se conecta automáticamente a ella como una red secundaria.

Validación de la conexión a Internet y restringida concurrente

Para validar esta función, utilice las siguientes pruebas CTS y ACTS:

  • CTS: MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest
  • Actos: WifiStaConcurrencyNetworkRequestTest

Directrices del chip Wi-Fi del proveedor

Para los proveedores de chips Wi-Fi, use las siguientes pautas para admitir la simultaneidad Wi-Fi STA/STA.

El chip Wi-Fi debe admitir conexiones STA concurrentes dobles. Esto significa que admite lo siguiente:

  • Cada interfaz STA tiene un MAC único programable por el marco.
  • La interfaz STA secundaria se puede crear y destruir dinámicamente.
  • Cada STA se puede conectar a un SSID diferente (ya sea dentro de la misma banda o en una banda diferente).
  • Cada STA se puede conectar al mismo SSID (ya sea dentro de la misma banda o en una banda diferente). Las dos STA nunca deben estar conectadas al mismo BSSID.

Las características críticas deben operar por interfaz y deben estar disponibles en la interfaz principal. La siguiente es una lista de estas características críticas:

  • El roaming debe admitirse al menos en la interfaz principal (establecida mediante IWifiChip.setMultiStaPrimaryConnection() ). Si se admite el roaming en ambas interfaces, las decisiones sobre una conexión no deben entrar en conflicto con la segunda conexión simultánea. Por ejemplo, una interfaz no debe desplazarse al BSSID de la otra conexión.

  • APF (y otras descargas como ARP y NS) deben admitirse al menos en la interfaz principal (configurada mediante IWifiChip.setMultiStaPrimaryConnection() ).

  • Las estadísticas de la capa de enlace deben operar por interfaz.

Las siguientes son implementaciones de chips Wi-Fi recomendadas para diferentes escenarios de simultaneidad:

  • El chip Wi-Fi debe permitir que el marco llame a IWifiChip.setMultiStaUseCase() con una de las siguientes constantes para especificar la función actual:

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY : especifica la función Make-Before-Break. Se debe priorizar la calidad de la conexión primaria sobre la conexión secundaria.
    • DUAL_STA_NON_TRANSIENT_UNBIASED : especifica la conexión simultánea solo local y de Internet o la función simultánea de conexión restringida y de Internet . Se debe priorizar por igual la calidad de ambas conexiones.
  • Debido a que las STA simultáneas duales pueden generar modos de operación MCC, SCC y DBS, la implementación del proveedor debe elegir la mejor configuración de radio cuando el marco llama a IWifiChip.setMultiStaUseCase() para indicar la función. Las siguientes son pautas generales:

    • Se prefiere 2x2+2x2 DBS si está disponible.
    • Evite 1x1+1x1 DBS si es posible debido al impacto excesivo en la calidad de la conexión. En su lugar, prefiera MCC.
    • El ciclo de trabajo del MCC debe ser configurable por el controlador o el firmware para las diversas funciones. El marco no establece el ciclo de trabajo de MCC directamente, pero consulta esta información mediante StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent .
    • Si usa MCC, recomendamos los siguientes ciclos de trabajo entre las conexiones primaria y secundaria:

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY : 70 % principal, 30 % secundario.
      • DUAL_STA_NON_TRANSIENT_UNBIASED : 50 % principal, 50 % secundario.