Параллелизм Wi-Fi STA/STA

Android 12 представляет параллелизм Wi-Fi STA/STA, который позволяет устройствам одновременно подключаться к двум сетям Wi-Fi. Эта дополнительная функция включает следующие функции.

  • Make-before-break : Устройство устанавливает соединение с новой сетью Wi-Fi, прежде чем разорвать существующее соединение. Это приводит к более плавным переходам при переключении между сетями Wi-Fi.
  • Одновременное локальное подключение и подключение к Интернету . Устройство подключается к локальной сети без нарушения основного подключения устройства к Интернету.
  • Одновременное ограниченное подключение и подключение к Интернету : устройство подключается к сети с ограниченным доступом (доступной только для определенных привилегированных приложений) без нарушения основного подключения устройства к Интернету.

На этой странице описывается поведение устройства, когда эта функция включена, а также сведения о реализации для производителей и поставщиков устройств.

Реализация

Устройства должны поддерживать следующее для реализации параллелизма Wi-Fi STA/STA:

  • Микросхема или прошивка Wi-Fi должны поддерживать два одновременных подключения STA. Прошивка должна поддерживать все комбинации каналов и диапазонов для обоих подключений. Чтобы избежать проблем с производительностью, мы рекомендуем использовать чип Wi-Fi с поддержкой 2x2+2x2 DBS.

  • Устройство должно поддерживать следующие API в поставщике HAL версии 1.5.

    • IWifiChip.setMultiStaPrimaryConnection()
    • IWifiChip.setMultiStaUseCase()
  • Комбинация интерфейсов HAL Wi-Fi должна иметь два параллельных интерфейса STA, предоставляемых с использованием формата спецификации, такого как [{STA} <= 2, ...] . Дополнительные сведения см. в статье Параллелизм нескольких интерфейсов Wi-Fi .

Если эти предварительные условия соблюдены, реализуйте параллелизм Wi-Fi STA/STA, выполнив следующие действия.

  1. Включите одну или несколько функций по отдельности, используя наложения ресурсов времени выполнения (по умолчанию отключено).

    • Сделать перед перерывом : config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • Одновременное локальное и интернет-соединение : config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • Одновременное ограничение и подключение к Интернету : config_wifiMultiStaRestrictedConcurrencyEnabled
  2. Проверьте каждую реализацию, как описано в соответствующих разделах ниже.

Чтобы лучше поддерживать параллелизм Wi-Fi STA/STA, мы рекомендуем, чтобы OEM-платформы и приложения использовали метод NetworkCallback#onCapabilitiesChanged() вместо WifiManager#getConnectionInfo() , который возвращает WifiInfo только для одной сети и устарел в Android 12. , Для получения дополнительной информации см. API запроса сети Wi-Fi для однорангового подключения .

Сделать до перерыва

Функция « сделать перед разрывом » позволяет устройствам подключаться к новой сети Wi-Fi, сохраняя при этом существующее сетевое соединение Wi-Fi, отключаясь от старой сети только после успешного подключения к новой сети Wi-Fi и доступа в Интернет.

Вариант использования make-before-break решает следующие проблемы в Android 11 или более ранней версии, когда устройство должно отключиться от существующей сети Wi-Fi перед подключением к новой сети (break-before-make).

  • При подключении к новой сети устройство может обнаружить, что в нем сохранен неверный пароль Wi-Fi или что новая сеть не имеет доступа в Интернет. Это заставляет устройство переключаться обратно на старую сеть, что приводит к значительному времени без подключения к Wi-Fi.

  • Старая сеть резко отключается, что означает закрытие всех сокетов. Приложения часто плохо реагируют на внезапную потерю подключения, и это может привести к тому, что пользователь несколько секунд не сможет подключиться к Интернету, пока новое подключение не будет полностью установлено.

  • Сеть по умолчанию меняется дважды: со старой сети Wi-Fi на сотовую, а затем с сотовой на новую сеть Wi-Fi. Это заставляет приложения дважды реагировать на изменения в сети. Устройство также должно использовать сотовые данные в течение короткого промежутка времени.

Поток make-before-break используется только для автоматического переключения сети Wi-Fi, инициируемого ОС. Сетевые коммутаторы, инициируемые пользователем, используют устаревший процесс «разрыв перед созданием», когда предыдущая сеть полностью отключается до подключения новой сети. В некоторых случаях поток break-before-make используется даже при автоматических переключениях, инициируемых ОС, например, при переключении между двумя сетями, настроенными на использование заводского MAC-адреса.

Приложения могут проверить, поддерживается ли этот вариант использования на устройстве, с помощью WifiManager#isMakeBeforeBreakWifiSwitchingSupported() .

Проверка сборки до перерыва

Чтобы проверить свою реализацию, активируйте автоматическое переключение сети Wi-Fi (убедившись, что доступна сеть с более сильным сигналом, чем в настоящее время подключенная сеть) и убедитесь, что устройство поддерживает существующее соединение при подключении к новой сети. Чтобы просмотреть состояние обоих интерфейсов Wi-Fi и убедиться, что оба подключены, используйте следующую команду.

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

Если в новой сети нет подключения, устройство пытается подключиться к сети, сохраняя при этом подключение к существующей сети, и прерывает попытку, когда обнаруживает, что в новой сети нет Интернета. Затем устройство продолжает использовать существующее подключение в качестве основной сети Wi-Fi.

Одновременное локальное и интернет-соединение

Функция одновременного локального и интернет-соединения позволяет устройствам подключаться только к локальному соединению, например к устройству IoT, одновременно с основной сетью, предоставляющей интернет. Эта функция улучшает взаимодействие с пользователем при прямом подключении к устройствам IoT, таким как камеры, что возможно с помощью API WifiNetworkSpecifier , добавленного в Android 10.

В Android 11 и более ранних версиях устройства отключаются от основной сети Wi-Fi при подключении к устройству IoT, что приводит к потере подключения к Интернету (если на устройстве не доступен другой тип транспорта, например сотовые данные).

Приложения могут проверить, поддерживается ли эта функция на устройстве, с помощью WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported() .

Дополнительные сведения об изменениях в функции одновременного локального подключения и подключения к Интернету в Android 12 см. в разделе API запроса сети Wi-Fi для однорангового подключения .

Проверка локального и интернет-соединения

Чтобы проверить эту функцию, используйте следующие тесты CTS и ACTS:

  • CTS: MultiStaConcurrencyWifiNetworkSpecifierTest
  • ACTS: WifiStaConcurrencyNetworkRequestTest

Одновременно ограниченное и интернет-соединение

Функция одновременного ограниченного доступа и подключения к Интернету позволяет устройству одновременно подключаться к основной сети Wi-Fi для пользователя и сети Wi-Fi с ограниченным доступом, которая доступна только для избранных приложений.

Приложения могут проверить, поддерживается ли эта функция на устройстве, с помощью WifiManager#isStaConcurrencyForRestrictedConnectionsSupported() .

Чтобы разрешить устройству подключаться к дополнительным сетям Wi-Fi с ограниченным доступом, выполните следующие действия.

  1. Добавьте предложения сети Wi-Fi, установив для setOemPaid или setOemPrivate значение true.

  2. В ConnectivityManager NetworkRequest с соответствующими возможностями:

Когда устройство обнаруживает результаты сканирования в сети, соответствующей платному или частному предложению OEM, оно автоматически подключается к ней как к вторичной сети.

Проверка одновременного ограниченного и интернет-соединения

Чтобы проверить эту функцию, используйте следующие тесты CTS и ACTS:

  • CTS: MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest
  • ACTS: WifiStaConcurrencyNetworkRequestTest

Руководство по чипу Wi-Fi от поставщика

Для поставщиков чипов Wi-Fi используйте следующие рекомендации для поддержки параллелизма Wi-Fi STA/STA.

Чип Wi-Fi должен поддерживать двойные одновременные подключения STA. Это означает, что он поддерживает следующее:

  • Каждый интерфейс STA имеет уникальный MAC-адрес, программируемый платформой.
  • Вторичный интерфейс STA может создаваться и уничтожаться динамически.
  • Каждая STA может быть подключена к другому SSID (либо в том же диапазоне, либо в другом диапазоне).
  • Каждая STA может быть подключена к одному и тому же SSID (либо в том же диапазоне, либо в другом диапазоне). Две STA никогда не должны быть подключены к одному и тому же BSSID.

Критически важные функции должны работать для каждого интерфейса отдельно и должны быть доступны на основном интерфейсе. Ниже приведен список этих критических функций:

  • Роуминг должен поддерживаться по крайней мере на основном интерфейсе (устанавливается с помощью IWifiChip.setMultiStaPrimaryConnection() ). Если роуминг поддерживается на обоих интерфейсах, решения по одному соединению не должны конфликтовать со вторым одновременным соединением. Например, один интерфейс не должен переходить к BSSID другого соединения.

  • APF (и другие разгрузки, такие как ARP и NS) должны поддерживаться по крайней мере на основном интерфейсе (устанавливается с помощью IWifiChip.setMultiStaPrimaryConnection() ).

  • Статистика канального уровня должна работать для каждого интерфейса.

Ниже приведены рекомендуемые реализации чипов Wi-Fi для различных сценариев параллелизма:

  • Чип Wi-Fi должен позволять платформе вызывать IWifiChip.setMultiStaUseCase() с одной из следующих констант для указания текущей функции:

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY : определяет функцию Make-Before-Break. Качество первичного соединения должно иметь приоритет над вторичным соединением.
    • DUAL_STA_NON_TRANSIENT_UNBIASED : указывает одновременное локальное и интернет-соединение или одновременную ограниченную функцию и интернет-соединение . Качество обоих соединений должно иметь одинаковый приоритет.
  • Поскольку двойные параллельные STA могут привести к режимам работы MCC, SCC и DBS, реализация поставщика должна выбрать наилучшую конфигурацию радиосвязи, когда платформа вызывает IWifiChip.setMultiStaUseCase() для указания функции. Ниже приведены общие рекомендации.

    • 2x2+2x2 DBS предпочтительнее, если доступно.
    • По возможности избегайте DBS 1x1+1x1 из-за чрезмерного влияния на качество соединения. Вместо этого отдайте предпочтение Центру клиентов.
    • Рабочий цикл MCC должен настраиваться драйвером или микропрограммой для различных функций. Платформа не устанавливает рабочий цикл Центра клиентов напрямую, а запрашивает эту информацию с помощью StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent .
    • При использовании MCC мы рекомендуем следующие рабочие циклы между первичным и вторичным соединениями:

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY : 70% первичный, 30% вторичный.
      • DUAL_STA_NON_TRANSIENT_UNBIASED : 50% первичный, 50% вторичный.