Punto de acceso Wi-Fi (AP suave)

Android brinda soporte para puntos de acceso Wi-Fi (Soft AP), incluida la conexión a través de un punto de acceso Wi-FI y puntos de acceso Wi-Fi solo locales.

La función AP suave permite la configuración de lo siguiente:

  • SSID y BSSID
  • Tipo de seguridad (incluido WPA3)
  • SSID oculto
  • Banda operativa y canal (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 al usuario el control de los dispositivos asociados
  • Nivel de aleatorización de MAC para AP BSSID
  • 802.11ax y 802.11be

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

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

Desarrollo de aplicaciones con API de hotspot

La aplicación de configuración AOSP proporciona una implementación predeterminada de un punto de acceso Wi-Fi conectado, sin embargo, no utiliza todas las API para la configuración de Soft AP.

Para admitir la conexión a red a través de un punto de acceso o un punto de acceso solo local, la aplicación debe realizar las siguientes funciones:

  1. Registre una devolución de llamada para obtener las capacidades del dispositivo usando WifiManager#registerSoftApCallback para un punto de acceso conectado o WifiManager#registerLocalOnlyHotspotSoftApCallback para un punto de acceso solo local.

    La devolución de llamada SoftApCallback proporciona los siguientes 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 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 del bloqueo: el dispositivo alcanzó la cantidad máxima de clientes que puede admitir o el cliente no está autorizado explícitamente para conectarse.

Para un punto de acceso conectado:

  1. Configure la configuración del AP suave para la conexión llamando al método WifiManager#setSoftApConfiguration y proporcionando una instancia SoftApConfiguration . Construya SoftApConfiguration utilizando la clase SoftApConfiguration.Builder .
  2. Inicie la conexión llamando al método de conexión en TetheringManager#startTethering .

Para hotspot solo local:

  1. Inicie el punto de acceso solo local con una configuración de AP suave específica llamando al método WifiManager#startLocalOnlyHotspot .

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. Existen varios mecanismos para hacer esto:

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

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

      • Todos los dispositivos cuyas direcciones MAC están en SoftApConfiguration.Builder#setBlockedClientList no pueden asociarse.
      • 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 de 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 bloqueo dependiendo del comportamiento del usuario.

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

Implementación

Para admitir la conexión a red a través de un punto de acceso o para admitir un punto de acceso solo local, los fabricantes de dispositivos deben proporcionar compatibilidad con la aplicación de configuración, el marco y el firmware/HAL:

Personalización

Para personalizar la implementación, los fabricantes de dispositivos deben configurar las siguientes superposiciones y configuraciones de operador, que están documentadas 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 (especificadas 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 Configuración) a través de SoftApCapabilities#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT ) .
  • (Disponible a partir de 13) config_wifiSoftapPassphraseAsciiEncodableCheck : si se requiere o no que la frase de contraseña AP suave sea codificable en ASCII.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported : si se actualiza o no automáticamente la configuración de configuración de banda a bandas duales durante la restauración de la configuración en la nube cuando se admite un nuevo dispositivo.
  • (Disponible a partir de 13) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled : si el marco agrega automáticamente bandas inferiores a la configuración de bandas para evitar el manejo de la coexistencia.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported : si el dispositivo admite o no la actualización dinámica del código de país en modo AP
  • Soporte de canales: config_wifiSoftap2gChannelList , config_wifiSoftap5gChannelList , config_wifiSoftap6gChannelList y config_wifiSoftap60gChannelList .
  • Soporte de restauración que especifica 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 están configurados en true de forma predeterminada, lo que significa que los valores se restablecen. Esto es fundamental si el nuevo dispositivo no admite la configuración.
  • Capacidades de hardware:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (Disponible a partir de 13) config_wifiSoftapOweTransitionSupported
    • (Disponible a partir de 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (Disponible a partir de 13) config_wifiSoftapIeee80211beSupported
    • config_wifiSoftapMacAddressCustomizationSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap24ghzSupported
    • config_wifiSoftap5ghzSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftap60ghzSupported
    • 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 utilizando Vendor Test Suite (VTS).

Pruebas unitarias

Verifique el paquete del punto de acceso mediante 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 punto 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 del conjunto de pruebas de compatibilidad (CTS)

Utilice 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)

Si la interfaz HIDL está implementada, ejecute:

atest VtsHalWifiHostapdV1_2Target

Si la interfaz AIDL está implementada, ejecute:

atest VtsHalHostapdTargetTest