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

Android est compatible avec les points d'accès Wi-Fi (Soft AP), y compris le partage de connexion via un point d'accès Wi-Fi et les points d'accès Wi-Fi locaux uniquement.

La fonctionnalité de point d'accès logiciel permet de configurer les éléments suivants :

  • SSID et BSSID
  • Type de sécurité (y compris WPA3)
  • SSID masqué
  • Bande et canal de fonctionnement (y compris ACS)
  • Nombre maximal de clients autorisés
  • Valeur du délai d'arrêt automatique
  • Listes d'autorisation et de blocage pour permettre aux utilisateurs de contrôler les appareils associés
  • Niveau de sélection aléatoire de l'adresse MAC pour le BSSID du point d'accès
  • 802.11ax et 802.11be

La disponibilité de ces commandes dépend des fonctionnalités de l'appareil. Android 11 introduit des API permettant d'obtenir ces fonctionnalités. Les fabricants d'appareils peuvent également spécifier les fonctionnalités de base de l'appareil à l'aide de calques.

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 les API de point d'accès

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

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 effectuer 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 partagé ou de 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 maximal de clients compatibles et si SAE ou ACS sont compatibles.
    • SoftApCallback#onInfoChanged : fournit des informations sur le point d'accès logiciel en cours d'exécution (valide uniquement une fois démarré), y compris des informations sur la bande et la fréquence.
    • SoftApCallback#onConnectedClientsChanged : fournit la liste des clients connectés. Pour chaque client, vous pouvez obtenir l'adresse MAC. Pour obtenir les informations sur l'adresse IP, utilisez le rappel TetheringEventCallback#onClientsChanged.
    • SoftApCallback#onStateChanged : fournit des informations sur l'état du point d'accès logiciel lorsqu'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 maximal de clients qu'il peut prendre en charge ou le client n'est pas explicitement autorisé à se connecter.
    • SoftApCallback#onClientsDisconnected : Fournit la liste des clients déconnectés. Pour chaque client, vous pouvez obtenir le motif de la déconnexion.

Pour un point d'accès partagé :

  1. Configurez la configuration du point d'accès logiciel 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émenter des listes d'autorisation et de blocage

Une exigence typique des opérateurs consiste à fournir à l'utilisateur des commandes permettant de contrôler les appareils autorisés à s'associer au point d'accès logiciel. Pour ce faire, vous disposez de plusieurs mécanismes :

  • Limitez le nombre maximal d'appareils pouvant s'associer au point d'accès logiciel à l'aide de SoftApConfiguration.Builder#setMaxNumberOfClients. Veillez à spécifier un nombre inférieur au nombre maximal de clients acceptés par l'appareil. Vous pouvez obtenir le nombre maximal à partir 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 de ceux dont les adresses MAC sont ajoutées à SoftApConfiguration.Builder#setBlockedClientList.
    • Si le point d'accès logiciel est configuré avec SoftApConfiguration.Builder#setClientControlByUserEnabled(true), la liste d'autorisation est utilisée.

      • Tous les appareils dont les adresses MAC figurent dans SoftApConfiguration.Builder#setBlockedClientList sont bloqués et ne peuvent pas être associés.
      • Tous les appareils dont les adresses MAC figurent dans SoftApConfiguration.Builder#setAllowedClientList sont autorisés à s'associer.
      • Tous les autres appareils (c'est-à-dire ceux dont les adresses MAC ne figurent pas dans la liste d'autorisation ni dans la liste de blocage) ne peuvent pas être associés, mais SoftApCallback#onBlockedClientConnecting est appelé, ce qui permet à l'application de contrôle (c'est-à-dire l'application Paramètres) d'effectuer une action, par exemple en demandant à l'utilisateur de confirmer et en ajoutant ensuite 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 d'autorisation que si elle est compatible avec l'appareil. Vous pouvez vérifier la compatibilité des appareils à l'aide de SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).

Implémentation

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

Personnalisation

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

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds : intervalle de délai avant expiration de l'arrêt par défaut. Valable uniquement si SoftApConfiguration#setAutoShutdownEnabled est activé. Peut être remplacé à l'aide de SoftApConfiguration#setShutdownTimeoutMillis.
  • config_wifiHardwareSoftapMaxClientCount : limite matérielle pour le nombre maximal de clients compatibles. Le nombre maximal 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 peut 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 la version 13) config_wifiSoftapPassphraseAsciiEncodableCheck : Indique si la phrase secrète du point d'accès logiciel doit être encodable en ASCII.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported : indique si la configuration des paramètres de bande doit être automatiquement mise à niveau vers les bandes doubles lors de la restauration de la configuration cloud lorsqu'un nouvel appareil est compatible.
  • (Disponible à partir de la version 13) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled : Indique si le framework ajoute automatiquement des bandes inférieures à la configuration des bandes pour éviter la gestion de la coexistence.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported : indique si la mise à jour dynamique du code pays en mode AP est prise en charge sur l'appareil.
  • Chaînes compatibles : config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelList et config_wifiSoftap60gChannelList.
  • Indique si les entrées correspondantes sont réinitialisées sur la valeur par défaut lors de la restauration de la configuration du point d'accès sur un nouvel appareil : config_wifiSoftapResetChannelConfig, config_wifiSoftapResetHiddenConfig, config_wifiSoftapResetUserControlConfig, config_wifiSoftapResetAutoShutdownTimerConfig, config_wifiSoftapResetMaxClientSettingConfig. Notez que ces valeurs sont définies sur true par défaut, ce qui signifie qu'elles sont réinitialisées. C'est essentiel si le nouvel appareil n'est pas compatible avec la configuration.
  • Fonctionnalités matérielles :
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (Disponible à partir de la version 13) config_wifiSoftapOweTransitionSupported
    • (Disponible à partir de la version 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (Disponible à partir de la version 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 et de tests CTS (Compatibility Test Suite) pour valider la fonctionnalité de point d'accès. La fonctionnalité de point d'accès peut également être testée à l'aide de la suite de tests du fournisseur (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 pour les administrateurs :

    atest packages/modules/Wifi/framework/tests/

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

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

Pour déclencher les tests CTS, exécutez la commande suivante :

atest android.net.wifi.cts.WifiManagerTest

Vendor Test Suite (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