Hotspot de Wi-Fi (PA secundario)

Android es compatible con hotspots de Wi-Fi (PA secundario), incluida la conexión mediante dispositivo móvil a través de un hotspot de Wi-Fi y hotspots de Wi-Fi solo locales.

La función de PA secundario permite la configuración de lo siguiente:

  • SSID y BSSID
  • Tipo de seguridad (incluido WPA3)
  • SSID oculto
  • Banda y canal de operación (incluido ACS)
  • Cantidad máxima de clientes permitidos
  • Valor de tiempo de espera para el cierre automático
  • Lista de dispositivos permitidos y bloqueados para que los usuarios controlen los dispositivos asociados
  • Nivel de aleatorización de MAC para el BSSID del AP
  • 802.11ax y 802.11be

Las capacidades del dispositivo determinan la disponibilidad de estos controles. Android 11 presenta APIs para obtener estas capacidades de integración. Los fabricantes de dispositivos también pueden especificar las capacidades de los dispositivos de base con superposiciones.

Ten en cuenta que algunas de las APIs son APIs del sistema y están restringidas a través de permisos para que solo la app de Configuración del sistema pueda acceder a ellos.

Cómo desarrollar apps con APIs de hotspot

AOSP proporciona una implementación predeterminada de un hotspot de Wi-Fi mediante dispositivo móvil App de Settings; sin embargo, no ejecuta todas las APIs de Soft AP configuración.

Para admitir la conexión mediante un hotspot o un hotspot solo local, la app debe realizar las siguientes funciones:

  1. Registra una devolución de llamada para obtener las capacidades del dispositivo con WifiManager#registerSoftApCallback para un hotspot de conexión mediante dispositivo móvil o WifiManager#registerLocalOnlyHotspotSoftApCallback solo para uso local hotspot.

    La devolución de llamada SoftApCallback proporciona los siguientes métodos:

    • SoftApCallback#onCapabilityChanged: Proporciona información sobre las capacidades del dispositivo, incluida la la cantidad de clientes admitidos y si se admite SAE o ACS.
    • SoftApCallback#onInfoChanged: Proporciona información sobre el PA secundario en ejecución (solo válido una vez) comenzar), incluida información sobre la banda y la frecuencia.
    • SoftApCallback#onConnectedClientsChanged: Proporciona una lista de clientes conectados. Para cada cliente, puedes obtener la dirección MAC. Para obtener la información de IP, usa el TetheringEventCallback#onClientsChanged.
    • SoftApCallback#onStateChanged: Proporciona actualizaciones sobre el estado del PA secundario a medida que se habilita inhabilitado.
    • SoftApCallback#onBlockedClientConnecting: Proporciona la información del cliente bloqueado con una de las siguientes opciones: motivos del bloqueo: el dispositivo alcanzó la cantidad máxima de los clientes a los que puede brindar asistencia o si el cliente no tiene autorización explícita para conectarte.

Para un hotspot de conexión mediante dispositivo móvil:

  1. Configurar la configuración del punto de acceso temporal para la conexión mediante dispositivo móvil llamando al WifiManager#setSoftApConfiguration y proporciona una instancia de SoftApConfiguration. Construir SoftApConfiguration con el SoftApConfiguration.Builder clase.
  2. Inicia la conexión mediante una llamada al método de conexión en TetheringManager#startTethering

Para hotspot solo local:

  1. Inicia el hotspot solo local con una configuración de AP de software específica. Para ello, haz lo siguiente: llamando al WifiManager#startLocalOnlyHotspot .

Implementa listas de entidades permitidas y bloqueadas

Un requisito típico del operador es proporcionarle al usuario los controles del que pueden asociarse al PA secundario. Existen varias mecanismos para hacerlo:

  • Limita la cantidad máxima de dispositivos que se pueden asociar al PA de software usando SoftApConfiguration.Builder#setMaxNumberOfClients. Asegúrate de especifica una cantidad inferior a la cantidad máxima de clientes admitidos por el dispositivo. Puedes obtener la cantidad máxima de SoftApCapability#getMaxSupportedClients
  • Ofrece un control dinámico con listas de entidades permitidas y bloqueadas:

    • La configuración predeterminada de un PA secundario permite que todos los dispositivos asociar al PA secundario, excepto en el caso de los dispositivos cuyas direcciones MAC agregado a SoftApConfiguration.Builder#setBlockedClientList.
    • Si el PA secundario se configura con SoftApConfiguration.Builder#setClientControlByUserEnabled(true), se usa la lista de permitidos.

      • Todos los dispositivos cuyas direcciones MAC se encuentren en Se bloqueó a SoftApConfiguration.Builder#setBlockedClientList en asociación.
      • Todos los dispositivos cuyas direcciones MAC se encuentren en Se permiten SoftApConfiguration.Builder#setAllowedClientList asociación.
      • Todos los demás dispositivos (es decir, aquellos cuyas direcciones MAC no están en la lista de entidades permitidas o bloqueadas), asociación, pero SoftApCallback#onBlockedClientConnecting es lo que permite que la app de control (es decir, la app de Configuración) realizar una acción, como pedir confirmación al usuario luego, agregar el dispositivo a la lista de entidades permitidas o bloqueadas. según el comportamiento del usuario.

    Ten en cuenta que los dispositivos solo pueden usar la funcionalidad de la lista de entidades permitidas si está compatibles con el dispositivo. Puedes verificar la compatibilidad de los dispositivos con SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)

Implementación

Para admitir la conexión mediante un hotspot o un hotspot solo local, Los fabricantes de dispositivos deben proporcionar la app de Configuración, el framework, y compatibilidad con HAL/firmware:

  • App de configuración: La app de Configuración del AOSP proporciona un modelo de referencia para la configuración. un hotspot de conexión mediante dispositivo móvil con SSID y credenciales de seguridad. Este código puede ser se usan tal cual o se modifican para proporcionar capacidades adicionales como las descritas en Cómo desarrollar apps con APIs de hotspot.

  • Marco de trabajo: El código del marco de trabajo del AOSP admite todas las funcionalidades. que se describe en Cómo desarrollar apps con APIs de hotspot.

  • HAL/firmware para el hotspot: El HIDL IHostapd.hal versión 1.2 o posterior, o el AIDL IHostapd.aidl

Personalización

Para personalizar la implementación, los fabricantes de dispositivos deben configurar el siguientes superposiciones y configuraciones de proveedores, documentadas en packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml:

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: Es el valor predeterminado. el intervalo de tiempo de espera de apagado. Solo es válida si Se habilitó SoftApConfiguration#setAutoShutdownEnabled. Se puede anular usando 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 la cantidad mínima de hardware y operador restricciones (especificadas por CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT). El resultado final se proporciona a la app con SoftApCapabilities#getMaxSupportedClients.
  • config_wifiSofapClientForceDisconnectSupported: Indica si el dispositivo tiene la capacidad de forzar la desconexión de un cliente. Es obligatorio para habilitar la opción y las listas de bloqueo. Comunicado a la app de control (app de Configuración) a través de SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
  • (Disponible a partir de la versión 13) config_wifiSoftapPassphraseAsciiEncodableCheck: Indica si se requiere o no que la frase de contraseña de AP sea codificable en ASCII.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: Si es o no para actualizar automáticamente la configuración de banda a doble banda durante el restablecimiento de la configuración de la nube cuando se admite un dispositivo nuevo.
  • (Disponible a partir de la versión 13) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: Si el framework agrega automáticamente las bandas inferiores a la configuración de bandas para evitar el manejo de coexistencia.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported: Si es dinámico o no la actualización del código de país en modo AP son compatibles con el dispositivo
  • Asistencia del canal: config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelList y config_wifiSoftap60gChannelList
  • La compatibilidad de restablecimiento especifica si se restablecen las entradas correspondientes de forma predeterminada cuando se restablece la configuración del hotspot en un dispositivo nuevo: config_wifiSoftapResetChannelConfig, config_wifiSoftapResetHiddenConfig, config_wifiSoftapResetUserControlConfig, config_wifiSoftapResetAutoShutdownTimerConfig, config_wifiSoftapResetMaxClientSettingConfig Ten en cuenta que estas opciones true de forma predeterminada, lo que significa que se restablecen los valores. Esto es fundamental si El dispositivo nuevo no admite la configuración.
  • Funciones de hardware:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (Disponible a partir de la versión 13) config_wifiSoftapOweTransitionSupported
    • (Disponible a partir de la versión 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (Disponible a partir de la versión 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 de unidades y del Conjunto de pruebas de compatibilidad (CTS) para validar la función de hotspot. La función de hotspot también se puede probar el Conjunto de pruebas de proveedores (VTS).

Pruebas de unidades

Verifica el paquete del hotspot mediante las siguientes pruebas.

  • Pruebas de servicio:

    atest packages/modules/Wifi/service/tests/wifitests/
    
  • Pruebas del administrador:

    atest packages/modules/Wifi/framework/tests/
    

Pruebas del Conjunto de pruebas de compatibilidad (CTS)

Usa pruebas CTS para validar la función de hotspot. El CTS detecta si la función está habilitada e incluye automáticamente la pruebas asociadas.

Para activar las pruebas del CTS, ejecuta lo siguiente:

atest android.net.wifi.cts.WifiManagerTest

Conjunto de pruebas de proveedores (VTS)

Si se implementa la interfaz HIDL, ejecuta lo siguiente:

atest VtsHalWifiHostapdV1_2Target

Si se implementa la interfaz del AIDL, ejecuta el siguiente comando:

atest VtsHalHostapdTargetTest