Point d'accès Wi-Fi (Soft AP), point d'accès Wi-Fi (Soft AP)

Android prend en charge le point d'accès Wi-Fi (Soft AP), y compris le partage de connexion via un point d'accès Wi-Fi et des points d'accès Wi-Fi locaux uniquement.

La fonctionnalité soft AP permet la configuration des éléments suivants :

  • SSID et BSSID
  • Type de sécurité (y compris WPA3)
  • SSID caché
  • Bande et canal d'exploitation (y compris ACS)
  • Nombre maximum de clients autorisés
  • Valeur du délai d'expiration de l'arrêt automatique
  • Liste d'autorisation et liste de blocage pour permettre à l'utilisateur de contrôler les appareils associés
  • Niveau de randomisation MAC pour l'AP BSSID
  • 802.11ax et 802.11be

Les capacités de l'appareil déterminent la disponibilité de ces contrôles. Android 11 introduit des API pour obtenir ces fonctionnalités. Les fabricants d'appareils peuvent également spécifier les fonctionnalités de base des appareils à l'aide de superpositions.

Notez que certaines API sont des API système et sont limitées par des autorisations afin que seule l'application Paramètres du système puisse y accéder.

Développer des applications avec des API de hotspot

Une implémentation par défaut d'un point d'accès Wi-Fi connecté est fournie par l'application Paramètres AOSP, mais elle n'utilise pas toutes les API pour la configuration Soft AP.

Pour prendre en charge le partage de connexion via un point d'accès ou un point d'accès local uniquement, l'application doit exécuter les fonctions suivantes :

  1. Enregistrez un rappel pour obtenir les fonctionnalités de l'appareil à l'aide de WifiManager#registerSoftApCallback pour un point d'accès connecté ou WifiManager#registerLocalOnlyHotspotSoftApCallback pour un point d'accès local uniquement.

    Le rappel SoftApCallback fournit les méthodes suivantes :

    • SoftApCallback#onCapabilityChanged : fournit des informations sur les capacités de l'appareil, y compris le nombre maximum de clients pris en charge et si SAE ou ACS sont pris en charge.
    • SoftApCallback#onInfoChanged : fournit des informations sur le Soft AP en cours d'exécution (valable uniquement une fois démarré), y compris des informations sur la bande et la fréquence.
    • SoftApCallback#onConnectedClientsChanged : Fournit une liste des clients connectés. Pour chaque client, vous pouvez obtenir l'adresse MAC. Pour obtenir les informations IP, utilisez le rappel TetheringEventCallback#onClientsChanged .
    • SoftApCallback#onStateChanged : fournit des mises à jour sur l'état du Soft AP à mesure qu'il est activé et désactivé.
    • SoftApCallback#onBlockedClientConnecting : fournit les informations sur le client bloqué avec l'une des raisons suivantes pour le blocage : l'appareil a atteint le nombre maximum de clients qu'il peut prendre en charge ou le client n'est pas explicitement autorisé à se connecter.

Pour un point d'accès connecté :

  1. Configurez la configuration logicielle du point d'accès pour le partage de connexion en appelant la méthode WifiManager#setSoftApConfiguration et en fournissant une instance SoftApConfiguration . Construisez SoftApConfiguration à l’aide de la classe SoftApConfiguration.Builder .
  2. Démarrez le partage de connexion en appelant la méthode de partage de connexion à TetheringManager#startTethering .

Pour un point d'accès local uniquement :

  1. Démarrez le point d'accès local uniquement avec une configuration AP logicielle spécifique en appelant la méthode WifiManager#startLocalOnlyHotspot .

Implémentation de listes d'autorisation et de blocage

Une exigence typique de l'opérateur est de fournir à l'utilisateur des contrôles sur les appareils autorisés à s'associer au Soft AP. Il existe plusieurs mécanismes pour ce faire :

  • Limitez le nombre maximum de périphériques pouvant s'associer au point d'accès logiciel à l'aide de SoftApConfiguration.Builder#setMaxNumberOfClients . Assurez-vous de spécifier un nombre inférieur au nombre maximum de clients pris en charge par l'appareil. Vous pouvez obtenir le nombre maximum auprès de SoftApCapability#getMaxSupportedClients .
  • Fournissez un contrôle dynamique à l'aide de listes d'autorisation et de blocage :

    • La configuration par défaut d'un point d'accès logiciel permet à tous les appareils de s'associer au point d'accès logiciel, à l'exception des appareils dont les adresses MAC sont ajoutées à SoftApConfiguration.Builder#setBlockedClientList .
    • Si le Soft AP est configuré avec SoftApConfiguration.Builder#setClientControlByUserEnabled( true ) , la liste verte est utilisée.

      • Tous les appareils dont les adresses MAC se trouvent dans SoftApConfiguration.Builder#setBlockedClientList sont bloqués pour toute association.
      • Tous les appareils dont les adresses MAC se trouvent dans SoftApConfiguration.Builder#setAllowedClientList sont autorisés à s'associer.
      • Tous les autres appareils (c'est-à-dire les appareils dont les adresses MAC ne figurent pas dans la liste d'autorisation ou de blocage) sont bloqués pour toute association, mais SoftApCallback#onBlockedClientConnecting est appelé, permettant à l'application de contrôle (c'est-à-dire l'application Paramètres) d'effectuer une action, par exemple. par exemple, demander une confirmation à l'utilisateur, puis ajouter l'appareil à la liste d'autorisation ou à la liste de blocage en fonction du comportement de l'utilisateur.

    Notez que les appareils ne peuvent utiliser la fonctionnalité de liste verte que si elle est prise en charge sur l'appareil. Vous pouvez vérifier la prise en charge des appareils à l'aide de SoftApCapability#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT ) .

Mise en œuvre

Pour prendre en charge le partage de connexion via un point d'accès ou pour prendre en charge un point d'accès local uniquement, les fabricants d'appareils doivent fournir une application de paramètres, une structure et une prise en charge HAL/micrologiciel :

Personnalisation

Pour personnaliser l'implémentation, les fabricants d'appareils doivent configurer les superpositions et configurations d'opérateur suivantes, qui sont documentées dans packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml :

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds : L'intervalle de délai d'arrêt par défaut. Valable uniquement si SoftApConfiguration#setAutoShutdownEnabled est activé. Peut être remplacé à l'aide de SoftApConfiguration#setShutdownTimeoutMillis .
  • config_wifiHardwareSoftapMaxClientCount : La limitation matérielle pour le nombre maximum de clients pris en charge. Le nombre maximum de clients pris en charge par l'appareil correspond au minimum des contraintes matérielles et de l'opérateur (spécifiées par CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT ). Le résultat final est fourni à l'application avec SoftApCapabilities#getMaxSupportedClients .
  • config_wifiSofapClientForceDisconnectSupported : indique si l'appareil a la capacité de forcer la déconnexion d'un client. Requis pour activer les listes d'autorisation et de blocage. Communiqué à l'application de contrôle (application Paramètres) via SoftApCapabilities#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT ) .
  • (Disponible à partir de 13) config_wifiSoftapPassphraseAsciiEncodableCheck : Indique si la phrase secrète AP logicielle doit ou non être codable en ASCII.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported : s'il faut ou non mettre automatiquement à niveau la configuration des paramètres de bande vers deux bandes lors de la restauration de la configuration cloud lorsqu'un nouveau périphérique est pris en charge.
  • (Disponible à partir de 13) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled : indique si le framework ajoute automatiquement les bandes inférieures à la configuration des bandes pour éviter la gestion de la coexistence.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported : indique si la mise à jour dynamique du code de pays en mode AP est prise en charge ou non sur l'appareil.
  • Prise en charge des canaux : config_wifiSoftap2gChannelList , config_wifiSoftap5gChannelList , config_wifiSoftap6gChannelList et config_wifiSoftap60gChannelList .
  • Prise en charge de la restauration spécifiant si les entrées correspondantes sont réinitialisées par défaut lors de la restauration de la configuration du point d'accès sur un nouveau périphérique : config_wifiSoftapResetChannelConfig , config_wifiSoftapResetHiddenConfig , config_wifiSoftapResetUserControlConfig , config_wifiSoftapResetAutoShutdownTimerConfig , config_wifiSoftapResetMaxClientSettingConfig . Notez que ceux-ci sont définis sur true par défaut, ce qui signifie que les valeurs sont réinitialisées. Ceci est critique si le nouveau périphérique ne prend pas en charge la configuration.
  • Capacités matérielles :
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (Disponible à partir de 13) config_wifiSoftapOweTransitionSupported
    • (Disponible à partir de 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (Disponible à 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

Validation

Android fournit un ensemble de tests unitaires, de tests d'intégration (Android Connectivity Test Suite ou ACTS) et de tests Compatibility Test Suite (CTS) pour valider la fonctionnalité de point d'accès. La fonctionnalité de point d'accès peut également être testée à l'aide de Vendor Test Suite (VTS).

Tests unitaires

Vérifiez le package de point d'accès à l'aide des tests suivants.

  • Tests de service :

    atest packages/modules/Wifi/service/tests/wifitests/
    
  • Tests du gestionnaire :

    atest packages/modules/Wifi/framework/tests/
    

Tests d'intégration (ACTS)

La suite de tests de point d'accès ACTS , située dans tools/test/connectivity/acts_tests/tests/google/wifi/WifiSoftApTest.py , implémente des tests fonctionnels de la fonctionnalité de point d'accès.

Tests de la suite de tests de compatibilité (CTS)

Utilisez les tests CTS pour valider la fonctionnalité de point d'accès. CTS détecte lorsque la fonctionnalité est activée et inclut automatiquement les tests associés.

Pour déclencher les tests CTS, exécutez :

atest android.net.wifi.cts.WifiManagerTest

Suite de tests des fournisseurs (VTS)

Si l'interface HIDL est implémentée, exécutez :

atest VtsHalWifiHostapdV1_2Target

Si l'interface AIDL est implémentée, exécutez :

atest VtsHalHostapdTargetTest