Simultanéité STA/STA

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

  • Paiement avant une pause: l'appareil se connecte à un nouveau réseau Wi-Fi. avant de rompre la connexion existante. Cela se traduit par Transitions plus fluides lors du basculement entre les réseaux Wi-Fi
  • Connexion locale uniquement et connexion Internet simultanées: l'appareil se connecte à un réseau local uniquement sans interrompre le fonctionnement la principale connexion Internet fournie par l’utilisateur.
  • Connexion Internet limitée et connexion Internet simultanée: l'appareil Se connecte à un réseau restreint (disponible uniquement pour certaines applications privilégiées) sans interrompre la connexion principale Internet de l'appareil.
  • (Android 13 ou version ultérieure) Simultanément réseaux avec connexion Internet: l'appareil se connecte à deux réseaux non restreints 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 détails d’implémentation pour les fabricants et les fournisseurs d’appareils.

Implémentation

Les appareils doivent être compatibles avec les éléments suivants pour implémenter une STA/STA Wi-Fi simultanéité:

  • La puce ou le micrologiciel Wi-Fi doit être compatible avec deux STA simultanées. connexions externes. Le micrologiciel doit être compatible avec toutes les combinaisons de canaux et de bandes. pour les deux connexions. Pour éviter tout problème de performances, une puce Wi-Fi compatible DBS 2x2 + 2x2.

  • L'appareil doit être compatible avec les API suivantes dans AIDL ou HIDL l'implémentation de IWifiChip.

    • IWifiChip.setMultiStaPrimaryConnection(String ifName)
    • IWifiChip.setMultiStaUseCase(MultiStaUseCase useCase)
  • La combinaison d'interfaces Wi-Fi HAL doit avoir deux interfaces STA simultanées exposés à l'aide d'un format de spécification tel que [{STA} <= 2, ...]. Pour Pour en savoir plus, consultez Simultanéité multi-interface Wi-Fi :

Si ces conditions préalables sont remplies, mettez en place la simultanéité STA/STA Wi-Fi en procédant comme suit : les éléments suivants:

  1. Activez une ou plusieurs fonctions individuellement en utilisant superpositions de ressources d'exécution (désactivées par par défaut).

    • Mise en relation avant une pause: config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • Connexion locale uniquement et connexion Internet simultanées: config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • Connexion Internet limitée et connexion Internet simultanée: config_wifiMultiStaRestrictedConcurrencyEnabled
    • Plusieurs réseaux connectés à Internet simultanément : config_wifiMultiStaMultiInternetConcurrencyEnabled
  2. Validez chaque implémentation comme décrit dans les sections correspondantes.

Pour une meilleure gestion de la simultanéité STA/STA Wi-Fi, nous recommandons aux OEM d'utiliser les frameworks et les applications utilisent la méthode NetworkCallback#onCapabilitiesChanged(). au lieu de WifiManager#getConnectionInfo(), qui ne renvoie que WifiInfo pour un seul réseau et a été abandonné dans Android 12. Pour Pour en savoir plus, consultez API Wi-Fi Network Request pour la connectivité peer-to-peer :

À faire avant de faire une pause

La fonctionnalité faire avant une pause permet aux appareils de se connecter à un nouveau réseau Wi-Fi. réseau tout en conservant la connexion Wi-Fi existante, uniquement se déconnecter de l'ancien réseau lorsqu'il se connecte avec succès au nouveau d'un réseau Wi-Fi et d'un accès à Internet.

Le cas d'utilisation "faire avant de casser" permet de résoudre 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 vous connecter à un nouveau réseau (break-before-make).

  • Lors de la connexion à un nouveau réseau, l'appareil peut détecter qu'il dispose d'un un mot de passe Wi-Fi incorrect enregistré ou que le nouveau réseau n'ont pas accès à Internet. Cela oblige l'appareil à revenir à l'ancienne version réseau, ce qui conduit à une période importante de temps sans connexion Wi-Fi.

  • L'ancien réseau est déconnecté brusquement, ce qui signifie que tous les sockets se ferment. Souvent, les applications ne réagissent pas bien à une perte soudaine de de la connectivité. sans connexion Internet pendant quelques secondes, jusqu'à ce que la connexion est entièrement établie.

  • Le réseau par défaut change deux fois : de l'ancien réseau Wi-Fi au réseau cellulaire, puis du réseau mobile au nouveau réseau Wi-Fi. Cela entraîne une réaction des applications le réseau change deux fois. L'appareil doit également dépenser un faible montant en utilisant les données mobiles.

La procédure de validation avant une coupure n'est utilisée que pour les réseaux Wi-Fi automatiques les commutateurs initiés par le système d’exploitation. Les commutateurs réseau déclenchés par l'utilisateur flux "break-before-make", où le réseau précédent est complètement déconnecté avant que le nouveau réseau soit connecté. Dans certains cas, Le flux "break-before-make" est utilisé même dans les commutateurs automatiques initiés par le OS, par exemple, lors du basculement entre deux réseaux configurés pour utiliser adresse MAC d'usine.

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

Valider le changement avant interruption

Pour valider votre implémentation, déclenchez un commutateur réseau Wi-Fi automatique (en garantissant un réseau dont l'intensité du signal est supérieure à celle est disponible) et vérifiez que l'appareil une connexion existante tout en vous connectant au nouveau réseau. Pour afficher l'état des deux interfaces Wi-Fi et vérifier qu'elles sont toutes les 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'est pas connecté, l'appareil tente de se connecter au réseau, tout en maintenant la connexion au réseau existant, et annule la tentative lorsqu'il détecte le nouveau réseau n'a pas Internet. L'appareil continue d'utiliser une connexion existante en tant que réseau Wi-Fi principal.

Connexion locale uniquement et connexion Internet simultanée

La fonction Connexion locale uniquement et connexion Internet simultanée permet aux appareils de se connecter à une connexion uniquement locale, comme 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 grâce à l'API WifiNetworkSpecifier ajoutée dans Android 10.

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

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

Pour en savoir plus sur les modifications apportées aux paramètres simultanés "local-only" et "Internet", de connexion d'Android 12, consultez API Wi-Fi Network Request pour la connectivité peer-to-peer :

Valider la connexion locale uniquement et la connexion Internet

Pour valider cette fonction, utilisez la Test CTS MultiStaConcurrencyWifiNetworkSpecifierTest.

Connexions limitées et Internet simultanées

La fonction Connexion limitée et connexion Internet simultanée permet à l'appareil pour se connecter simultanément à un réseau Wi-Fi principal pour l'utilisateur et 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 la API WifiManager#isStaConcurrencyForRestrictedConnectionsSupported().

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

  1. Ajouter Suggestions de réseaux Wi-Fi par setOemPaid ou setOemPrivate définie sur "true".

  2. Dans ConnectivityManager, envoyez une NetworkRequest avec le fichier capacités:

Lorsque l'appareil détecte des résultats d'analyse sur un réseau correspondant au réseau de l'OEM payant ou Suggestion privée OEM, elle s'y connecte automatiquement en tant que réseau secondaire.

Valider la connexion limitée et Internet simultanée

Pour valider cette fonction, utilisez la Test CTS MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest.

Utiliser plusieurs réseaux simultanément avec une connexion Internet

Disponible pour Android 13 ou version ultérieure, les plusieurs réseaux avec une connexion Internet permet à l'appareil se connecter simultanément à deux réseaux (PA) non restreints, (toutes les applications y ont accès) et fournissent un accès à Internet.

Les applications peuvent vérifier si cette fonctionnalité est disponible 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 dispose des modes suivants:

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

Une fois la fonctionnalité activée, procédez comme suit pour demander une via un réseau Wi-Fi Internet.

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

  2. En utilisant ConnectivityManager, créez un NetworkRequest avec NET_CAPABILITY_INTERNET de Google Cloud.

  3. Ajoutez le spécificateur à la requête réseau avec un NetworkCallback pour suivre l'état de la requête et la transmettre à 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éussi, NetworkCallback.onAvailable() est appelé sur l'objet de rappel.

Valider plusieurs réseaux simultanés avec une connexion Internet

Pour valider cette fonction, utilisez le test CTS suivant:

  • CTS: MultiStaConcurrencyMultiInternetWifiNetworkTest

Consignes du fournisseur concernant les puces Wi-Fi

Pour les fournisseurs de puces Wi-Fi, suivez les consignes ci-dessous Simultanéité des services Wi-Fi STA/STA.

La puce Wi-Fi doit être compatible avec les connexions STA simultanées. Cela signifie que est compatible avec 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 de manière dynamique.
  • Chaque STA peut être connectée à un SSID différent (au sein du même ou un autre bracelet).
  • Chaque STA peut être connectée au même SSID (dans le même ou un autre bracelet). Les deux STA ne doivent jamais être connecté au même BSSID.

Les fonctionnalités essentielles doivent être opérationnelles au niveau de chaque interface disponibles sur l'interface principale. Vous trouverez ci-dessous la liste fonctionnalités:

  • L'itinérance doit être prise en charge au moins sur l'interface principale (définie via IWifiChip.setMultiStaPrimaryConnection()). Si l'itinérance est disponible sur les deux interfaces, les décisions prises concernant une connexion ne doivent pas entrer en conflit d'une seconde connexion simultanée. Par exemple, une interface ne doit pas circuler en itinérance au BSSID de l'autre connexion.

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

  • Les statistiques de la couche de liaison doivent fonctionner pour chaque interface.

Voici les implémentations de puce Wi-Fi recommandées pour différentes de simultanéité:

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

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY: spécifie le Fonction Make-Before-Break La qualité de la connexion principale doit être prioritaire sur la connexion secondaire.
    • DUAL_STA_NON_TRANSIENT_UNBIASED: spécifie le connexion locale uniquement et connexion Internet simultanée ou connexion simultanée de connexion restreinte et de connexion Internet. La qualité des deux connexions doivent être prioritaires de manière égale.
  • Comme les STA à double simultané peuvent conduire à des modes MCC, SCC et DBS de opération, le fournisseur doit choisir le meilleur signal radio lorsque le framework appelle IWifiChip.setMultiStaUseCase() pour indiquent la fonction. Vous trouverez ci-dessous des consignes générales:

    • Il est préférable d'utiliser un DBS 2x2 + 2x2, si disponible.
    • Si possible, évitez les DBS 1x1+1x1 en raison de l'impact excessif sur la qualité de la connexion. Optez plutôt pour le CM.
    • Le cycle d'utilisation CM doit être configurable par le conducteur ou le micrologiciel pour les différentes fonctions. Le cadre ne définit pas le cycle d'utilisation du CM mais interroge ces informations en utilisant StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent
    • Si vous utilisez le CM, nous vous recommandons de respecter les cycles d'utilisation suivants entre les et secondaires:

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY: 70% pour l'enseignement primaire et 30% pour l'enseignement secondaire.
      • DUAL_STA_NON_TRANSIENT_UNBIASED: 50% de primaire et 50% d'enseignement secondaire.