Równoczesność Wi-Fi STA/STA

Android 12 wprowadza równoczesność sieci Wi-Fi STA/STA, który umożliwia łączenie się urządzeń jednocześnie z 2 sieciami Wi-Fi. Ta opcjonalna funkcja włącza poniższe funkcje.

  • Zrób przed przerwą: urządzenie nawiązuje połączenie z nową siecią Wi-Fi. przed zerwaniem istniejącego połączenia. Powoduje to płynniejsze przejścia podczas przełączania między sieciami Wi-Fi
  • Jednoczesne połączenie lokalne i połączenie z internetem: urządzenie łączy się z siecią lokalną, nie zakłócając podstawowego połączenia internetowego.
  • Jednoczesne z ograniczonym dostępem i połączenie z internetem: urządzenie łączy się z siecią z ograniczeniami (dostępne tylko w przypadku niektórych aplikacji z podwyższonymi uprawnieniami) bez zakłócania głównego połączenia urządzenia zapewniającego dostęp do internetu.
  • (Android 13 lub nowszy) Równoczesne wielokrotne sieci z połączeniem internetowym: urządzenie łączy się do dwóch sieci, z których każda jest dostępna dla wszystkich aplikacji, i umożliwianie połączenia z internetem.

Na tej stronie opisaliśmy, jak urządzenie działa po włączeniu tej funkcji, a szczegóły implementacji dla producentów i dostawców urządzeń.

Implementacja

Aby można było obsługiwać sieci Wi-Fi STA/STA, urządzenia muszą obsługiwać te parametry równoczesność:

  • Układ Wi-Fi lub oprogramowanie układowe Wi-Fi muszą obsługiwać 2 równoczesne grupy STA połączeń. Oprogramowanie układowe musi obsługiwać wszystkie kombinacje kanałów i pasm dla obu połączeń. Aby uniknąć problemów z wydajnością, zalecamy korzystanie z układ Wi-Fi DBS 2 x 2 + 2 x 2.

  • Urządzenie musi obsługiwać poniższe interfejsy API w AIDL lub HIDL implementacji interfejsu IWifiChip.

    • IWifiChip.setMultiStaPrimaryConnection(String ifName)
    • IWifiChip.setMultiStaUseCase(MultiStaUseCase useCase)
  • Kombinacja interfejsu HAL Wi-Fi musi mieć dwa równoczesne interfejsy STA są udostępniane za pomocą formatu specyfikacji, takiego jak [{STA} <= 2, ...]. Dla: więcej informacji znajdziesz w Współbieżność wielu interfejsów Wi-Fi.

Jeśli te wymagania wstępne są spełnione, zaimplementuj równoczesność Wi-Fi STA/STA, wykonując następujące:

  1. Włącz co najmniej jedną funkcję pojedynczo za pomocą nakładki zasobów środowiska wykonawczego (wyłączone przez ).

    • Zrób przed przerwą: config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • Jednoczesne połączenie lokalne i połączenie z internetem: config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • Jednoczesne z ograniczonym dostępem i połączenie z internetem: config_wifiMultiStaRestrictedConcurrencyEnabled
    • Wiele sieci równoczesnych z połączeniem internetowym: config_wifiMultiStaMultiInternetConcurrencyEnabled
  2. Sprawdź każdą implementację w sposób opisany w odpowiednich sekcjach.

Aby lepiej obsługiwać równoczesność Wi-Fi STA/STA, zalecamy stosowanie platformy i aplikacje używają metody NetworkCallback#onCapabilitiesChanged() zamiast WifiManager#getConnectionInfo(), które zwraca tylko WifiInfo dla argumentu do jednej sieci i zostały wycofane na Androidzie 12. Dla: więcej informacji znajdziesz w Wi-Fi Network Request API do połączeń peer-to-peer.

Zrób przed przerwą

Funkcja make-before-break pozwala urządzeniom połączyć się z nową siecią Wi-Fi. przy zachowaniu dotychczasowego połączenia z siecią Wi-Fi, tylko odłączenie od starej sieci po udanym połączeniu z nową, Sieć Wi-Fi i dostęp do internetu.

Przypadek użycia funkcji Zrób przed przerwą rozwiązuje następujące problemy: Android 11 lub starszy, na którym urządzenie musi się rozłączyć z istniejącej sieci Wi-Fi, zanim połączysz się z nową siecią. (break-before-make).

  • Podczas łączenia się z nową siecią urządzenie może wykryć, że zapisane nieprawidłowe hasło do Wi-Fi lub błąd nowej sieci dostęp do internetu. Wymusza to przywrócenie na urządzeniu starego trybu przez co przez długi czas nie ma połączenia z siecią Wi-Fi.

  • Stara sieć zostaje nagle odłączona, co oznacza, że wszystkie gniazdka się zamykają. Aplikacje często źle reagują na nagłą utratę i może prowadzić do przez kilka sekund bez połączenia z internetem nawiązano pełne połączenie.

  • Sieć domyślna zmienia się dwukrotnie – ze starej sieci Wi-Fi na sieć komórkową, a potem z sieci komórkowej do nowej sieci Wi-Fi. To sprawia, że aplikacje reagują na sieć dwukrotnie zmienia się. Urządzenie musi też wydać przez krótki czas za pomocą komórkowej transmisji danych.

Proces tworzenia przed przerwą jest używany tylko w automatycznej sieci Wi-Fi przełączników zainicjowanych przez system operacyjny. Przełączniki sieci inicjowane przez użytkownika korzystają ze starszej wersji w którym poprzednia sieć jest całkowicie odłączona przed połączeniem z nową siecią. W niektórych przypadkach jest stosowany nawet w przypadku automatycznych przełączania inicjowanych przez systemu operacyjnego, np. przy przełączaniu między dwiema sieciami, obie są skonfigurowane pod kątem użycia fabryczny adres MAC.

Aplikacje mogą sprawdzić, czy dany przypadek użycia jest obsługiwany na urządzeniu za pomocą Interfejs API WifiManager#isMakeBeforeBreakWifiSwitchingSupported().

Zweryfikuj renderowanie przed przerwą

Aby sprawdzić poprawność implementacji, aktywuj automatyczne przełączanie sieci Wi-Fi (przez zagwarantowanie, że sieć o mocy sygnału silniejszego niż dostępna jest połączona sieć) i sprawdź, czy urządzenie z nową siecią. Aby wyświetlić stan obu interfejsów Wi-Fi i sprawdzić, czy oba są połączone, użyj poniższego polecenia.

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

Jeśli nowa sieć nie ma połączenia, urządzenie próbuje połączyć się z siecią, przy zachowaniu połączenie z istniejącą siecią i przerwie próbę, gdy wykryje że nowa sieć nie ma internetu. Urządzenie będzie nadal korzystać z jako podstawową sieć Wi-Fi.

Równoczesne połączenie lokalne i połączenie z internetem

Funkcja jednoczesnego połączenia lokalnego i połączenia z internetem umożliwia urządzeniom: z połączeniami wyłącznie lokalnymi, np. z urządzeniem IoT, jednocześnie z główną siecią udostępniającą internet. Ta funkcja zwiększa skuteczność wrażenia użytkownika podczas bezpośredniego łączenia się z urządzeniami IoT, takimi jak kamery, Jest to możliwe dzięki interfejsowi API WifiNetworkSpecifier dodanemu w Android 10.

W Androidzie 11 i starszych wersjach urządzenia rozłączają się głównej sieci Wi-Fi podczas łączenia się z urządzeniem IoT, co skutkuje utratą połączenia z internetem (chyba że urządzenie ma dostępny inny rodzaj transportu, np. przez komórkową transmisję danych).

Aplikacje mogą sprawdzić, czy ta funkcja jest obsługiwana na urządzeniu za pomocą Interfejs API WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported().

Więcej informacji o zmianach dotyczących równoczesności, która obowiązuje tylko lokalnie i w internecie połączenia w Androidzie 12, zobacz Wi-Fi Network Request API do połączeń peer-to-peer.

Sprawdź połączenie lokalne i połączenie z internetem

Aby sprawdzić tę funkcję, użyj funkcji MultiStaConcurrencyWifiNetworkSpecifierTest test CTS.

Jednoczesne z ograniczeniami i połączenie z internetem

Funkcja jednoczesnej ograniczonego dostępu i połączenia z internetem umożliwia urządzeniu aby użytkownik mógł jednocześnie połączyć się z główną siecią Wi-Fi sieć Wi-Fi z ograniczonym dostępem, dostępna tylko dla wybranych aplikacji.

Aplikacje mogą sprawdzić, czy ta funkcja jest obsługiwana na urządzeniu za pomocą Interfejs API WifiManager#isStaConcurrencyForRestrictedConnectionsSupported().

Aby umożliwić urządzeniu łączenie się z dodatkowymi sieciami Wi-Fi z ograniczonym dostępem: wykonaj te czynności:

  1. Dodaj Sugestie dotyczące sieci Wi-Fi z setOemPaid. lub setOemPrivate. ustaw wartość true (prawda).

  2. W ConnectivityManager prześlij NetworkRequest z odpowiednimi funkcje:

Gdy urządzenie wykryje wyniki skanowania z siecią zgodną z opłaconą lub płatną wersją OEM Prywatna sugestia OEM, automatycznie łączy się z nią jako sieć dodatkowa.

Sprawdź, czy jednocześnie z ograniczonym dostępem i połączeniem internetowym

Aby sprawdzić tę funkcję, użyj funkcji MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest test CTS.

Wiele sieci równoczesnych z połączeniem internetowym

Funkcja dostępna na Androidzie 13 i nowszych, równoczesne Wiele sieci połączonych z internetem umożliwia urządzeniu jednocześnie z dwiema sieciami (AP), z których obie nie mają ograniczeń (wszystkie aplikacje mają dostęp) i umożliwiają dostęp do internetu.

Aplikacje mogą sprawdzić, czy ta funkcja jest obsługiwana na urządzeniu za pomocą WifiManager#isStaConcurrencyForMultiInternetSupported() .

Jeśli funkcja jest obsługiwana, aplikacje z podwyższonymi uprawnieniami mogą ją włączyć za pomocą Metoda WifiManager#setStaConcurrencyForMultiInternetMode(int mode). działa w tych trybach:

Aby wysłać zapytanie dotyczące obecnie aktywnego trybu funkcji, użyj WifiManager#getStaConcurrencyForMultiInternetMode() .

Gdy ta funkcja jest włączona, wykonaj poniższe czynności, aby poprosić o dodatkowe sieć Wi-Fi z dostępem do internetu.

  1. Utwórz specyfikator sieci Wi-Fi za pomocą WifiNetworkSpecifier.Builder Wybierz pasek dla specyfikatora, korzystając z setBand() . Nie określaj identyfikatora SSID ani identyfikatora BSSID jako dodatkowej sieci dla określone pasmo jest wybierane przez platformę Wi-Fi.

  2. Zastosowanie ConnectivityManager utwórz NetworkRequest z NET_CAPABILITY_INTERNET działania.

  3. Dodaj specyfikator do żądania sieciowego wraz z NetworkCallback śledzić stan żądania i wysłać żądanie ConnectivityManager Jeśli zapisana sieć o żądanym paśmie to w wynikach skanowania, a połączenie z siecią udało się, NetworkCallback.onAvailable() dla obiektu wywołania zwrotnego.

Zweryfikuj wiele równoczesnych sieci z połączeniem internetowym

Aby sprawdzić tę funkcję, użyj tego testu CTS:

  • punkt CTS: MultiStaConcurrencyMultiInternetWifiNetworkTest

Wytyczne dotyczące układu Wi-Fi dostawcy

Dostawcy układów scalonych Wi-Fi mogą skorzystać z tych wskazówek Równoczesność sieci Wi-Fi STA/STA.

Układ Wi-Fi musi obsługiwać podwójne równoczesne połączenia STA. Oznacza to, że obsługuje:

  • Każdy interfejs STA ma unikalny program MAC, który można zaprogramować przez tę platformę.
  • Dodatkowy interfejs STA można dynamicznie tworzyć i niszczyć.
  • Każdy punkt STA można połączyć z innym identyfikatorem SSID (w tym samym opaskę lub inną opaskę).
  • Każdy punkt STA może być połączony z tym samym identyfikatorem SSID (w tym samym opaskę lub inną opaskę). Nigdy nie wolno stosować połączone z tym samym identyfikatorem BSSID.

Kluczowe funkcje muszą działać według interfejsu i muszą być dostępnych w głównym interfejsie. Oto lista tych krytycznych funkcje:

  • Roaming musi być obsługiwany co najmniej przez interfejs główny (ustawiony za pomocą IWifiChip.setMultiStaPrimaryConnection()). Jeśli roaming jest obsługiwany obu interfejsów, decyzje dotyczące jednego połączenia nie mogą kolidować z drugiego równoczesnego połączenia. Na przykład jeden interfejs nie może korzystać z roamingu do identyfikatora BSSID drugiego połączenia.

  • APF (i inne odciążenia, takie jak ARP i NS) muszą być obsługiwane co najmniej interfejsu głównego (ustawionego za pomocą IWifiChip.setMultiStaPrimaryConnection()).

  • Statystyki warstwy linków muszą działać dla poszczególnych interfejsów.

Poniżej znajdziesz zalecane implementacje układów Wi-Fi dla różnych scenariusze równoczesności:

  • Układ Wi-Fi musi umożliwiać platformie wywoływanie IWifiChip.setMultiStaUseCase() z jedną z tych stałych na określ bieżącą funkcję:

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY: określa wartość Funkcja Make-Before-Break. Jakość połączenia podstawowego. musi mieć wyższy priorytet niż połączenie dodatkowe.
    • DUAL_STA_NON_TRANSIENT_UNBIASED: określa wartość jednoczesne połączenie lokalne i połączenie z internetem lub równoczesne połączenie funkcji ograniczonego dostępu i połączenia z internetem. Jakość obu połączenia muszą mieć jednakowy priorytet.
  • Ponieważ podwójne równoczesne grupy STA mogą prowadzić do trybów MCK, SCC i DBS to dostawca musi wybrać najlepszą opcję gdy platforma wywołuje metodę IWifiChip.setMultiStaUseCase() w celu wskazują funkcje. Oto ogólne wskazówki dotyczące sposobu postępowania:

    • Preferowana jest baza danych DBS 2 x 2 + 2 x 2, jeśli jest dostępna.
    • W miarę możliwości unikaj DBS 1 x 1 + 1 ze względu na nadmierny wpływ na jakości połączenia. Zamiast tego wybierz MCK.
    • Sterownik lub oprogramowanie układowe MCK musi skonfigurować współczynnik wypełnienia MCK różne funkcje. Struktura nie określa współczynnika wypełnienia MCK bezpośrednio, ale sprawdza te informacje za pomocą StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent
    • Jeśli korzystasz z MCK, zalecamy zastosowanie poniższych współczynników wypełnienia między głównymi i połączenia wtórne:

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY: 70% podstawowy, 30% dodatkowy.
      • DUAL_STA_NON_TRANSIENT_UNBIASED: 50% podstawowy, 50% dodatkowy.