Soporte de punto de acceso Wi-Fi (AP suave) para conexión

Android admite la conexión a través de un punto de acceso Wi-Fi (Soft AP). A partir de Android 11, la configuración Soft AP disponible para los fabricantes de dispositivos admite más casos de uso y personalizaciones de operadores, incluida la configuración de lo siguiente:

  • SSID y BSSID
  • Tipo de seguridad (incluyendo WPA3)
  • SSID oculto
  • Banda y canal operativos (incluido ACS)
  • Número máximo de clientes permitidos
  • Valor de tiempo de espera de apagado automático
  • Lista de permitidos y lista de bloqueo para permitir que el usuario controle los dispositivos asociados

Las capacidades del dispositivo determinan la disponibilidad de estos controles. Android 11 presenta API para obtener estas capacidades. Los fabricantes de dispositivos también pueden especificar las capacidades de los dispositivos básicos mediante superposiciones.

Tenga en cuenta que algunas de las API son API del sistema y están restringidas a través de permisos para que solo la aplicación Configuración del sistema pueda acceder a ellas.

Ejemplos y fuente

La aplicación Configuración de AOSP proporciona una implementación predeterminada; sin embargo, no ejerce todas las API para la configuración de Soft AP. Una aplicación de llamadas debe realizar estas tres funciones:

  1. Registre una devolución de llamada para obtener las capacidades del dispositivo usando WifiManager#registerSoftApCallback . La devolución de llamada SoftApCallback proporciona varios métodos:

    • SoftApCallback#onCapabilityChanged : proporciona información sobre las capacidades del dispositivo, incluida la cantidad máxima de clientes admitidos y si se admite SAE o ACS.
    • SoftApCallback#onInfoChanged : proporciona información sobre el Soft AP en ejecución (solo es válido una vez iniciado), incluida la información de banda y frecuencia.
    • SoftApCallback#onConnectedClientsChanged : proporciona una lista de clientes conectados. Para cada cliente, puede obtener la dirección MAC. Para obtener la información de IP, utilice la devolución de llamada TetheringEventCallback#onClientsChanged .
    • SoftApCallback#onStateChanged : Proporciona actualizaciones sobre el estado del Soft AP a medida que se habilita y deshabilita.
    • SoftApCallback#onBlockedClientConnecting : proporciona la información del cliente bloqueado con uno de los siguientes motivos para el bloqueo: el dispositivo alcanzó la cantidad máxima de clientes que puede admitir o el cliente no está explícitamente autorizado para conectarse.
  2. Configure la configuración de Soft AP que se usará para la conexión llamando al método WifiManager#setSoftApConfiguration y proporcionando una instancia de SoftApConfiguration . Puede construir SoftApConfiguration usando la clase SoftApConfiguration.Builder .

  3. Inicie la vinculación llamando al método de vinculación en TetheringManager#startTethering .

Implementación de listas de permitidos y bloqueados

Un requisito típico del operador es proporcionar al usuario controles de los dispositivos que pueden asociarse al Soft AP. Hay varios mecanismos para hacer esto:

  • Limite la cantidad máxima de dispositivos que pueden asociarse al punto de acceso suave mediante SoftApConfiguration.Builder#setMaxNumberOfClients . Asegúrese de especificar un número inferior al número máximo de clientes admitidos por el dispositivo. Puede obtener el número máximo de SoftApCapability#getMaxSupportedClients .
  • Proporcione control dinámico usando listas de permitidos y bloqueados:

    • La configuración predeterminada de un Soft AP permite que todos los dispositivos se asocien al soft AP, excepto los dispositivos cuyas direcciones MAC se agregan a SoftApConfiguration.Builder#setBlockedClientList .
    • Si Soft AP está configurado con SoftApConfiguration.Builder#setClientControlByUserEnabled( true ) , se utiliza la lista de permitidos.

      • Se bloquea la asociación de todos los dispositivos cuyas direcciones MAC están en SoftApConfiguration.Builder#setBlockedClientList .
      • Todos los dispositivos cuyas direcciones MAC están en SoftApConfiguration.Builder#setAllowedClientList pueden asociarse.
      • Se bloquea la asociación de todos los demás dispositivos (es decir, dispositivos cuyas direcciones MAC no están en la lista de permitidos o bloqueados), pero se llama a SoftApCallback#onBlockedClientConnecting , lo que permite que la aplicación de control (es decir, la aplicación Configuración) realice una acción, por ejemplo por ejemplo, pedir confirmación al usuario y luego agregar el dispositivo a la lista de permitidos o a la lista de bloqueados según el comportamiento del usuario.

    Tenga en cuenta que los dispositivos solo pueden usar la función de lista de permitidos si es compatible con el dispositivo. Puede verificar la compatibilidad del dispositivo con SoftApCapability#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT ) .

Implementación

Para admitir la conexión a través de un punto de acceso Wi-Fi (AP suave), los fabricantes de dispositivos deben proporcionar compatibilidad con la aplicación Configuración, el marco y HAL/firmware:

  • Aplicación de configuración : la aplicación de configuración de AOSP proporciona una línea de base para configurar un punto de acceso compartido con SSID y credenciales de seguridad. Este código se puede usar tal cual o modificarse para proporcionar capacidades adicionales como se describe en Ejemplos y fuente .

  • Marco: el código del marco AOSP es compatible con todas las funciones descritas en los ejemplos y el código fuente .

  • HAL/firmware para hotspot: IHostapd.HAL versión 1.2 o superior.

personalización

Para personalizar la implementación, los fabricantes de dispositivos deben configurar las siguientes superposiciones y configuraciones de operador, que se documentan en packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml :

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds : el intervalo de tiempo de espera de apagado predeterminado. Solo es válido si SoftApConfiguration#setAutoShutdownEnabled está habilitado. Se puede anular mediante SoftApConfiguration#setShutdownTimeoutMillis .
  • config_wifiHardwareSoftapMaxClientCount : la limitación de hardware para la cantidad máxima de clientes admitidos. La cantidad máxima de clientes que admite el dispositivo es el mínimo de las restricciones de hardware y operador (especificado por CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT ). El resultado final se proporciona a la aplicación con SoftApCapabilities#getMaxSupportedClients .
  • config_wifiSofapClientForceDisconnectSupported : si el dispositivo tiene la capacidad de forzar la desconexión de un cliente. Necesario para habilitar las listas de permitidos y bloqueados. Comunicado a la aplicación de control (aplicación de configuración) a través SoftApCapabilities#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT ) .
  • Compatibilidad con canales: config_wifiSoftap2gChannelList , config_wifiSoftap5gChannelList y config_wifiSoftap6gChannelList .
  • Restaurar soporte especificando si las entradas correspondientes se restablecen a los valores predeterminados al restaurar la configuración del punto de acceso a un nuevo dispositivo: config_wifiSoftapResetChannelConfig , config_wifiSoftapResetHiddenConfig , config_wifiSoftapResetUserControlConfig , config_wifiSoftapResetAutoShutdownTimerConfig , config_wifiSoftapResetMaxClientSettingConfig . Tenga en cuenta que estos se establecen en true de forma predeterminada, lo que significa que los valores se restablecen. Esto es fundamental si el nuevo dispositivo no es compatible con la configuración.
  • Capacidades de hardware:

    • 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

Validación

Android proporciona un conjunto de pruebas unitarias, pruebas de integración (Android Connectivity Test Suite o ACTS) y pruebas de Compatibility Test Suite (CTS) para validar la función de punto de acceso. La función de punto de acceso también se puede probar con Vendor Test Suite (VTS).

Pruebas unitarias

Verifique el paquete del punto de acceso usando las siguientes pruebas.

  • Pruebas de servicio:

    atest packages/modules/Wifi/service/tests/wifitests/
    
  • Pruebas de gerente:

    atest packages/modules/Wifi/framework/tests/
    

Pruebas de integración (ACTS)

El conjunto de pruebas de puntos de acceso ACTS , ubicado en tools/test/connectivity/acts_tests/tests/google/wifi/WifiSoftApTest.py , implementa pruebas funcionales de la función de punto de acceso.

Pruebas de conjunto de pruebas de compatibilidad (CTS)

Utilice las pruebas CTS para validar la función de punto de acceso. CTS detecta cuando la función está habilitada e incluye automáticamente las pruebas asociadas.

Para activar las pruebas CTS, ejecute:

atest android.net.wifi.cts.WifiManagerTest

Conjunto de pruebas de proveedores (VTS)

Para ejecutar las pruebas VTS, ejecute:

atest VtsHalWifiHostapdV1_2Target