Wi-Fi HAL

Wi-Fi 架構有三個 Wi-Fi HAL 途徑,由三個不同的介面代表。對於搭載 Android 14 以上版本的裝置,這三種介面都會提供穩定的 AIDL 套件。這些介面先前是使用 HIDL 定義的。

  • 供應商 HAL:適用於 Android 特定指令的 HAL 介面。AIDL 檔案位於 hardware/interfaces/aidl,HIDL 檔案位於 hardware/interfaces/wifi/1.x
  • Supplicant HAL:wpa_supplicant 的 HAL 途徑。AIDL 檔案位於 hardware/interfaces/supplicant/aidl,HIDL 檔案位於 hardware/interfaces/supplicant/1.x
  • Hostapd HAL:hostapd 的 HAL 途徑。AIDL 檔案位於 hardware/interfaces/hostapd/aidl,HIDL 檔案位於 hardware/interfaces/hostapd/1.x

供應商 HAL

供應商 HAL 會提供 Android 專屬指令。基礎架構站 (STA) 和軟體存取點 (SAP) 模式的運作模式為選用 (非必要)。不過,您必須使用 Wi-Fi AwareWi-Fi RTT 服務。

在 Android 14 以上版本中,供應商 HAL 介面是以 AIDL 定義。在 Android 13 及以下版本中,供應商 HAL 介面是以 HIDL 定義。

在 HIDL 推出之前 (也就是 Android 8.0 之前),Android 使用的是現在稱為舊版 HAL的 HAL 機制。Android 原始碼目前提供 AIDL 或 HIDL 的預設實作項目,使用在舊版 HAL 上執行的 shim。

舊版 HAL 標頭位於 hardware/libhardware_legacy/include/hardware_legacy/ 中。舊版 HAL 實作項目位於 AIDL 的 hardware/interfaces/wifi/aidl/default 和 HIDL 的 hardware/interfaces/wifi/1.x/default

申請者 HAL

Supplicant HAL 會為 wpa_supplicant 守護程式提供介面。自 Android 13 起,介面會使用 AIDL 做為 HAL 定義。如果是 Android 13 以下版本,介面和供應商分區會使用 HIDL。

wpa_supplicant 原始碼位於 external/wpa_supplicant_8/wpa_supplicant。參考實作項目會提供 AIDL 介面,並在 aidl 子目錄中實作。

代管 HAL

Hostapd HAL 為 hostapd Daemon 提供介面,從 Android 13 開始,此介面會使用 AIDL 定義 HAL。在 Android 13 之前的版本中,介面和供應商分區會使用 HIDL。

hostapd 原始碼位於 external/wpa_supplicant_8/hostapd 中。參考實作項目會提供 AIDL 介面,並在 aidl 子目錄中實作。

Wi-Fi 多介面並行

不同的 Android 裝置可以同時支援不同的 Wi-Fi 介面組合。支援的組合會在 HAL 中定義,並公開給架構。規格格式定義如下:hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl 適用於 AIDL Wi-Fi HAL、android/hardware/interfaces/wifi/1.6/IWifiChip.hal 適用於 Wi-Fi HAL 1.6,android/hardware/interfaces/wifi/1.0/IWifiChip.hal 適用於 Wi-Fi HAL 1.5 以下版本。

AIDL HAL 適用於 Android 14 以上版本,以及 Wi-Fi HAL 1.6 版 (適用於 Android 13),現在可以將橋接 AP 介面 (同時提供雙頻) 指定為明確的組合項目。

並行處理規格格式具有彈性且通用。可用來表示架構尚未支援的組合。如要設定特定組合,請使用 device/<oem>/<device>/BoardConfig-common.mk 中的 WIFI_HAL_INTERFACE_COMBINATIONS 建構旗標。

舉例來說,裝置可支援兩個 STA 和一個 NAN (Wi-Fi Aware) 或 P2P (Wi-Fi Direct) 類型的介面 (但不能同時支援兩者)。在 device/<oem>/<device>/BoardConfig-common.mk 中,這會以以下方式表示:

WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 2}, {{NAN, P2P}, 1}}

另一個例子是裝置支援單一 AP 的 STA,或沒有其他介面的橋接 AP (同時支援雙頻)。這會以以下方式表示:

WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}}, {{{AP_BRIDGED}, 1}}

或者,參考 HAL 有幾種組合的設定,可透過 (舊版) 建構標記啟用。如需設定操作說明,請參閱: