如何停用2.4Ghz頻段無線適配器

如何停用2.4Ghz頻段無線適配器

出於調試目的,是否可以在 Linux(Linux Mint 13 LTS、Cinnamon)上停用 2.4Ghz 無線連線。即強制網路驅動程式僅使用 5Ghz 頻段建立連線?理想情況下,我正在尋找一些不需要重新編譯核心的命令/參數。網路卡:Intel公司迅馳Ultimate-N 6300

我嘗試設定:

sudo iwconfig wlan0 channel 40

其中通道 40 在所需的 5Ghz 範圍內,但這只能工作一次。一旦連線終止或當我從一個存取點漫遊到另一個存取點時,我的網路連線就會回落到 2.4 Ghz 範圍。

例子:

  1. Sep  9 18:19:39 wpa_supplicant[1230]: Trying to authenticate with     
     00:1a:1e:88:3b:b1 (SSID='<hidden>' freq=5180 MHz)
     ---Connection is established correctly.
    
  2. Sep  9 18:19:45 NetworkManager[908]: <info> (wlan0): roamed from
       BSSID 00:1A:1E:8A:5B:41 (<hidden>) to 00:1A:1E:88:3B:B1 (<hidden>)
    Sep  9 18:20:16 wpa_supplicant[1230]: Trying to authenticate with
       00:1a:1e:88:3b:a1 (SSID='<hidden>' freq=2412 MHz)
    ---New connection is being established using the wrong frequency.
    

答案1

我相信你可以直接透過核心模組來做到這一點。大多數核心模組都可以採用參數,您可以在載入驅動程式時傳入這些參數,也可以在啟動期間透過設定檔載入它們。

範例(2.6 核心)

我有一個帶有以下無線驅動程式的 Fedora 14 系統。

$ lsmod |grep iw
iwlagn                209751  0 
iwlcore               195714  1 iwlagn
mac80211              229095  2 iwlagn,iwlcore
cfg80211              134981  3 iwlagn,iwlcore,mac80211

我們感興趣的模組就是這個mac80211,以下是有關它的更多資訊:

$ modinfo mac80211
filename:       /lib/modules/2.6.35.14-106.fc14.x86_64/kernel/net/mac80211/mac80211.ko
license:        GPL
description:    IEEE 802.11 subsystem
srcversion:     8D64C9A86E6BE7B4C1AF862
depends:        cfg80211
vermagic:       2.6.35.14-106.fc14.x86_64 SMP mod_unload 
parm:           ieee80211_default_rc_algo:Default rate control algorithm for mac80211 to use (charp)
parm:           ieee80211_disable_40mhz_24ghz:Disable 40MHz support in the 2.4GHz band (bool)

您也可以使用-p開關來取得模組參數:

$ modinfo -p mac80211
ieee80211_disable_40mhz_24ghz:Disable 40MHz support in the 2.4GHz band
ieee80211_default_rc_algo:Default rate control algorithm for mac80211 to use

如果您注意到底部指定的部分parm:,則這些是您可以傳遞到此模組以更改其配置方式的參數。您感興趣的選項是:ieee80211_disable_40mhz_24ghz。您可以使用以下命令加載它以禁用它:

$ sudo modprobe mac80211 ieee80211_disable_40mhz_24ghz=1

卸載和加載模組

為了達到可以執行此操作的程度,您需要卸載依賴該模組的其他模組。可以在lsmod上面的輸出中看到依賴列表,主要是:

mac80211              229095  2 iwlagn,iwlcore

所以我們需要卸載這2個模組:

$ sudo rmmod iwlagn
$ sudo rmmod iwlcore

現在我們可以卸載mac80211:

$ sudo rmmod mac80211

現在我們可以使用參數重新加載它以禁用 2.4GHz 功能:

$ sudo modprobe mac80211 ieee80211_disable_40mhz_24ghz=1

現在我們可以重新載入其他 2 個模組:

$ sudo modprobe iwlagn

對於堆疊中最高的驅動程式來說這已經足夠了just modprobe,核心將負責重新載入它所依賴的任何其他模組。

$ lsmod | grep iw
iwlagn                209751  0 
iwlcore               195714  1 iwlagn
mac80211              229095  2 iwlagn,iwlcore
cfg80211              134981  3 iwlagn,iwlcore,mac80211

範例(3.x 核心)

隨著 3.x Linux 核心的出現,情況略有變化。參數ieee80211_disable_40mhz_24ghz已從mac80211模組移至cfg80211模組。因此,所有步驟仍然相關,除非您需要在使用的cfg80211模組中進行替換。mac80211

模組加載了哪些參數?

沒有命令可以直接執行此操作,但某些模組會在/sys/module檔案系統中公開此資訊。例如:

$ cat /sys/module/mac80211/parameters/ieee80211_disable_40mhz_24ghz 
Y

參考

相關內容