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

Android поддерживает точки доступа Wi-Fi (Soft AP), включая режим модема через точку доступа Wi-Fi и локальные точки доступа Wi-Fi.

Функция программной точки доступа позволяет настраивать следующие параметры:

  • SSID и BSSID
  • Тип безопасности (включая WPA3)
  • Скрытый SSID
  • Рабочий диапазон и канал (включая ACS)
  • Максимально допустимое количество клиентов
  • значение таймаута автоматического выключения
  • Списки разрешенных и заблокированных устройств позволяют пользователю контролировать связанные с ними устройства.
  • Уровень рандомизации MAC-адреса для BSSID точки доступа.
  • 802.11ax и 802.11be

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

Разрабатывайте приложения с использованием API точек доступа.

В приложении «Настройки» проекта AOSP (Android Open Source Project) по умолчанию реализована функция создания точки доступа Wi-Fi через проводное соединение, однако она не использует все API для настройки программных точек доступа.

Для поддержки режима модема через точку доступа или локальную точку доступа приложение должно выполнять следующие функции:

  1. Для получения информации о возможностях устройства используйте функцию обратного вызова WifiManager#registerSoftApCallback для точки доступа с подключением через модем или WifiManager#registerLocalOnlyHotspotSoftApCallback для локальной точки доступа.

    Функция обратного вызова SoftApCallback предоставляет следующие методы:

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

Для проводной точки доступа:

  1. Настройте программную конфигурацию точки доступа для режима модема, вызвав метод WifiManager#setSoftApConfiguration и указав экземпляр SoftApConfiguration . Создайте SoftApConfiguration используя класс SoftApConfiguration.Builder .
  2. Чтобы запустить привязку, вызовите метод привязки по адресу TetheringManager#startTethering .

Для локальной точки доступа:

  1. Запустите локальную точку доступа с заданными параметрами программной точки доступа, вызвав метод WifiManager#startLocalOnlyHotspot .

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

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

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

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

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

Выполнение

Для поддержки режима модема через точку доступа или для поддержки локальной точки доступа производители устройств должны предоставить приложение для настроек, фреймворк и поддержку HAL/прошивки:

Настройка

Для настройки реализации мы рекомендуем производителям устройств настроить следующие параметры наложения и параметры оператора связи, которые описаны в файле 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 ) .
  • (Доступно с версии 13) config_wifiSoftapPassphraseAsciiEncodableCheck : Требуется ли кодировка ASCII для парольной фразы программной точки доступа.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported : Следует ли автоматически обновлять конфигурацию настроек диапазонов до двух диапазонов во время восстановления конфигурации из облака при поддержке нового устройства.
  • (Доступно с версии 13) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled : Определяет, добавляет ли платформа автоматически нижние диапазоны к конфигурации диапазонов, чтобы избежать обработки сосуществования.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported : Поддерживается ли динамическое обновление кода страны в режиме точки доступа на устройстве.
  • Поддержка каналов: config_wifiSoftap2gChannelList , config_wifiSoftap5gChannelList , config_wifiSoftap6gChannelList и config_wifiSoftap60gChannelList .
  • Функция восстановления позволяет указать, следует ли сбрасывать соответствующие параметры до значений по умолчанию при восстановлении конфигурации точки доступа на новом устройстве: config_wifiSoftapResetChannelConfig , config_wifiSoftapResetHiddenConfig , config_wifiSoftapResetUserControlConfig , config_wifiSoftapResetAutoShutdownTimerConfig , config_wifiSoftapResetMaxClientSettingConfig . Обратите внимание, что по умолчанию эти параметры установлены в true , что означает сброс значений. Это критически важно, если новое устройство не поддерживает данную конфигурацию.
  • Аппаратные возможности:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (Доступно с версии 13) config_wifiSoftapOweTransitionSupported
    • (Доступно с версии 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (Доступно с версии 13) config_wifiSoftapIeee80211beSupported
    • config_wifiSoftapMacAddressCustomizationSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap24ghzSupported
    • config_wifiSoftap5ghzSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftap60ghzSupported
    • config_wifiSoftapAcsIncludeDfs

Валидация

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

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

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

  • Тесты сервиса:

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

    atest packages/modules/Wifi/framework/tests/

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

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

Для запуска тестов CTS выполните следующую команду:

atest android.net.wifi.cts.WifiManagerTest

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

Если интерфейс HIDL реализован, выполните:

atest VtsHalWifiHostapdV1_2Target

Если интерфейс AIDL реализован, выполните:

atest VtsHalHostapdTargetTest