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, damit Nutzer verknüpfte Geräte steuern können
  • Grad der MAC‑Randomisierung für die BSSID des AP
  • 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.

Apps mit Hotspot-APIs entwickeln

Eine Standardimplementierung eines WLAN-Hotspots mit Tethering wird von der Einstellungs-App des Android Open Source Project (AOSP) bereitgestellt. Dabei werden jedoch nicht alle APIs für die Soft-AP-Konfiguration verwendet.

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

  1. Registrieren Sie einen Callback, um die Gerätefunktionen mit WifiManager#registerSoftApCallback für einen Hotspot mit Tethering oder mit WifiManager#registerLocalOnlyHotspotSoftApCallback für einen Hotspot nur für lokale Verbindungen 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 nach dem Start), 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 Callback TetheringEventCallback#onClientsChanged, 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 der Verbindung 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 nur für lokale Verbindungen 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 verknüpft 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:

    • In der Standardkonfiguration eines Soft-APs können alle Geräte eine Verbindung zum Soft-AP herstellen, 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.

    Geräte können die Funktion „Zulassungsliste“ nur verwenden, wenn sie auf dem Gerät unterstützt wird. Sie können die Geräteunterstützung mit SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT) prüfen.

Implementierung

Damit Tethering über einen Hotspot oder ein reiner lokaler Hotspot unterstützt werden kann, müssen Gerätehersteller eine Einstellungen-App, ein Framework und HAL-/Firmware-Unterstützung bereitstellen:

  • Einstellungen:Die Einstellungen-App des Open-Source-Projekts für Android (AOSP) bietet 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:HIDL-Version 1.2 oder höher (IHostapd.hal) oder AIDL-Version (IHostapd.aidl).

Anpassung

Um die Implementierung anzupassen, empfehlen wir Geräteherstellern, die folgenden Overlays und Mobilfunkanbieterkonfigurationen zu 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 einen Client trennen kann. Erforderlich, um Zulassungs- und Sperrlisten zu aktivieren. Wird über SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT) an die Steuerungs-App (Einstellungen) gesendet.
  • (Ab API-Level 13 verfügbar) config_wifiSoftapPassphraseAsciiEncodableCheck: Gibt an, ob die Soft-AP-Passphrase ASCII-codierbar sein muss.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: Gibt an, ob die Konfiguration der Bandeinstellung automatisch auf Dualband aktualisiert werden soll, wenn ein neues Gerät unterstützt wird und die Cloud-Konfiguration wiederhergestellt wird.
  • (Verfügbar ab Version 13) 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 ZP-Modus auf dem Gerät unterstützt werden.
  • Unterstützte Channels: config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelList und config_wifiSoftap60gChannelList.
  • „Restore support“ 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

Validierung

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/

Compatibility Test Suite (CTS)-Tests

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 mit 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