Gleichzeitigkeit von STA/STA für WLAN

Android 12 führt Wi-Fi STA/STA-Nebenläufigkeit ein, mit der Geräte gleichzeitig eine Verbindung zu zwei WLAN-Netzwerken herstellen können. Diese optionale Funktion aktiviert die folgenden Funktionen.

  • Make-before-Break: Das Gerät stellt eine Verbindung mit einem neuen WLAN her. bevor die bestehende Verbindung unterbrochen wird. Daraus ergeben sich weichere Übergänge beim Wechsel zwischen WLANs
  • Gleichzeitige lokale Verbindung und Internetverbindung: das Gerät stellt eine Verbindung zu einem rein lokalen Netzwerk her, ohne die primäre Verbindung zum Internet.
  • Gleichzeitig eingeschränkte Internetverbindung: das Gerät eine Verbindung zu einem eingeschränkten Netzwerk herstellen (nur für bestimmte privilegierte Apps verfügbar) ohne die primäre Internetverbindung des Geräts zu unterbrechen.
  • (Android 13 oder höher) Mehrere gleichzeitig Netzwerke mit Internetverbindung: Das Gerät stellt eine Verbindung die nicht eingeschränkt und für alle Apps verfügbar sind, und eine Internetverbindung herstellen.

Auf dieser Seite wird das Geräteverhalten beschrieben, wenn diese Funktion aktiviert ist und die Implementierungsdetails für Gerätehersteller und -anbieter.

Implementierung

Geräte müssen Folgendes unterstützen, um STA/STA für WLAN zu implementieren Nebenläufigkeit:

  • Der WLAN-Chip oder die Firmware muss zwei gleichzeitige STA unterstützen Verbindungen. Die Firmware muss alle Kanal- und Bandkombinationen unterstützen. für beide Verbindungen. Um Leistungsprobleme zu vermeiden, einen 2x2+2x2-DBS-fähigen WLAN-Chip.

  • Das Gerät muss die folgenden APIs in AIDL oder HIDL unterstützen Implementierung von IWifiChip.

    • IWifiChip.setMultiStaPrimaryConnection(String ifName)
    • IWifiChip.setMultiStaUseCase(MultiStaUseCase useCase)
  • Die HAL-WLAN-Schnittstelle muss zwei gleichzeitige STA-Schnittstellen haben in einem Spezifikationsformat wie [{STA} <= 2, ...] bereitgestellt werden. Für finden Sie unter Gleichzeitigkeit von WLAN-Multi-Schnittstellen.

Wenn diese Voraussetzungen erfüllt sind, implementieren Sie die gleichzeitige Verwendung von STA/STA für WLAN, indem Sie Folgendes:

  1. Aktivieren Sie eine oder mehrere Funktionen einzeln mit Laufzeitressourcen-Overlays (deaktiviert durch Standard).

    • Make-before-Break: config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • Gleichzeitige, reine lokale Verbindung und eine Internetverbindung: config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • Gleichzeitig eingeschränkte und Internetverbindung: config_wifiMultiStaRestrictedConcurrencyEnabled
    • Gleichzeitig mehrere Netzwerke mit Internetverbindung: config_wifiMultiStaMultiInternetConcurrencyEnabled
  2. Validieren Sie jede Implementierung wie in den entsprechenden Abschnitten beschrieben.

Zur besseren Unterstützung der parallelen Verwendung von STA/STA für WLAN empfehlen wir eine OEM-benutzerdefinierte Lösung. Frameworks und Apps verwenden die Methode NetworkCallback#onCapabilitiesChanged() statt WifiManager#getConnectionInfo(), wodurch nur WifiInfo für nur ein Netzwerk und wurde in Android 12 eingestellt. Für finden Sie unter Wi-Fi Network Request API für Peer-to-Peer-Verbindungen.

Vor der Pause

Die Funktion Make-before-Break ermöglicht es Geräten, sich mit einem neuen WLAN zu verbinden. die bestehende WLAN-Verbindung aufrecht, Die Verbindung zum alten Netzwerk wird getrennt, wenn eine Verbindung zum neuen Netzwerk hergestellt wurde. WLAN und Internetzugang.

Der Anwendungsfall für eine Pause Android 11 oder niedriger, bei dem das Gerät getrennt werden muss aus dem vorhandenen WLAN, bevor Sie eine Verbindung zu einem neuen Netzwerk herstellen. (break-before-make).

  • Beim Verbinden mit einem neuen Netzwerk stellt das Gerät möglicherweise fest, dass es ein falsches WLAN-Passwort gespeichert oder dass das neue Netzwerk Internetzugriff haben. Dadurch wird das Gerät gezwungen, zum alten Das führt dazu, dass es lange dauert, bis keine WLAN-Verbindung verfügbar ist.

  • Das alte Netzwerk wird plötzlich getrennt. werden Sockets geschlossen. Apps reagieren oft nicht gut auf einen plötzlichen Verlust an Konnektivität und kann dazu führen, einige Sekunden lang keine Internetverbindung hatten, bis das neue Verbindung wurde hergestellt.

  • Das Standardnetzwerk wird zweimal geändert, vom alten WLAN zum Mobilfunknetz. und dann vom Mobilfunknetz zum neuen WLAN wechseln. Das führt dazu, dass Apps auf das Netzwerk zweimal ändert. Das Gerät muss außerdem über die mobile Datenverbindung.

Der Ablauf vor der Pause wird nur für automatische WLANs verwendet vom Betriebssystem initiierte Switches. Vom Nutzer initiierte Netzwerk-Switches verwenden die Legacy- Break-before-make-Vorgang, bei dem das vorherige Netzwerk vollständig getrennt wird bevor eine Verbindung mit dem neuen Netzwerk hergestellt wird. In bestimmten Fällen Der Vorgang "break-before-make" wird auch bei automatischen Switches verwendet, die vom Betriebssystem, z. B. beim Wechsel zwischen zwei Netzwerken, die beide für die Verwendung des MAC-Adresse der Werkseinstellung.

Apps können mithilfe der Funktion WifiManager#isMakeBeforeBreakWifiSwitchingSupported()-API.

Vorhergehende Pausen validieren

Lösen Sie einen automatischen WLAN-Netzwerkwechsel aus, um Ihre Implementierung zu validieren ein Netzwerk mit einer stärkeren Signalstärke verbundenes Netzwerk verfügbar ist) und vergewissern Sie sich, dass das Gerät die bestehende Verbindung, während eine Verbindung zum neuen Netzwerk hergestellt wird. Um den Status beider WLAN-Schnittstellen anzuzeigen und zu prüfen, ob beide verbunden sind, gehen Sie so vor: verwenden Sie den folgenden Befehl.

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

Wenn zum neuen Netzwerk keine Verbindung besteht, wird das Gerät versucht, eine Verbindung zum Netzwerk herzustellen, während Verbindung mit dem vorhandenen Netzwerk hergestellt und der Versuch wird abgebrochen, wenn erkannt wird, hat das neue Netzwerk kein Internet. Das Gerät verwendet dann vorhandene Verbindung als primäres WLAN-Netzwerk.

Gleichzeitige lokale Verbindung und Internetverbindung

Durch die gleichzeitige Verwendung von lokalen Verbindungen und der Internetverbindung können Geräte wie eine Verbindung zu einem IoT-Gerät, des primären Netzwerks, das das Internet bereitstellt. Diese Funktion verbessert beim direkten Verbinden mit IoT-Geräten wie Kameras, Dies ist über die WifiNetworkSpecifier-API möglich, die im Android 10

Unter Android 11 und niedriger werden Geräte vom primären WLAN beim Herstellen einer Verbindung zu einem IoT-Gerät, was zu einem Verlust der eine Internetverbindung herstellen (es sei denn, auf dem Gerät ist ein anderer Transporttyp verfügbar, wie z. B. mobile Daten).

Apps können mithilfe der WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported()-API.

Weitere Informationen zu Änderungen an der gleichzeitigen Verwendung von „Nur lokal“ und „Internet“ Verbindungsfunktion in Android 12, siehe Wi-Fi Network Request API für Peer-to-Peer-Verbindungen.

Nur lokale Verbindung und Internetverbindung validieren

Verwenden Sie zum Validieren dieser Funktion die Methode CTS-Test: MultiStaConcurrencyWifiNetworkSpecifierTest.

Gleichzeitige eingeschränkte und Internetverbindung

Durch die Funktion Gleichzeitige eingeschränkte und Internetverbindung kann das Gerät , um sich gleichzeitig mit einem primären WLAN-Netzwerk für den Nutzer und einem eingeschränktes WLAN, das nur für ausgewählte Apps verfügbar ist.

Apps können mithilfe der WifiManager#isStaConcurrencyForRestrictedConnectionsSupported()-API.

So ermöglichen Sie einem Gerät, eine Verbindung zu sekundären, eingeschränkten WLAN-Netzwerken herzustellen: führen Sie folgende Schritte aus:

  1. Hinzufügen WLAN-Vorschläge mit setOemPaid oder setOemPrivate auf "true" gesetzt ist.

  2. Reichen Sie in ConnectivityManager eine NetworkRequest mit dem entsprechenden Funktionen:

Wenn das Gerät Scanergebnisse mit einem Netzwerk erkennt, das dem bezahlten oder dem OEM entspricht wird automatisch eine Verbindung als sekundäres Netzwerk hergestellt.

Gleichzeitige eingeschränkte Verbindung und Internetverbindung validieren

Verwenden Sie zum Validieren dieser Funktion die Methode CTS-Test: MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest.

Gleichzeitige Verwendung mehrerer Netzwerke mit Internetverbindung

Verfügbar für Android 13 oder höher, die gleichzeitige oder mehrere Netzwerke mit Internetverbindung. gleichzeitige Verbindung zu zwei Netzwerken (APs) herstellen, die beide uneingeschränkt sind. (alle Apps haben Zugriff) und bieten Internetzugang.

Apps können prüfen, ob diese Funktion auf dem Gerät unterstützt wird, indem sie die WifiManager#isStaConcurrencyForMultiInternetSupported() .

Wenn die Funktion unterstützt wird, können privilegierte Apps sie über die WifiManager#setStaConcurrencyForMultiInternetMode(int mode)-Methode. Die hat die folgenden Modi:

Um den derzeit aktiven Feature-Modus abzufragen, verwenden Sie die Methode WifiManager#getStaConcurrencyForMultiInternetMode() .

Wenn die Funktion aktiviert ist, können Sie mit den folgenden Schritten eine zusätzliche über das Internet verbunden ist.

  1. Erstellen Sie einen WLAN-Spezifizierer mit WifiNetworkSpecifier.Builder Wählen Sie mithilfe der setBand() . Geben Sie die SSID oder BSSID nicht als zusätzliches Netzwerk für den das angegebene Band vom WLAN-System ausgewählt wird.

  2. Mit ConnectivityManager, Erstellen Sie eine NetworkRequest mit dem NET_CAPABILITY_INTERNET

  3. Fügen Sie der Netzwerkanfrage den Bezeichner zusammen mit einem NetworkCallback um den Status der Anfrage zu verfolgen, und senden Sie die Anfrage an ConnectivityManager. Wenn ein gespeichertes Netzwerk mit dem angeforderten Frequenzband im Scanergebnis verfügbar, und die Netzwerkverbindung ist erfolgreich war, NetworkCallback.onAvailable() wird im Callback-Objekt aufgerufen.

Gleichzeitige Verwendung mehrerer Netzwerke mit Internetverbindung validieren

Verwenden Sie den folgenden CTS-Test, um diese Funktion zu validieren:

  • CTS: MultiStaConcurrencyMultiInternetWifiNetworkTest

Richtlinien für WLAN-Chips von Anbietern

Anbieter von WLAN-Chips können die folgenden Richtlinien zur Unterstützung WLAN-STA/STA-Nebenläufigkeit.

Der WLAN-Chip muss zwei gleichzeitige STA-Verbindungen unterstützen. Das bedeutet, dass es unterstützt Folgendes:

  • Jede STA-Schnittstelle hat einen eindeutigen MAC, der vom Framework programmiert werden kann.
  • Die sekundäre STA-Schnittstelle kann dynamisch erstellt und gelöscht werden.
  • Jede STA kann mit einer anderen SSID verbunden werden (entweder innerhalb desselben Band oder einem anderen Band).
  • Jede STA kann mit derselben SSID verbunden werden (entweder innerhalb einer Band oder einem anderen Band). Die beiden Standardtextanzeigen dürfen nie mit derselben BSSID verbunden.

Wichtige Funktionen müssen pro Schnittstelle ausgeführt werden und die auf der primären Schnittstelle verfügbar sind. Im Folgenden finden Sie eine Liste dieser wichtigen Funktionen:

  • Roaming muss mindestens auf der primären Schnittstelle unterstützt werden (festgelegt mit IWifiChip.setMultiStaPrimaryConnection(). Roaming wird unterstützt auf unterschiedliche Schnittstellen haben, dürfen Entscheidungen über eine Verbindung nicht mit dem für die zweite gleichzeitige Verbindung. Beispielsweise darf eine Schnittstelle kein Roaming nutzen. mit der BSSID der anderen Verbindung verknüpfen.

  • APF (und andere Auslagerungen wie ARP und NS) müssen mindestens auf die primäre Schnittstelle (festgelegt mit IWifiChip.setMultiStaPrimaryConnection().

  • Die Statistiken der Linkebene müssen für die jeweilige Schnittstelle verwendet werden.

Im Folgenden finden Sie empfohlene Implementierungen von WLAN-Chips für verschiedene Nebenläufigkeitsszenarien:

  • Der WLAN-Chip muss es dem Framework ermöglichen, IWifiChip.setMultiStaUseCase() durch eine der folgenden Konstanten, die aktuelle Funktion angeben:

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY: Gibt die Vorab-Unterbrechung. Die Qualität der primären Verbindung muss gegenüber der sekundären Verbindung priorisiert werden.
    • DUAL_STA_NON_TRANSIENT_UNBIASED: Gibt die gleichzeitige reine lokale Verbindung und Internetverbindung oder die gleichzeitige Verbindung eingeschränkte und Internetverbindung. Die Qualität beider müssen gleich priorisiert werden.
  • Da zwei gleichzeitige Standardtextanzeigen zu einem Kundencenter-, SCC- und DBS-Modus führen können, muss bei der Anbieterimplementierung das beste Funknetz ausgewählt werden, wenn das Framework IWifiChip.setMultiStaUseCase() aufruft, um um die Funktion anzuzeigen. Im Folgenden finden Sie allgemeine Richtlinien:

    • 2 x 2 + 2 x 2 DBS wird bevorzugt, falls verfügbar.
    • Vermeiden Sie nach Möglichkeit 1 x 1 + 1 x 1 DBS, da die Auswirkungen auf die Verbindungsqualität. Verwenden Sie stattdessen Verwaltungskonten.
    • Der Kundencenter-Arbeitszyklus muss über den Treiber oder die Firmware für die verschiedenen Funktionen. Der Kundencenter-Aufgabenzyklus wird durch das Framework nicht festgelegt werden diese Informationen aber mithilfe von StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent
    • Wenn Sie ein Kundencenter-Konto verwenden, empfehlen wir die folgenden Arbeitszyklen zwischen dem primären und sekundäre Verbindungen:

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY: 70% primäre, 30% sekundäre.
      • DUAL_STA_NON_TRANSIENT_UNBIASED: 50% primäre, 50% sekundäre.