
Для отладки, возможно ли отключить 2.4Ghz для беспроводных подключений в Linux (Linux Mint 13 LTS, Cinnamon). То есть заставить сетевой драйвер устанавливать соединения, используя только диапазон 5Ghz? В идеале, я ищу какую-нибудь команду/параметр, которая не требует перекомпиляции ядра. Сетевая карта: Intel Corporation Centrino Ultimate-N 6300
Я попробовал установить:
sudo iwconfig wlan0 channel 40
где канал 40 находится в желаемом диапазоне 5 ГГц, но это работает только один раз. Как только соединение прерывается или когда я перемещаюсь от одной точки доступа к другой, мое сетевое соединение возвращается в диапазон 2,4 ГГц.
Пример:
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.
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