Das WLAN-Framework hat drei WLAN-HAL-Oberflächen, die durch drei verschiedene Schnittstellen dargestellt werden. Auf Geräten mit Android 14 oder höher sind alle drei Schnittstellen als stabile AIDL-Pakete verfügbar. Diese Schnittstellen wurden zuvor mit HIDL definiert.
- Anbieter-HAL: Eine HAL-Oberfläche für Android-spezifische Befehle. Die AIDL-Dateien befinden sich in
hardware/interfaces/aidl
und die HIDL-Dateien inhardware/interfaces/wifi/1.x
. - Supplicant HAL: Eine HAL-Oberfläche für wpa_supplicant. Die AIDL-Dateien befinden sich in
hardware/interfaces/supplicant/aidl
und die HIDL-Dateien inhardware/interfaces/supplicant/1.x
. - Hostapd HAL: Eine HAL-Oberfläche für hostapd. Die AIDL-Dateien befinden sich in
hardware/interfaces/hostapd/aidl
und die HIDL-Dateien inhardware/interfaces/hostapd/1.x
.
Anbieter-HAL
Die Vendor HAL bietet Android-spezifische Befehle. Es ist optional (nicht erforderlich), dass die Modi „Infrastrukturstation“ (STA) und „Soft-AP“ (SAP) funktionieren. Sie ist jedoch für Wi‑Fi Aware und für Wi‑Fi RTT-Dienste obligatorisch.
In Android 14 und höher wird die HAL-Schnittstelle des Anbieters mit AIDL definiert. In Android 13 und niedriger wird die HAL-Schnittstelle des Anbieters mit HIDL definiert.
Vor HIDL (d. h. vor Android 8.0) verwendete Android einen HAL-Mechanismus, der jetzt Legacy HAL genannt wird. Der Android-Quellcode bietet derzeit eine Standardimplementierung von AIDL oder HIDL mit einem Shim, der über der alten HAL ausgeführt wird.
Die alten HAL-Header befinden sich unter hardware/libhardware_legacy/include/hardware_legacy/
. Die alte HAL-basierte Implementierung befindet sich unter hardware/interfaces/wifi/aidl/default
für AIDL und hardware/interfaces/wifi/1.x/default
für HIDL.
Supplicant HAL
Die Supplicant HAL bietet eine Schnittstelle für den Daemon wpa_supplicant. Ab Android 13 verwendet die Schnittstelle AIDL für die HAL-Definition. Bei Releases vor Android 13 wird HIDL für Schnittstellen und Anbieterpartitionen verwendet.
Der Quellcode von wpa_supplicant befindet sich unter external/wpa_supplicant_8/wpa_supplicant
. Die Referenzimplementierung bietet eine AIDL-Schnittstelle, die im Unterverzeichnis aidl
implementiert ist.
Hostapd HAL
Die Hostapd HAL bietet eine Schnittstelle für den hostapd-Daemon. Ab Android 13 verwendet die Schnittstelle AIDL für die HAL-Definition. Bei Releases vor Android 13 wird HIDL für Schnittstellen und Anbieterpartitionen verwendet.
Der Quellcode von hostapd befindet sich unter external/wpa_supplicant_8/hostapd
.
Die Referenzimplementierung bietet eine AIDL-Schnittstelle, die im Unterverzeichnis aidl
implementiert ist.
WLAN-Parallelität mit mehreren Schnittstellen
Unterschiedliche Android-Geräte können gleichzeitig unterschiedliche Kombinationen von WLAN-Schnittstellen unterstützen. Die unterstützten Kombinationen sind im HAL definiert und werden dem Framework zur Verfügung gestellt. Das Spezifikationsformat ist für die AIDL-Wi‑Fi HAL in hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
, für Wi‑Fi HAL 1.6 in android/hardware/interfaces/wifi/1.6/IWifiChip.hal
und für Wi‑Fi HAL 1.5 und niedriger in android/hardware/interfaces/wifi/1.0/IWifiChip.hal
definiert.
Die AIDL HAL, verfügbar für Android 14 und höher, und die Wi‑Fi HAL-Version 1.6, verfügbar in Android 13, bieten die Möglichkeit, eine gebridgete AP-Schnittstelle (Dualband gleichzeitig) als explizites Kombinationselement anzugeben.
Das Format der Spezifikation für die Parallelität ist flexibel und generisch. Es kann Kombinationen ausdrücken, die vom Framework noch nicht unterstützt werden. Verwenden Sie das Build-Flag WIFI_HAL_INTERFACE_COMBINATIONS
in device/<oem>/<device>/BoardConfig-common.mk
, um eine bestimmte Kombination zu konfigurieren.
Ein Gerät kann beispielsweise zwei STAs und eine Schnittstelle vom Typ NAN (Wi‑Fi Aware) oder P2P (Wi‑Fi Direct) unterstützen, aber nicht beides. In device/<oem>/<device>/BoardConfig-common.mk
wird dies so ausgedrückt:
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 2}, {{NAN, P2P}, 1}}
Ein weiteres Beispiel ist ein Gerät, das einen STA mit einem einzelnen ZP oder einen gebrückenen ZP (Dualband gleichzeitig) ohne andere Schnittstellen unterstützt. Das wird so dargestellt:
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}}, {{{AP_BRIDGED}, 1}}
Alternativ enthält die Referenz-HAL Konfigurationen für mehrere Kombinationen, die mit (alten) Build-Flags aktiviert werden können. Eine Konfigurationsanleitung finden Sie unter: