디버깅 목적으로 Linux(Linux Mint 13 LTS, Cinnamon)에서 2.4Ghz 무선 연결을 비활성화할 수 있습니까? 즉, 네트워크 드라이버가 연결을 설정하기 위해 5Ghz 대역만 사용하도록 강제합니까? 이상적으로는 커널을 다시 컴파일할 필요가 없는 일부 명령/인수를 찾고 있습니다. 네트워크 카드: Intel Centrino Ultimate-N 6300
나는 다음을 설정하려고 한다:
sudo iwconfig wlan0 channel 40
채널 40이 필요한 5Ghz 범위 내에 있지만 이는 한 번만 작동합니다. 연결이 종료되거나 한 액세스 포인트에서 다른 액세스 포인트로 로밍하면 네트워크 연결이 2.4Ghz 범위로 돌아갑니다.
예:
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
따라서 다음 두 모듈을 제거해야 합니다.
$ 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