Как отключить беспроводной адаптер диапазона 2,4 ГГц

Как отключить беспроводной адаптер диапазона 2,4 ГГц

Для отладки, возможно ли отключить 2.4Ghz для беспроводных подключений в Linux (Linux Mint 13 LTS, Cinnamon). То есть заставить сетевой драйвер устанавливать соединения, используя только диапазон 5Ghz? В идеале, я ищу какую-нибудь команду/параметр, которая не требует перекомпиляции ядра. Сетевая карта: Intel Corporation Centrino Ultimate-N 6300

Я попробовал установить:

sudo iwconfig wlan0 channel 40

где канал 40 находится в желаемом диапазоне 5 ГГц, но это работает только один раз. Как только соединение прерывается или когда я перемещаюсь от одной точки доступа к другой, мое сетевое соединение возвращается в диапазон 2,4 ГГц.

Пример:

  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,4 ГГц:

$ 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 ядра)

С появлением Linux Kernels 3.x все немного изменилось. Параметр ieee80211_disable_40mhz_24ghzбыл перемещен из mac80211модуля в cfg80211модуль. Поэтому все шаги остаются актуальными, за исключением того, что вам нужно будет заменить модуль, cfg80211в котором mac80211он использовался.

Какие параметры были загружены в модуль?

Команды, которая делает это напрямую, нет, но некоторые модули выставляют эту информацию в /sys/moduleфайловой системе. Например:

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

Рекомендации

Связанный контент