WLAN-HAL

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 in hardware/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 in hardware/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 in hardware/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: