如何禁用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

所以我们需要卸载这两个模块:

$ 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

参考

相关内容