WLAN-Hotspot (Soft AP)

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

Mit der Soft-AP-Funktion können Sie Folgendes konfigurieren:

  • SSID und BSSID
  • Sicherheitstyp (einschließlich WPA3)
  • Ausgeblendete SSID
  • Betriebsband und -kanal (einschließlich ACS)
  • Maximale Anzahl der zulässigen Clients
  • Wert für das Zeitlimit für das automatische Herunterfahren
  • Zulassungs- und Sperrlisten, um Nutzern die Kontrolle über zugehörige Geräte zu ermöglichen
  • MAC-Zufallsmix für die BSSID des ZP
  • 802.11ax und 802.11be

Die Verfügbarkeit dieser Steuerelemente hängt von den Gerätefunktionen ab. Android 11 bietet APIs, mit denen Sie diese Funktionen nutzen können. Gerätehersteller können auch Basisgerätefunktionen mithilfe von Overlays angeben.

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

Anwendungen mit Hotspot-APIs entwickeln

Eine Standardimplementierung eines per Tethering angeschlossenen WLAN-Hotspots wird von der App „AOSP Settings“ bereitgestellt. Sie führt jedoch nicht alle APIs für die Soft-AP-Konfiguration aus.

Die Anwendung muss die folgenden Funktionen ausführen, um Tethering über einen Hotspot oder einen nur lokalen Hotspot zu unterstützen:

  1. Registrieren Sie einen Rückruf, um die Gerätefunktionen zu erhalten. Verwenden Sie dazu WifiManager#registerSoftApCallback für einen Hotspot mit Tethering oder WifiManager#registerLocalOnlyHotspotSoftApCallback für einen lokalen Hotspot.

    Der SoftApCallback-Callback bietet die folgenden Methoden:

    • SoftApCallback#onCapabilityChanged: Bietet Informationen zu den Gerätefunktionen, einschließlich der maximalen Anzahl unterstützter Clients und ob SAE oder ACS unterstützt werden.
    • SoftApCallback#onInfoChanged: Bietet Informationen zum laufenden Soft-AP (nur gültig, wenn es gestartet wurde), einschließlich Band- und Frequenzinformationen.
    • SoftApCallback#onConnectedClientsChanged: stellt eine Liste der verbundenen Clients bereit. Sie können für jeden Client die MAC-Adresse abrufen. Verwende den TetheringEventCallback#onClientsChanged-Callback, um die IP-Informationen abzurufen.
    • SoftApCallback#onStateChanged: Bietet Informationen zum Status des Soft-APs, wenn es aktiviert und deaktiviert wird.
    • SoftApCallback#onBlockedClientConnecting: Gibt einen der folgenden Gründe für die Blockierung des Clients an: Auf dem Gerät wurde die maximale Anzahl von Clients erreicht, die es unterstützen kann, oder der Client ist nicht ausdrücklich für die Verbindung autorisiert.

Für einen Tethering-Hotspot:

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

Nur für lokalen Hotspot:

  1. Starten Sie den lokalen Hotspot mit einer bestimmten Soft-AP-Konfiguration, indem Sie die Methode WifiManager#startLocalOnlyHotspot aufrufen.

Zulassungs- und Sperrlisten implementieren

Eine typische Anforderung von Mobilfunkanbietern besteht darin, dass Nutzer die Geräte steuern können, die mit dem Soft-AP verbunden werden dürfen. Dazu gibt es mehrere Mechanismen:

  • Begrenzen Sie mit SoftApConfiguration.Builder#setMaxNumberOfClients die maximale Anzahl der Geräte, die mit dem Soft-Zugangspunkt verknüpft werden können. Die Anzahl muss niedriger sein als die maximale Anzahl der vom Gerät unterstützten Clients. Die maximale Anzahl erhalten Sie von SoftApCapability#getMaxSupportedClients.
  • Dynamische Steuerung mit Zulassungs- und Sperrlisten:

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

      • Die Verknüpfung aller Geräte, deren MAC-Adressen in SoftApConfiguration.Builder#setBlockedClientList enthalten sind, wird blockiert.
      • Alle Geräte, deren MAC-Adressen in SoftApConfiguration.Builder#setAllowedClientList enthalten sind, können zugeordnet werden.
      • Alle anderen Geräte (d. h. Geräte, deren MAC-Adressen nicht in der Zulassungs- oder Sperrliste stehen) können nicht zugeordnet werden, aber SoftApCallback#onBlockedClientConnecting wird aufgerufen. So kann die steuernde App (d. h. die Einstellungen App) eine Aktion ausführen, z. B. den Nutzer um Bestätigung bitten und das Gerät dann je nach Nutzerverhalten der Zulassungs- oder Sperrliste hinzufügen.

    Hinweis: Die Zulassungsliste kann nur verwendet werden, 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

Um Tethering über einen Hotspot oder einen nur lokalen Hotspot zu unterstützen, müssen die Gerätehersteller die App „Einstellungen“, das Framework und die HAL/Firmware unterstützen:

  • Einstellungen:Die AOSP-Einstellungen bieten eine Baseline 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 Anwendungen mit Hotspot-APIs entwickeln beschrieben.

  • Framework:Der AOSP-Framework-Code unterstützt alle Funktionen, die im Hilfeartikel 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

Zur Anpassung der Implementierung 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-Zeitlimit 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 Mobilfunkanbietereinschränkungen (durch CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT angegeben). Das Endergebnis wird der App mit SoftApCapabilities#getMaxSupportedClients zur Verfügung gestellt.
  • config_wifiSofapClientForceDisconnectSupported: Gibt an, ob das Gerät die Möglichkeit hat, die Verbindung eines Clients zu trennen. Erforderlich, um Zulassungs- und Sperrlisten zu aktivieren. Wird über SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT) an die steuernde App (App „Einstellungen“) kommuniziert.
  • (Verfügbar ab 13) config_wifiSoftapPassphraseAsciiEncodableCheck: Gibt an, ob die weiche AP-Passphrase in ASCII codieren kann.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: Gibt an, ob die Bandeinstellung während der Wiederherstellung der Cloud-Konfiguration automatisch auf Dualband umgestellt werden soll, wenn ein neues Gerät unterstützt wird.
  • (Verfügbar ab 13) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: Gibt an, ob das Framework automatisch niedrigere Bänder an die Bandkonfiguration anfügt, um eine Koexistenz zu vermeiden.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported: Ob die dynamische Aktualisierung des Landescodes im AP-Modus auf dem Gerät unterstützt wird
  • Kanalunterstützung: config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelList und config_wifiSoftap60gChannelList
  • Unterstützung für die Wiederherstellung angeben, um festzulegen, ob die entsprechenden Einträge bei der Wiederherstellung der Hotspot-Konfiguration auf einem neuen Gerät auf die Standardwerte zurückgesetzt werden: config_wifiSoftapResetChannelConfig, config_wifiSoftapResetHiddenConfig, config_wifiSoftapResetUserControlConfig, config_wifiSoftapResetAutoShutdownTimerConfig, config_wifiSoftapResetMaxClientSettingConfig. Diese sind standardmäßig auf true gesetzt, 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 13 Jahren) config_wifiSoftapOweTransitionSupported
    • (Erhältlich ab 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (Erhältlich ab 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- und CTS-Tests (Compatibility Test Suite), um das Hotspot-Feature 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. CTS erkennt, wenn die Funktion aktiviert ist, und schließt 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