Wpa-Supplicant

wpa_supplicant 下的 driver(-D) 選項

  • April 21, 2020

在進行wpa_supplicant工作之前,網路介面必須可用並且必須載入設備的驅動程序。wpa_supplicant允許使用“-D”標誌指定驅動程序。我在幾個系統上試過這個,但wpa_supplicant似乎從來沒有接受我指定的驅動程序。例如:

T42 ~ # lspci -v -s 02:02.0
02:02.0 Network controller: Intel Corporation PRO/Wireless 2915ABG [Calexico2] Network Connection (rev 05)
   Subsystem: Intel Corporation Device 1011
   Flags: bus master, medium devsel, latency 64, IRQ 11
   Memory at c0214000 (32-bit, non-prefetchable) [size=4K]
   Capabilities: [dc] Power Management version 2
   Kernel driver in use: ipw2200
   Kernel modules: ipw2200
T42 ~ # wpa_supplicant -D ipw2200 -i eth1 -c /root/wpafile 
Unsupported driver 'ipw2200'.
T42 ~ # 

但是,如果我開始時wpa_supplicant沒有指定驅動程序wpa_supplicant -i eth1 -c /root/wpafile,那麼它可以完美執行。為什麼會這樣?另外,在什麼情況下需要指定驅動wpa_supplicant

您混淆了核心驅動程序和使用者空間驅動程序。在您的情況下,您當然可以使用 WEXT,但也可以使用 nl80211(我認為)。

WEXT(或 WE= Wireless Extensions)是 Jean Tourrhiles 在 1997 年引入 Linux 核心的修改。根據Tourrhiles 自己寫的這個網頁,

無線擴展 (WE) 是一個通用 API,允許驅動程序向使用者空間、配置和特定於常見無線 LAN 的統計資訊公開。它的美妙之處在於,一套工具可以支持無線 LAN 的所有變體,無論其類型如何(只要驅動程序支持無線擴展)。另一個優點是這些參數可以在不重新啟動驅動程序(或 Linux)的情況下即時更改。

換句話說,WEXT 位於驅動程序之上,並允許 wpa_supplicant 與之互動。請注意,wpa_supplicant 和驅動程序屬於不同的核心領域,(第一個屬於使用者空間,第二個屬於核心空間),因此需要能夠充當中間人的 API。這就是 Bob 提到的所謂司機所扮演的角色。

然而,這個 Linux-Wireless 網頁明確指出

WE是否正在進一步發展?

不它不是。WE 只接受錯誤修復。

Wireless-Extensions 的替代品是什麼?

新的發展應該集中在cfg80211和nl80211上。

事實上,如果直接查詢我的 wpa_supplicant(即,不是手冊頁,而是命令

wpa_supplicant -h

我得到(部分)這個回复:

drivers:
 wext = Linux wireless extensions (generic)
 nl80211 = Linux nl80211/cfg80211
 wired = Wired Ethernet driver
 none = no driver (RADIUS server/WPS ER)
options:....

換句話說,忠實於 Linux Wireless 的話,對除 Wext 和 nl80211 之外的所有其他驅動程序的支持已被放棄,而對 Wext 的支持一直保持,因為…

我們還使用 WE 嗎?

是的,cfg80211 和 nl80211 仍在開發中,因此仍在使用 WE。所有 mac80211 驅動程序都支持 WE,因為 mac80211 使用它。我們的想法是慢慢開始將內容轉移到尚不存在的 cfg80211 和 nl80211 上,並向它們添加任何新功能。

這適用於 Linux 核心 3.11.1-031101-generic。

使用過 hostapd 的人在某種程度上已經知道這一切,因為 hostapd 的標準驅動程序正是 nl80211。

引用自:https://unix.stackexchange.com/questions/97828