Simultaneidad de STA/STA de Wi-Fi

Android 12 incluye simultaneidad de STA/STA de Wi-Fi, que permite que los dispositivos se conecten a dos redes Wi-Fi al mismo tiempo. Esta función opcional habilita las siguientes funciones.

  • Realizar 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 fluidas al cambiar entre redes Wi-Fi
  • Conexión simultánea a Internet y solo local: el dispositivo se conecta a una red solo local sin interrumpir la conexión del dispositivo conexión principal de Internet.
  • Conexión simultánea a Internet y restringida: El dispositivo se conecta a una red restringida (disponible solo para ciertas aplicaciones con privilegios) sin interrumpir la conexión principal del dispositivo.
  • (Android 13 o versiones posteriores) Varios elementos simultáneos con conexión a Internet: El dispositivo se conecta a dos redes sin restricciones y disponibles para todas las apps y proporcionar conectividad a Internet.

En esta página, se describe el comportamiento del dispositivo cuando esta función está habilitada y las información detallada sobre la implementación para fabricantes y proveedores de dispositivos.

Implementación

Los dispositivos deben admitir lo siguiente para implementar STA/STA de Wi-Fi simultaneidad:

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

  • El dispositivo debe admitir las siguientes APIs en el AIDL o HIDL implementación de IWifiChip.

    • IWifiChip.setMultiStaPrimaryConnection(String ifName)
    • IWifiChip.setMultiStaUseCase(MultiStaUseCase useCase)
  • La combinación de interfaces Wi-Fi del HAL debe tener dos interfaces STA simultáneas Se expone con un formato de especificación, como [{STA} <= 2, ...]. Para más información, consulta Simultaneidad de varias interfaces de Wi-Fi.

Si se cumplen esos requisitos previos, implementa la simultaneidad de STA/STA de Wi-Fi de la siguiente manera: lo siguiente:

  1. Habilita una o más funciones de forma individual usando superposiciones de recursos del tiempo de ejecución (inhabilitadas por predeterminada).

    • Haz lo antes de la pausa: config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • Conexión simultánea a Internet y solo local: config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • Conexión a Internet y restringida simultánea: config_wifiMultiStaRestrictedConcurrencyEnabled
    • Varias redes simultáneas con conexión a Internet: config_wifiMultiStaMultiInternetConcurrencyEnabled
  2. Valida cada implementación como se describe en las secciones respectivas.

Para admitir mejor la simultaneidad de STA/STA de Wi-Fi, recomendamos que la personalización por OEM los frameworks y las apps usan el método NetworkCallback#onCapabilitiesChanged() en lugar de WifiManager#getConnectionInfo(), que solo muestra WifiInfo para una sola red y dejó de estar disponible en Android 12. Para más información, consulta API de Wi-Fi Network Request para la conectividad entre pares.

Preparación antes del descanso

La función make-before-break permite que los dispositivos se conecten a una red Wi-Fi nueva. red y, al mismo tiempo, mantiene la conexión de red Wi-Fi existente, solo se desconecta de la red antigua cuando se conecta correctamente a la nueva. que tenga acceso a Internet y una red Wi-Fi.

El caso de uso de “hacer antes del descanso” aborda los siguientes problemas Android 11 o versiones anteriores, en las que se debe desconectar el dispositivo desde la red Wi-Fi existente antes de conectarte a una nueva (separar antes de comenzar).

  • Al conectarse a una nueva red, el dispositivo podría detectar que tiene una Se guardó una contraseña de Wi-Fi incorrecta o que la red nueva no no tienen acceso a Internet. Esto obliga al dispositivo a volver a la versión anterior. red, lo que lleva a pasar mucho tiempo sin conectividad Wi-Fi.

  • La antigua red se desconecta de manera abrupta, lo que significa que todos enchufes se cierran. Las aplicaciones no suelen reaccionar bien ante una pérdida repentina de conectividad y esto puede conducir a la usuario que experimenta unos segundos sin conexión a Internet hasta que la nueva que la conexión de red esté completamente establecida.

  • La red predeterminada cambia dos veces, de la antigua red Wi-Fi a la red móvil, luego, de la red móvil a la nueva red Wi-Fi. Esto hace que las apps reaccionen la red cambia dos veces. Además, el dispositivo debe dedicar una pequeña cantidad de tiempo usando datos móviles.

El flujo que se debe tomar antes de la pausa solo se usa para redes Wi-Fi automáticas o interruptores que inicia el SO. Los switches de red iniciados por el usuario usan flujo de interrupción antes de realizar, en el que la red anterior está completamente desconectada antes de que se conecte la red nueva. En algunos casos, el se usa incluso en interruptores automáticos iniciados por el cuando se cambia entre dos redes configuradas para usar la dirección MAC de fábrica.

Las apps pueden comprobar si este caso de uso es compatible con el dispositivo a través de la API de WifiManager#isMakeBeforeBreakWifiSwitchingSupported().

Valida el paso previo a la pausa

Para validar tu implementación, activa un cambio automático de red Wi-Fi (Garantizando una red con una intensidad de señal más fuerte que la esté disponible la red conectada) y verifica que el dispositivo mantenga la una conexión existente mientras te conectas a la nueva red. Para ver el estado de ambas interfaces Wi-Fi y verificar que ambas estén conectadas, sigue estos pasos: usa 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 intentos de conectarse a la red, mientras mantiene la conexión con la red existente y anula el intento cuando detecta la nueva red no tiene Internet. A continuación, el dispositivo continúa usando el una conexión existente como la red Wi-Fi principal.

Conexión simultánea a Internet y solo local

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

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

Las aplicaciones pueden comprobar si esta función es compatible con el dispositivo a través de la API de WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported().

Para obtener más información sobre los cambios en la configuración simultánea función de conexión en Android 12, consulta API de Wi-Fi Network Request para la conectividad entre pares.

Valida la conexión solo local y a Internet.

Para validar esta función, usa el Prueba del CTS de MultiStaConcurrencyWifiNetworkSpecifierTest.

Conexión a Internet y restringida simultánea

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

Las aplicaciones pueden comprobar si esta función es compatible con el dispositivo a través de la API de WifiManager#isStaConcurrencyForRestrictedConnectionsSupported().

Para permitir que un dispositivo se conecte a redes Wi-Fi restringidas secundarias, haz lo siguiente: sigue estos pasos:

  1. Agrega Sugerencias de redes Wi-Fi con setOemPaid o setOemPrivate se configura como true.

  2. En ConnectivityManager, envía un NetworkRequest con el capacidades:

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

Valida la conexión simultánea a Internet y restringida

Para validar esta función, usa el Prueba del CTS de MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest.

Conexión simultánea a Internet en varias redes

Disponible para Android 13 o versiones posteriores, la función simultánea la función de múltiples redes con conexión a Internet permite que el dispositivo se conectan simultáneamente a dos redes (AP), que no tienen restricciones (todas las apps tienen acceso) y proporcionar acceso a Internet.

Las aplicaciones pueden comprobar si esta función es compatible con el dispositivo a través de la WifiManager#isStaConcurrencyForMultiInternetSupported() .

Si la función es compatible, las aplicaciones con privilegios pueden habilitar la función mediante el uso de WifiManager#setStaConcurrencyForMultiInternetMode(int mode). El tiene los siguientes modos:

Para consultar el modo de función actualmente activo, usa el WifiManager#getStaConcurrencyForMultiInternetMode() .

Cuando la función esté habilitada, sigue estos pasos para solicitar una que proporciona Internet.

  1. Crear un especificador de red Wi-Fi con WifiNetworkSpecifier.Builder Elige una banda para el especificador mediante el setBand() . No especifiques el SSID ni el BSSID como la red adicional para el la banda especificada se selecciona con el framework de Wi-Fi.

  2. Usando ConnectivityManager: crea un objeto NetworkRequest con el NET_CAPABILITY_INTERNET de recuperación ante desastres.

  3. Agrega el especificador a la solicitud de red junto con un NetworkCallback para realizar un seguimiento del estado de la solicitud y emitirla a ConnectivityManager Si una red guardada con la banda solicitada tiene disponible en el resultado del análisis, y la conexión a la red se exitoso, NetworkCallback.onAvailable() se invoca en el objeto de devolución de llamada.

Valida varias redes simultáneas con conexión a Internet

Para validar esta función, usa la siguiente prueba del CTS:

  • CTS: MultiStaConcurrencyMultiInternetWifiNetworkTest

Lineamientos del chip Wi-Fi del proveedor

Los proveedores de chips Wi-Fi deben seguir estos lineamientos para brindar compatibilidad Simultaneidad de STA/STA de Wi-Fi

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

  • Cada interfaz de STA tiene un MAC único que el framework puede programar.
  • La interfaz de STA secundaria se puede crear y destruir de forma dinámica.
  • Cada STA puede conectarse a un SSID diferente (ya sea dentro del mismo o una diferente).
  • Cada STA puede conectarse al mismo SSID (ya sea dentro del mismo o una diferente). Los dos STA nunca deben ser que esté conectada al mismo BSSID.

Las funciones esenciales deben operar por interfaz y se deben disponibles en la interfaz principal. A continuación, se incluye una lista de estos atributos:

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

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

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

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

  • El chip Wi-Fi debe permitir que el framework realice llamadas IWifiChip.setMultiStaUseCase() con una de las siguientes constantes a especifica la función actual:

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY: Especifica la Make-Before-Break. La calidad de la conexión principal debe tener prioridad sobre la conexión secundaria.
    • DUAL_STA_NON_TRANSIENT_UNBIASED: Especifica la conexión simultánea a Internet y solo local o la simultánea acceso restringido y conexión a Internet. La calidad de ambos las conexiones deben tener la misma prioridad.
  • Debido a que los STA simultáneos duales pueden conducir a los modos MCC, SCC y DBS de operativa, la implementación del proveedor debe elegir la mejor opción actual cuando el framework llama a IWifiChip.setMultiStaUseCase() indicar la función. Los siguientes son lineamientos generales:

    • Se prefiere 2x2 + 2x2 DBS si está disponible.
    • Si es posible, evita los DBS de 1x1+1x1 debido al impacto excesivo en la calidad de la conexión. Prefiere MCC.
    • El conductor o el firmware deben poder configurar el ciclo de trabajo de MCC para las diversas funciones. El marco de trabajo no establece el ciclo de trabajo de MCC. directamente, pero consulta esta información mediante StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent
    • Si usas MCC, te recomendamos los siguientes ciclos de trabajo entre la principal y conexiones secundarias:

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY: 70% primaria, 30% secundaria.
      • DUAL_STA_NON_TRANSIENT_UNBIASED: 50% primaria y 50% secundaria.