WLAN-Hotspot (Soft-AP)

Android unterstützt WLAN-Hotspots (SoftAP), einschließlich Tethering über einen WLAN-Hotspot und lokal beschränkte WLAN-Hotspots.

Die Soft-AP-Funktion ermöglicht die Konfiguration der folgenden Elemente:

  • SSID und BSSID
  • Sicherheitstyp (einschließlich WPA3)
  • SSID ausgeblendet
  • Betriebsfrequenzband und ‑kanal (einschließlich ACS)
  • Maximale Anzahl zulässiger Clients
  • Zeitüberschreitungswert für das automatische Herunterfahren
  • Zulassungs- und Sperrliste zur Nutzersteuerung verknüpfter Geräte
  • Grad der MAC‑Randomisierung für die BSSID des Access Points
  • 802.11ax und 802.11be

Die Verfügbarkeit dieser Steuerelemente hängt von den Gerätefunktionen ab. In Android 11 werden APIs eingeführt, mit denen diese Funktionen abgerufen werden können. Gerätehersteller können auch mithilfe von Overlays grundlegende Gerätefunktionen angeben.

Einige der APIs sind System-APIs und sind durch Berechtigungen eingeschränkt, sodass nur die Einstellungen-App des Systems darauf zugreifen kann.

Apps mit Hotspot-APIs entwickeln

Die AOSP-Einstellungen-App bietet eine Standardimplementierung eines per Tethering verbundenen WLAN-Hotspots. Dabei werden jedoch nicht alle APIs für die Soft-AP-Konfiguration verwendet.

Damit Tethering über einen Hotspot oder einen lokalen Hotspot unterstützt wird, muss die App die folgenden Funktionen ausführen:

  1. Registrieren Sie einen Callback, um die Gerätefunktionen mit WifiManager#registerSoftApCallback für einen Tethering-Hotspot oder mit WifiManager#registerLocalOnlyHotspotSoftApCallback für einen Nur-lokal-Hotspot abzurufen.

    Der SoftApCallback-Callback bietet die folgenden Methoden:

    • SoftApCallback#onCapabilityChanged: Enthält Informationen zu Gerätefunktionen, einschließlich der maximalen Anzahl unterstützter Clients und ob SAE oder ACS unterstützt werden.
    • SoftApCallback#onInfoChanged: Liefert Informationen zum ausgeführten Soft-AP (nur gültig, wenn er gestartet wurde), einschließlich Band- und Frequenzinformationen.
    • SoftApCallback#onConnectedClientsChanged: Stellt eine Liste der verbundenen Clients bereit. Für jeden Client können Sie die MAC-Adresse abrufen. Verwenden Sie den TetheringEventCallback#onClientsChanged-Callback, um die IP-Informationen abzurufen.
    • SoftApCallback#onStateChanged: Stellt Updates zum Status des Soft-AP bereit, wenn er aktiviert und deaktiviert wird.
    • SoftApCallback#onBlockedClientConnecting: Stellt die Informationen zum blockierten Client mit einem der folgenden Gründe für die Blockierung bereit: Das Gerät hat die maximale Anzahl von Clients erreicht, die es unterstützen kann, oder der Client ist nicht explizit für die Verbindung autorisiert.
    • SoftApCallback#onClientsDisconnected: Stellt eine Liste der getrennten Clients bereit. Für jeden Client können Sie den Grund für die Trennung abrufen.

Für einen Hotspot mit Tethering:

  1. Konfigurieren Sie die Soft-AP-Konfiguration für Tethering, indem Sie die Methode WifiManager#setSoftApConfiguration aufrufen und eine SoftApConfiguration-Instanz bereitstellen. Erstellen Sie SoftApConfiguration mit der Klasse SoftApConfiguration.Builder.
  2. Starten Sie das Tethering, indem Sie die Tethering-Methode unter TetheringManager#startTethering aufrufen.

Nur lokaler Hotspot:

  1. Starten Sie den Hotspot, der nur lokal verfügbar ist, mit einer bestimmten Soft-AP-Konfiguration, indem Sie die Methode WifiManager#startLocalOnlyHotspot aufrufen.

Zulassungs- und Sperrlisten implementieren

Eine typische Anforderung von Mobilfunkanbietern ist, dem Nutzer die Möglichkeit zu geben, die Geräte zu steuern, die mit dem Soft-AP verbunden werden dürfen. Dafür gibt es mehrere Möglichkeiten:

  • Beschränken Sie die maximale Anzahl der Geräte, die über SoftApConfiguration.Builder#setMaxNumberOfClients mit dem Soft-AP verknüpft werden können. Geben Sie eine Zahl an, die niedriger ist als die maximale Anzahl von Clients, die vom Gerät unterstützt werden. Die maximale Anzahl finden Sie unter SoftApCapability#getMaxSupportedClients.
  • Dynamische Steuerung über Zulassungs- und Sperrlisten:

    • Die Standardkonfiguration eines Soft-AP ermöglicht es allen Geräten, sich mit dem Soft-AP zu verbinden, mit Ausnahme von Geräten, deren MAC-Adressen zu SoftApConfiguration.Builder#setBlockedClientList hinzugefügt wurden.
    • Wenn der Soft-AP mit SoftApConfiguration.Builder#setClientControlByUserEnabled(true) konfiguriert ist, wird die Zulassungsliste verwendet.

      • Alle Geräte, deren MAC-Adressen in SoftApConfiguration.Builder#setBlockedClientList enthalten sind, werden von der Zuordnung ausgeschlossen.
      • Alle Geräte, deren MAC-Adressen in SoftApConfiguration.Builder#setAllowedClientList enthalten sind, dürfen verbunden werden.
      • Alle anderen Geräte (d. h. Geräte, deren MAC-Adressen nicht in der Zulassungs- oder Sperrliste enthalten sind) werden von der Zuordnung ausgeschlossen, aber SoftApCallback#onBlockedClientConnecting wird aufgerufen, sodass die Steuerungs-App (d. h. die Einstellungen) eine Aktion ausführen kann, z. B. den Nutzer um Bestätigung bitten und das Gerät dann je nach Nutzerverhalten der Zulassungs- oder Sperrliste hinzufügen.

    Die Zulassungslistenfunktion kann nur auf Geräten verwendet werden, die sie unterstützen. Sie können die Geräteunterstützung mit SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT) prüfen.

Implementierung

Damit Geräte das Tethering über einen Hotspot oder einen Nur-lokal-Hotspot unterstützen, müssen Gerätehersteller die Einstellungen App, das Framework und die HAL-/Firmware-Unterstützung bereitstellen:

  • Einstellungen:Die AOSP-Einstellungen bieten eine Grundlage für die Konfiguration eines Tethering-Hotspots mit SSID und Sicherheitsanmeldedaten. Dieser Code kann unverändert verwendet oder geändert werden, um zusätzliche Funktionen bereitzustellen, wie unter Apps mit Hotspot-APIs entwickeln beschrieben.

  • Framework:Der AOSP-Framework-Code unterstützt alle Funktionen, die unter Apps mit Hotspot-APIs entwickeln beschrieben werden.

  • HAL/Firmware für Hotspot:Entweder die HIDL-Version IHostapd.hal 1.2 oder höher oder die AIDL-Version IHostapd.aidl.

Personalisierung

Um die Implementierung anzupassen, sollten Gerätehersteller die folgenden Overlays und Mobilfunkanbieterkonfigurationen konfigurieren, die in packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml dokumentiert sind:

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: Das Standard-Zeitlimitintervall für das Herunterfahren. Nur gültig, wenn SoftApConfiguration#setAutoShutdownEnabled aktiviert ist. Kann mit SoftApConfiguration#setShutdownTimeoutMillis überschrieben werden.
  • config_wifiHardwareSoftapMaxClientCount: Die Hardwarebeschränkung für die maximale Anzahl unterstützter Clients. Die maximale Anzahl von Clients, die das Gerät unterstützt, ist das Minimum der Hardware- und Mobilfunkanbieterbeschränkungen (angegeben durch CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT). Das Endergebnis wird der App mit SoftApCapabilities#getMaxSupportedClients bereitgestellt.
  • config_wifiSofapClientForceDisconnectSupported: Gibt an, ob das Gerät die Verbindung zu einem Client erzwingen kann. Erforderlich, um Zulassungs- und Sperrlisten zu aktivieren. Wird über SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT) an die Steuerungs-App (Einstellungen) gesendet.
  • (Verfügbar ab API-Level 13) config_wifiSoftapPassphraseAsciiEncodableCheck: Gibt an, ob die Soft-AP-Passphrase ASCII-codierbar sein muss.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: Gibt an, ob die Konfiguration der Bandeinstellung bei der Wiederherstellung der Cloud-Konfiguration automatisch auf Dualband aktualisiert werden soll, wenn ein neues Gerät unterstützt wird.
  • (Ab Version 13 verfügbar) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: Gibt an, ob das Framework der Bandkonfiguration automatisch niedrigere Bänder hinzufügt, um die Verarbeitung der Koexistenz zu vermeiden.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported: Gibt an, ob dynamische Aktualisierungen des Ländercodes im AP-Modus auf dem Gerät unterstützt werden.
  • Unterstützte Channels: config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelList und config_wifiSoftap60gChannelList.
  • „Restore“ gibt an, ob die entsprechenden Einträge beim Wiederherstellen der Hotspot-Konfiguration auf einem neuen Gerät auf die Standardeinstellungen zurückgesetzt werden:config_wifiSoftapResetChannelConfig,config_wifiSoftapResetHiddenConfig,config_wifiSoftapResetUserControlConfig,config_wifiSoftapResetAutoShutdownTimerConfig,config_wifiSoftapResetMaxClientSettingConfig. Diese sind standardmäßig auf true festgelegt, d. h., die Werte werden zurückgesetzt. Das ist wichtig, wenn das neue Gerät die Konfiguration nicht unterstützt.
  • Hardwarefunktionen:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (Verfügbar ab Version 13) config_wifiSoftapOweTransitionSupported
    • (Verfügbar ab Version 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (Verfügbar ab Version 13) config_wifiSoftapIeee80211beSupported
    • config_wifiSoftapMacAddressCustomizationSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap24ghzSupported
    • config_wifiSoftap5ghzSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftap60ghzSupported
    • config_wifiSoftapAcsIncludeDfs

Zertifizierungsstufe

Android bietet eine Reihe von Unit-Tests und CTS-Tests (Compatibility Test Suite), um die Hotspot-Funktion zu validieren. Die Hotspot-Funktion kann auch mit der Vendor Test Suite (VTS) getestet werden.

Einheitentests

Prüfen Sie das Hotspot-Paket mit den folgenden Tests.

  • Diensttests:

    atest packages/modules/Wifi/service/tests/wifitests/
  • Manager-Tests:

    atest packages/modules/Wifi/framework/tests/

CTS-Tests (Compatibility Test Suite)

Verwenden Sie CTS-Tests, um die Hotspot-Funktion zu validieren. Das CTS erkennt, wenn die Funktion aktiviert ist, und bezieht die zugehörigen Tests automatisch ein.

Führen Sie Folgendes aus, um die CTS-Tests auszulösen:

atest android.net.wifi.cts.WifiManagerTest

Vendor Test Suite (VTS)

Wenn die HIDL-Schnittstelle implementiert ist, führen Sie Folgendes aus:

atest VtsHalWifiHostapdV1_2Target

Wenn die AIDL-Schnittstelle implementiert ist, führen Sie Folgendes aus:

atest VtsHalHostapdTargetTest