OpenBSD 未能載入據稱支持的 WiFi USB 適配器的韌體
我最近在亞馬遜上購買了Edimax EW-7811Un WiFi USB 適配器。
urtwn(4)
少數 OpenBSD 使用者報告說使用它取得了成功,並且它在其手冊頁中被列為受支持。我目前正在華碩上網本上執行 OpenBSD 5.5 amd64(上週末下載)。正如預期的那樣,無線適配器被辨識為
urtwn0
,並且在我插入或移除它時報告為這樣。我/etc/hostname.urtwn0
按照手冊頁中的描述創建,內容如下:nwid mynetwork wpakey mykey dhcp
我的 Wifi 網路名稱和密碼分別在哪里
mynetwork
和是。mykey
網路實際上是 WPA2,這可能會導致其自身的問題,但作業系統似乎甚至無法載入韌體。當我執行sh /etc/netstart urtwn0
時,我得到以下輸出:urtwn0: failed loadfirmware of file urtwn-rt18192cfwT (error 2) urtwn0: no link ............ sleeping
韌體是否可能已損壞?這是我第一次使用適配器。更有可能的是,Edimax 是否更改了韌體並破壞了 OpenBSD 目前的
urtwn
實現?也有可能,我只是犯了一個愚蠢的錯誤嗎?
首先要做的事情是:您的
hostname.urtwn0
文件看起來不錯,如果您在其中有錯誤,您會收到完全不同的錯誤消息。該消息
urtwn0: failed loadfirmware of file urtwn-rt18192cfwT (error 2)
表明韌體未安裝在正確的位置:如 中所述
loadfirmware(9)
,此函式返回errno
樣式錯誤程式碼:並errno(2)
解釋:2 ENOENT No such file or directory. A component of a specified pathname did not exist, or the pathname was an empty string.
應該有一個文件
/etc/firmware/urtwn-rt18192cfwT
供驅動程序載入。1您很可能在樹中找不到此文件。1詳情見答案末尾
假設您有某種方式將您的盒子連接到網際網路:
嘗試執行
fw_update -v
以安裝韌體並確保文件位於正確的位置且未損壞。如果你很幸運,這就是你需要做的。如果失敗,您可以嘗試從軟體包或埠安裝韌體(首先閱讀此常見問題解答!)。我的本地鏡像沒有任何
urtwn
相關的包,所以你可能需要使用埠樹。按照常見問題解答中的說明設置埠樹,然後
make install
以 root 身份執行/usr/ports/sysutils/firmware/urtwn
。如果您無法將您的盒子連接到網際網路:
韌體可以手動從 下載
http://firmware.openbsd.org/firmware-dist/urtwn-1.1p0.tgz
。從那裡獲取它,將它放在 U 盤上,然後將其複製到您的 OpenBSD 盒子中。提取存檔並將文件移動urtwn-*
到/etc/firmware/
.如果這可行,最好在
fw_update -v
有網路連接後執行。這樣,系統維護腳本將在必要時監控和升級韌體。如果這一切都沒有幫助,您可能應該在郵件列表中詢問。如果您完成了家庭作業,那裡的人通常都很友好和樂於助人2。
2在misc@openbsd.org上多次提到該驅動程序。例如,有一些與 USB 相關的問題,請在發布之前檢查是否有任何與您看到的內容相關的內容。
添加:
我現在查看了原始碼,你可以得到這個錯誤消息的唯一方法是從函式
urtwn_load_firmware()
中sys/dev/usb/if_urtwn.c
,在行2194
:/* Read firmware image from the filesystem. */ if ((sc->chip & (URTWN_CHIP_UMC_A_CUT | URTWN_CHIP_92C)) == URTWN_CHIP_UMC_A_CUT) name = "urtwn-rtl8192cfwU"; else name = "urtwn-rtl8192cfwT"; if ((error = loadfirmware(name, &fw, &len)) != 0) { printf("%s: failed loadfirmware of file %s (error %d)\n", sc->sc_dev.dv_xname, name, error); return (error); }
函式
loadfirmware()
(insys/dev/firmload.c
) 生成路徑/etc/firmware/urtwn-rtl8192cfwT
並嘗試將該文件載入到 USB 適配器的記憶體中。由於它找不到該文件,因此您會收到您報告的錯誤消息。