Concurrence Wi-Fi STA/STA

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Android 12 introduit la simultanéité Wi-Fi STA/STA, qui permet aux appareils de se connecter simultanément à deux réseaux Wi-Fi. Cette fonction facultative active les fonctions suivantes.

  • Make-before-break : L'appareil se connecte à un nouveau réseau Wi-Fi avant de rompre la connexion existante. Cela se traduit par des transitions plus fluides lors de la commutation entre les réseaux Wi-Fi
  • Connexion locale uniquement et Internet simultanées : l'appareil se connecte à un réseau local uniquement sans interrompre la connexion Internet principale de l'appareil.
  • Connexion restreinte et Internet simultanées : l'appareil se connecte à un réseau restreint (disponible uniquement pour certaines applications privilégiées) sans interrompre la connexion Internet principale de l'appareil.
  • (Android 13 ou supérieur) Plusieurs réseaux simultanés avec connexion Internet : L'appareil se connecte à deux réseaux qui sont tous deux illimités et disponibles pour toutes les applications, et fournissent une connectivité Internet.

Cette page décrit le comportement de l'appareil lorsque cette fonctionnalité est activée et les détails de mise en œuvre pour les fabricants et les fournisseurs d'appareils.

Mise en œuvre

Les appareils doivent prendre en charge les éléments suivants afin de mettre en œuvre la simultanéité Wi-Fi STA/STA :

  • La puce ou le micrologiciel Wi-Fi doit prendre en charge deux connexions STA simultanées. Le micrologiciel doit prendre en charge toutes les combinaisons de canaux et de bandes pour les deux connexions. Pour éviter les problèmes de performances, nous vous recommandons d'utiliser une puce Wi-Fi compatible 2x2+2x2 DBS.

  • L'appareil doit prendre en charge les API suivantes dans la version 1.5 du fournisseur HAL

    • IWifiChip.setMultiStaPrimaryConnection()
    • IWifiChip.setMultiStaUseCase()
  • La combinaison d'interfaces Wi-Fi HAL doit avoir deux interfaces STA simultanées exposées à l'aide d'un format de spécification tel que [{STA} <= 2, ...] . Pour plus d'informations, consultez Concurrence multi-interface Wi-Fi .

Si ces conditions préalables sont remplies, implémentez la simultanéité Wi-Fi STA/STA en procédant comme suit :

  1. Activez une ou plusieurs fonctions individuellement à l'aide des superpositions de ressources d'exécution (désactivées par défaut).

    • Make-before-break : config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • Connexion simultanée locale uniquement et Internet : config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • Connexion restreinte et Internet simultanée : config_wifiMultiStaRestrictedConcurrencyEnabled
    • Plusieurs réseaux simultanés avec connexion Internet : config_wifiMultiStaMultiInternetConcurrencyEnabled
  2. Validez chaque implémentation comme décrit dans leurs sections respectives ci-dessous.

Pour mieux prendre en charge la simultanéité Wi-Fi STA/STA, nous recommandons que les frameworks et applications personnalisés par les OEM utilisent la méthode NetworkCallback#onCapabilitiesChanged() au lieu de WifiManager#getConnectionInfo() , qui ne renvoie WifiInfo que pour un seul réseau et a été obsolète dans Android 12 Pour plus d'informations, voir API de demande de réseau Wi-Fi pour la connectivité peer-to-peer .

Faire avant la pause

La fonction make-before-break permet aux appareils de se connecter à un nouveau réseau Wi-Fi tout en conservant la connexion réseau Wi-Fi existante, en ne se déconnectant de l'ancien réseau que lorsqu'il se connecte avec succès au nouveau réseau Wi-Fi et dispose d'un accès Internet.

Le cas d'utilisation make-before-break résout les problèmes suivants dans Android 11 ou version antérieure, où l'appareil doit se déconnecter du réseau Wi-Fi existant avant de se connecter à un nouveau réseau (break-before-make).

  • Lors de la connexion à un nouveau réseau, l'appareil peut découvrir qu'il a enregistré un mot de passe Wi-Fi incorrect ou que le nouveau réseau n'a pas accès à Internet. Cela oblige l'appareil à revenir à l'ancien réseau, ce qui entraîne un temps considérable sans connectivité Wi-Fi.

  • L'ancien réseau est brusquement déconnecté, ce qui signifie que toutes les prises sont fermées. Les applications ne réagissent souvent pas bien à une perte soudaine de connectivité, ce qui peut amener l'utilisateur à vivre quelques secondes sans connexion Internet jusqu'à ce que la nouvelle connexion soit complètement établie.

  • Le réseau par défaut change deux fois, de l'ancien réseau Wi-Fi au cellulaire, puis du cellulaire au nouveau réseau Wi-Fi. Cela oblige les applications à réagir deux fois aux modifications du réseau. L'appareil doit également passer un peu de temps à utiliser les données cellulaires.

Le flux make-before-break n'est utilisé que pour les commutateurs de réseau Wi-Fi automatiques initiés par le système d'exploitation. Les commutateurs de réseau initiés par l'utilisateur utilisent le flux d'interruption avant établissement hérité, dans lequel le réseau précédent est entièrement déconnecté avant que le nouveau réseau ne soit connecté. Dans certains cas, le flux break-before-make est utilisé même dans les commutateurs automatiques initiés par le système d'exploitation, par exemple, lors de la commutation entre deux réseaux tous deux configurés pour utiliser l'adresse MAC d'usine.

Les applications peuvent vérifier si ce cas d'utilisation est pris en charge sur l'appareil à l'aide de l' WifiManager#isMakeBeforeBreakWifiSwitchingSupported() .

Validation du make-before-break

Pour valider votre mise en œuvre, déclenchez un changement de réseau Wi-Fi automatique (en vous assurant qu'un réseau avec une force de signal plus forte que le réseau actuellement connecté est disponible) et vérifiez que l'appareil maintient la connexion existante tout en se connectant au nouveau réseau. Pour afficher l'état des deux interfaces Wi-Fi et vérifier qu'elles sont toutes deux connectées, utilisez la commande suivante.

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

Si le nouveau réseau n'a pas de connectivité, l'appareil tente de se connecter au réseau, tout en maintenant la connexion avec le réseau existant, et abandonne la tentative lorsqu'il détecte que le nouveau réseau n'a pas Internet. L'appareil continue alors d'utiliser la connexion existante comme réseau Wi-Fi principal.

Connexion locale uniquement et Internet simultanée

La fonction de connexion locale uniquement et Internet simultanée permet aux appareils de se connecter à une connexion uniquement locale, telle qu'une connexion à un appareil IoT, simultanément avec le réseau principal fournissant Internet. Cette fonction améliore l'expérience utilisateur lors de la connexion directe à des appareils IoT, tels que des caméras, ce qui est possible via l'API WifiNetworkSpecifier ajoutée dans Android 10.

Dans Android 11 et les versions antérieures, les appareils se déconnectent du réseau Wi-Fi principal lors de la connexion à un appareil IoT, ce qui entraîne une perte de connectivité Internet (sauf si l'appareil dispose d'un autre type de transport disponible, comme les données cellulaires).

Les applications peuvent vérifier si cette fonction est prise en charge sur l'appareil à l'aide de l' WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported() .

Pour plus d'informations sur les modifications apportées à la fonction de connexion locale uniquement et Internet simultanée dans Android 12, consultez API de demande de réseau Wi-Fi pour la connectivité peer-to-peer .

Validation de la connexion locale uniquement et Internet

Pour valider cette fonction, utilisez les tests CTS et ACTS suivants :

  • CTS : MultiStaConcurrencyWifiNetworkSpecifierTest
  • ACTES : WifiStaConcurrencyNetworkRequestTest

Connexion restreinte et Internet simultanée

La fonction de connexion restreinte et Internet simultanée permet à l'appareil de se connecter simultanément à un réseau Wi-Fi principal pour l'utilisateur et à un réseau Wi-Fi restreint qui n'est disponible que pour certaines applications.

Les applications peuvent vérifier si cette fonction est prise en charge sur l'appareil à l'aide de l' WifiManager#isStaConcurrencyForRestrictedConnectionsSupported() .

Pour permettre à un appareil de se connecter à des réseaux Wi-Fi restreints secondaires, procédez comme suit :

  1. Ajoutez des suggestions de réseau Wi-Fi avec setOemPaid ou setOemPrivate défini sur true.

  2. Dans ConnectivityManager , déposez une NetworkRequest avec les fonctionnalités correspondantes :

Lorsque l'appareil détecte des résultats d'analyse avec un réseau correspondant à la suggestion OEM payante ou privée OEM, il s'y connecte automatiquement en tant que réseau secondaire.

Validation simultanée restreinte et connexion Internet

Pour valider cette fonction, utilisez les tests CTS et ACTS suivants :

  • CTS : MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest
  • ACTES : WifiStaConcurrencyNetworkRequestTest

Plusieurs réseaux simultanés avec connexion Internet

Disponible pour Android 13 ou supérieur, les réseaux multiples simultanés avec fonction de connexion Internet permettent à l'appareil de se connecter simultanément à deux réseaux (AP) qui sont tous deux illimités (toutes les applications ont accès) et fournissent un accès Internet.

Les applications peuvent vérifier si cette fonctionnalité est prise en charge sur l'appareil à l'aide de la WifiManager#isStaConcurrencyForMultiInternetSupported() .

Si la fonctionnalité est prise en charge, les applications privilégiées peuvent l'activer à l'aide de la WifiManager#setStaConcurrencyForMultiInternetMode(int mode) . La fonctionnalité a les modes suivants :

Pour interroger le mode de fonctionnalité actuellement actif, utilisez la WifiManager#getStaConcurrencyForMultiInternetMode() .

Lorsque la fonction est activée, procédez comme suit pour demander un réseau Wi-Fi supplémentaire fournissant Internet.

  1. Créez un spécificateur de réseau Wi-Fi à l'aide WifiNetworkSpecifier.Builder . Choisissez une bande pour le spécificateur à l'aide de la méthode setBand() . Ne spécifiez pas le SSID ou le BSSID car le réseau supplémentaire pour la bande spécifiée est sélectionné par le cadre Wi-Fi.

  2. À l'aide de ConnectivityManager , créez un NetworkRequest avec la capacité NET_CAPABILITY_INTERNET .

  3. Ajoutez le spécificateur à la demande réseau avec une instance NetworkCallback pour suivre l'état de la demande et émettez la demande à ConnectivityManager . Si un réseau enregistré avec la bande demandée est disponible dans le résultat de l'analyse et que la connexion au réseau est réussie, NetworkCallback.onAvailable() est invoqué sur l'objet de rappel.

Validation de plusieurs réseaux simultanés avec connexion Internet

Pour valider cette fonction, utilisez le test CTS suivant :

  • CTS : MultiStaConcurrencyMultiInternetWifiNetworkTest

Directives relatives aux puces Wi-Fi du fournisseur

Pour les fournisseurs de puces Wi-Fi, utilisez les directives suivantes pour prendre en charge la simultanéité Wi-Fi STA/STA.

La puce Wi-Fi doit prendre en charge les connexions STA simultanées doubles. Cela signifie qu'il prend en charge les éléments suivants :

  • Chaque interface STA possède un MAC unique programmable par le framework.
  • L'interface STA secondaire peut être créée et détruite dynamiquement.
  • Chaque STA peut être connecté à un SSID différent (soit dans la même bande, soit dans une bande différente).
  • Chaque STA peut être connecté au même SSID (soit dans la même bande, soit dans une bande différente). Les deux STA ne doivent jamais être connectés au même BSSID.

Les fonctionnalités critiques doivent fonctionner sur une base par interface et elles doivent être disponibles sur l'interface principale. Voici une liste de ces fonctionnalités critiques :

  • L'itinérance doit être prise en charge au moins sur l'interface principale (définie à l'aide IWifiChip.setMultiStaPrimaryConnection() ). Si l'itinérance est prise en charge sur les deux interfaces, les décisions sur une connexion ne doivent pas entrer en conflit avec la seconde connexion simultanée. Par exemple, une interface ne doit pas se déplacer vers le BSSID de l'autre connexion.

  • APF (et d'autres déchargements tels que ARP et NS) doivent être pris en charge au moins sur l'interface principale (définie à l'aide IWifiChip.setMultiStaPrimaryConnection() ).

  • Les statistiques de la couche de liaison doivent fonctionner sur une base par interface.

Voici les implémentations de puces Wi-Fi recommandées pour différents scénarios de simultanéité :

  • La puce Wi-Fi doit permettre au framework d'appeler IWifiChip.setMultiStaUseCase() avec l'une des constantes suivantes pour spécifier la fonction actuelle :

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY : Spécifie la fonction Make-Before-Break. La qualité de la connexion primaire doit être prioritaire par rapport à la connexion secondaire.
    • DUAL_STA_NON_TRANSIENT_UNBIASED : spécifie la connexion locale uniquement et Internet simultanée ou la fonction de connexion restreinte et Internet simultanée . La qualité des deux connexions doit être priorisée de manière égale.
  • Étant donné que les deux STA simultanés peuvent conduire à des modes de fonctionnement MCC, SCC et DBS, l'implémentation du fournisseur doit choisir la meilleure configuration radio lorsque l'infrastructure appelle IWifiChip.setMultiStaUseCase() pour indiquer la fonction. Voici les directives générales :

    • 2x2+2x2 DBS est préférable si disponible.
    • Évitez si possible le DBS 1x1+1x1 en raison de l'impact excessif sur la qualité de la connexion. Préférez plutôt MCC.
    • Le rapport cyclique du MCC doit être configurable par le pilote ou le micrologiciel pour les différentes fonctions. La structure ne définit pas directement le cycle de service MCC, mais interroge ces informations à l'aide StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent .
    • Si vous utilisez MCC, nous recommandons les cycles de service suivants entre les connexions primaires et secondaires :

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY : 70 % primaire, 30 % secondaire.
      • DUAL_STA_NON_TRANSIENT_UNBIASED : 50 % primaire, 50 % secondaire.