LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 985|回复: 1

[解决] 为什么使用自己编译的内核后,无线网卡的频道数是11个,而不是13个?

[复制链接]
发表于 2009-2-23 09:56:20 | 显示全部楼层 |阅读模式
version: Lenny
自编译的内核: 2.6.28/2.6.28.6

无线网卡分别为
   wlan0        tp-link tl-wn210
   wlan2        tp-link tl-wn650g


1. 使用 lenny 自带的 2.6.26-1 , 执行:

      iwlist wlan0 channel
      或
      iwlist wlan2 channel

     都能显示有  13 个频道。

2. 如果使用自己编译的内核,执行上面的命令的话,只能显示出 11 个频道。


请问:
内核参数是不是有什么选项控制频道数目的?

我应该怎样做才可以让 自编译内核使用 13 个频道?

谢谢!
 楼主| 发表于 2009-2-25 13:16:19 | 显示全部楼层
折腾了快要半个星期,是linux 内核 自动识别每个国家无线频率管制有关。在没有进行配置的情况下,是按美国(US)标准来做默认识别(在 dmesg 输出的信息里找到 cfg80211有关的地方,可以看到是按美国标准初始化),所以只有11个频段。现在用这样方法解决:

推论结论来源:
http://wireless.kernel.org/en/developers/Regulatory
http://wireless.kernel.org/en/developers/Regulatory/CRDA
http://wireless.kernel.org/en/users/Documentation/iw

下载:
http://wireless.kernel.org/download/wireless-regdb/
http://wireless.kernel.org/download/iw/
http://wireless.kernel.org/download/crda/


安装:
先根据 推论来源里的 Build requirements,用 aptitude 安装齐那些必须的组件,
   aptitude install python-m2crypto libgcrypt11-dev libssl-dev libssl libnl1 libnl-dev pkg-config

然后将所下载的东西 tar 出来,依次进入下列软件所在目录:
  1. wireless-regdb
         make install
       这一步骤不需要执行 make

  2. crda
         make
         make install
       make 过程中会报错, 原因是Makefile 里面 regulatory.bin 的路径设置问题, 根据上面步骤 wireless-regdb 里的 Makefile 改成正确的 /usr/lib/crda/regulatory.bin 就行
       Makefile 里的 UDEV_RULE_DIR  变量 我也改成了 /etc/udev/rules.d/

  3. iw
         make
         make install
     debian原先所带的iw在 /sbin/iw, 新安装的 iw 位置在 /usr/bin/iw

后续配置:
1. crda 要让 udev 起作用的话,需要配置:
         # Example file, should be put in /etc/udev/rules.d/regulatory.rules
         KERNEL=="regulatory*", ACTION=="change", SUBSYSTEM=="platform", RUN+="/sbin/crda"

       在 http://wireless.kernel.org/en/developers/Regulatory/CRDA 的  Letting the kernel call CRDA  段有指出

      我发现这段在安装 crda 的时候又自动生成了一次


2. 如果要自己安装的 iw 起作用, 需要设置 COUNTRY 变量 :
      export COUNTRY=CN

   这个要求可以用 man crda 得出



我自己做了这样的测试:
     type iw
     执行 /usr/sbin/iw list 和 执行 /usr/bin/iw 所得的显示结果不一样, 暂时做这样的测试.


-----------------------------
暂时可以解决 13 个信道的问题了, 但觉得这样做不够 debian 化, 谁可有更好的办法?期待提供。

谢谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表