Точка доступа Wi-Fi (программная точка доступа) Поддержка модема

Android поддерживает подключение через точку доступа Wi-Fi (Soft AP). Начиная с Android 11, конфигурация Soft AP, доступная производителям устройств, поддерживает больше вариантов использования и настроек операторов связи, включая следующие настройки:

  • SSID и BSSID
  • Тип безопасности (включая WPA3)
  • Скрытый SSID
  • Рабочий диапазон и канал (включая ACS)
  • Максимальное количество разрешенных клиентов
  • Значение тайм-аута автоотключения
  • Разрешенный и черный список, чтобы позволить пользователю управлять связанными устройствами

Возможности устройства определяют доступность этих элементов управления. В Android 11 представлены API для получения этих возможностей. Производители устройств также могут указывать возможности базовых устройств с помощью наложений.

Обратите внимание, что некоторые из API-интерфейсов являются системными API-интерфейсами и ограничены разрешениями, поэтому доступ к ним может получить только системное приложение «Настройки».

Примеры и источник

Реализация по умолчанию предоставляется приложением настроек AOSP, однако оно не использует все API-интерфейсы для настройки программной точки доступа. Вызывающее приложение должно выполнять следующие три функции:

  1. Зарегистрируйте обратный вызов для получения возможностей устройства с помощью WifiManager#registerSoftApCallback . Обратный вызов SoftApCallback предоставляет несколько методов:

    • SoftApCallback#onCapabilityChanged : предоставляет информацию о возможностях устройства, включая максимальное количество поддерживаемых клиентов, а также о том, поддерживаются ли SAE или ACS.
    • SoftApCallback#onInfoChanged : Предоставляет информацию о работающей Soft AP (действительна только после запуска), включая информацию о диапазоне и частоте.
    • SoftApCallback#onConnectedClientsChanged : предоставляет список подключенных клиентов. Для каждого клиента вы можете получить MAC-адрес. Чтобы получить информацию об IP, используйте обратный вызов TetheringEventCallback#onClientsChanged .
    • SoftApCallback#onStateChanged : предоставляет обновления состояния программной точки доступа по мере ее включения и отключения.
    • SoftApCallback#onBlockedClientConnecting : предоставляет информацию о заблокированном клиенте с одной из следующих причин блокировки: устройство достигло максимального количества клиентов, которое оно может поддерживать, или клиент явно не авторизован для подключения.
  2. Настройте конфигурацию Soft AP, которая будет использоваться для привязки, вызвав метод WifiManager#setSoftApConfiguration и предоставив экземпляр SoftApConfiguration . Вы можете SoftApConfiguration , используя класс SoftApConfiguration.Builder .

  3. Запустите привязку, вызвав метод привязки в TetheringManager#startTethering .

Внедрение разрешенных и заблокированных списков

Типичным требованием оператора связи является предоставление пользователю элементов управления устройствами, которым разрешено связываться с программной точкой доступа. Для этого существует несколько механизмов:

  • Ограничьте максимальное количество устройств, которые могут быть связаны с программной точкой доступа, с помощью SoftApConfiguration.Builder#setMaxNumberOfClients . Убедитесь, что указано число меньше, чем максимальное количество клиентов, поддерживаемых устройством. Вы можете получить максимальное количество из SoftApCapability#getMaxSupportedClients .
  • Обеспечьте динамический контроль с помощью разрешенных и заблокированных списков:

    • Конфигурация программной точки доступа по умолчанию позволяет всем устройствам связываться с программной точкой доступа, за исключением устройств, MAC-адреса которых добавлены в SoftApConfiguration.Builder#setBlockedClientList .
    • Если программная точка доступа настроена с помощью SoftApConfiguration.Builder#setClientControlByUserEnabled( true ) , используется список разрешений.

      • Все устройства, MAC-адреса которых находятся в SoftApConfiguration.Builder#setBlockedClientList , заблокированы от ассоциации.
      • Все устройства, MAC-адреса которых находятся в SoftApConfiguration.Builder#setAllowedClientList , разрешены для ассоциации.
      • Все другие устройства (то есть устройства, чьи MAC-адреса не входят в список разрешенных или заблокированных) блокируются от ассоциации, но SoftApCallback#onBlockedClientConnecting , что позволяет контролирующему приложению (то есть приложению «Настройки») выполнять действия для Например, запрашивая у пользователя подтверждение, а затем добавляя устройство в список разрешенных или в черный список в зависимости от поведения пользователя.

    Обратите внимание, что устройства могут использовать функцию списка разрешений только в том случае, если она поддерживается на устройстве. Вы можете проверить поддержку устройств, используя SoftApCapability#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT ) .

Реализация

Для поддержки привязки через точку доступа Wi-Fi (Soft AP) производители устройств должны предоставить приложение «Настройки», платформу и поддержку HAL/прошивки:

  • Приложение «Настройки». Приложение «Настройки AOSP» обеспечивает основу для настройки точки доступа с использованием SSID и учетных данных безопасности. Этот код можно использовать как есть или изменить для предоставления дополнительных возможностей, как описано в примерах и исходном коде .

  • Фреймворк: Код фреймворка AOSP поддерживает все функциональные возможности, описанные в примерах и исходниках .

  • HAL/прошивка для точки доступа: IHostapd.HAL версии 1.2 или выше.

Настройка

Чтобы настроить реализацию, производители устройств должны настроить следующие конфигурации наложений и несущих, которые задокументированы в packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml :

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds : интервал времени ожидания выключения по умолчанию. Действителен, только если SoftApConfiguration#setAutoShutdownEnabled включен. Можно переопределить с помощью SoftApConfiguration#setShutdownTimeoutMillis .
  • config_wifiHardwareSoftapMaxClientCount : аппаратное ограничение на максимальное количество поддерживаемых клиентов. Максимальное количество клиентов, которое поддерживает устройство, — это минимум аппаратных ограничений и ограничений оператора связи (указанных CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT ). Окончательный результат предоставляется приложению с помощью SoftApCapabilities#getMaxSupportedClients .
  • config_wifiSofapClientForceDisconnectSupported : может ли устройство принудительно отключить клиента. Требуется для включения разрешенных и заблокированных списков. Связь с управляющим приложением (приложением настроек) через SoftApCapabilities#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT ) .
  • Поддержка каналов: config_wifiSoftap2gChannelList , config_wifiSoftap5gChannelList и config_wifiSoftap6gChannelList .
  • Поддержка восстановления, указывающая, сбрасываются ли соответствующие записи по умолчанию при восстановлении конфигурации точки доступа на новом устройстве: config_wifiSoftapResetChannelConfig , config_wifiSoftapResetHiddenConfig , config_wifiSoftapResetUserControlConfig , config_wifiSoftapResetAutoShutdownTimerConfig , config_wifiSoftapResetMaxClientSettingConfig . Обратите внимание, что по умолчанию для них установлено значение true , что означает сброс значений. Это важно, если новое устройство не поддерживает конфигурацию.
  • Аппаратные возможности:

    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftapAcsIncludeDfs

Проверка

Android предоставляет набор модульных тестов, интеграционных тестов (Android Connectivity Test Suite или ACTS) и тестов Compatibility Test Suite (CTS) для проверки функции точки доступа. Функцию точки доступа также можно протестировать с помощью Vendor Test Suite (VTS).

Модульные тесты

Проверьте пакет точки доступа, используя следующие тесты.

  • Сервисные тесты:

    atest packages/modules/Wifi/service/tests/wifitests/
    
  • Тесты менеджера:

    atest packages/modules/Wifi/framework/tests/
    

Интеграционные тесты (ACTS)

Набор тестов точки доступа ACTS , расположенный в tools/test/connectivity/acts_tests/tests/google/wifi/WifiSoftApTest.py , реализует функциональные тесты функции точки доступа.

Тесты набора тестов совместимости (CTS)

Используйте тесты CTS для проверки функции точки доступа. CTS определяет, когда эта функция включена, и автоматически включает связанные тесты.

Чтобы запустить тесты CTS, запустите:

atest android.net.wifi.cts.WifiManagerTest

Набор тестов поставщика (VTS)

Чтобы запустить тесты VTS, запустите:

atest VtsHalWifiHostapdV1_2Target