Networking

全功能 WLAN USB 適配器

  • June 27, 2013

我正在尋找一個 WLAN USB 適配器,它可以用作接入點,也可以用作客戶端和 AdHoc 設置。它應該支持 IEEE 802.11n 並且傳輸速度相當快(300Mbps)。

當我為我的機器編譯自定義核心時,驅動程序應該作為目前核心的一部分(在撰寫本文時為 3.7.1),並且不需要在外部建構。如果可能的話,我什至想避免安裝外部韌體。驅動程序和硬體應支持省電模式。

目前,我正在使用 AVM Fritz Wlan Stick N,它幾乎具有所有功能,但在負載下每隔幾分鐘就會崩潰並且必須重新啟動。所以穩定性也是一個要求。

有這麼神奇的裝置嗎?

與此同時,我購買並測試了一些設備。我的選擇深受@Renat 建議的列表的啟發。在這裡,我匯總了我的發現。

AVM弗里茨

AVM Fritz Wlan Stick N的小型型號僅支持 2.4 GHz,而大型型號則支持 2.4 和 5 GHz 的多頻段。兩者都依賴於carl9170驅動模組。作為客戶,他們都是一場災難。他們經常崩潰。核心會在不到一秒的時間內重新啟動它們,但重新連接是必要且耗時的。實時連接是不可能的,更不用說像 SSH 這樣的東西了。此外,問題似乎在累積。我用棍子的時間越長,他們崩潰的頻率就越高,導致棍子最多只能工作幾分鐘。調整模組參數nohwcryptnoht以減少設備硬體上的負載僅導致臨時修改。

然而,在 AP 模式下測試多頻段,它執行良好。影片流和 sftp 文件傳輸以 300 MBit/s 的速度執行。

使用 TP-Link,我又可以在TL-WDN3200雙頻變體和僅 2.4 GHz的TL-WN821N之間進行選擇。第一個需要編譯樹外驅動,所以我立即跳到單波段模型。TL-WN821N 使用ath9k_htclinux核心中包含的模組。甚至比 Fritz 型號的傳輸速度和連接質量略高,在兩層樓和一些牆壁上進行了測試。它的崩潰也比這些少得多,每天只有幾次。但是當它這樣做時,它會通過凍結大部分網路子系統來補償其性能。每個嘗試訪問網路設備的系統呼叫(包括許多 IPC 解決方案所依賴的環回)都會停止並且不會返回,直到設備被拔出或核心模組被移除。我把它捐贈給了一些 Windows 使用者,從那以後它就作為客戶端工作了。

水牛

最後,我試用了Buffalo WLI-UC-G300HP。雖然它也標有 300 MBit/s,但它的執行速度比前面提到的要慢一些。一些牆壁和地板的連接質量仍然很好,特別是在使用它的小可調天線時,當空間緊張時,它也可以完全關閉。我已經使用了幾個月了,非常滿意。

它唯一的缺陷是沒有驅動程序自動感覺對這個設備負責。事實上,它可以與經過充分測試的rt2800usb模組一起使用。有兩種方法可以將這一點傳授給核心。

在執行時

作為根問題

modprobe rt2800usb
echo 0411 01a8 > /sys/bus/usb/drivers/rt2800usb/new_id

第一行插入模組。第二個將設備和產品 ID 告訴驅動程序。這些數字可以通過 找到lsusb,但應該是為 WLI-UC-G300HP 提供的數字。然後,驅動程序接受模組的命令。這可以通過 udev 規則持久化。我,就我而言,選擇另一種方法

編譯核心

無論如何,當您自己建構核心時,您可以簡單地應用以下更新檔。

diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index 098613e..2ded919 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -953,6 +953,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
       { USB_DEVICE(0x0411, 0x016f) },
       { USB_DEVICE(0x0411, 0x01a2) },
       { USB_DEVICE(0x0411, 0x01ee) },
+       { USB_DEVICE(0x0411, 0x01a8) },
       /* Corega */
       { USB_DEVICE(0x07aa, 0x002f) },
       { USB_DEVICE(0x07aa, 0x003c) },

它將 id 添加到模組的內部數據庫中,以便從本質上激勵管理設備。

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