Thinkpad T61 无法检测到路由器

缘起

我的笔记本电脑(Thinkpad T61 )的无线连接总是感觉有点古怪,经常会在无线网络中找不到自家的那台贝尔金路由器,但是却能搜出一堆邻居的路由器,而同时家里的其他电脑访问贝尔金路由器又毫无问题。这应该说明贝尔金路由器的工作是正常的,可是在找不到原因的情况下重启几次路由器,Thinkpad T61又突然能找到这台路由器了。最近被它折腾的超烦,路由器重启了N遍,这边的笔记本就是检测不到。忍无可忍,决定彻底的查查原因。试了几次之后发现当我把路由器的频段(Channel)设置从 自动 改为11及以下的设置后,笔记本电脑总能检测到路由器。问题是终于解决了,可是不能使用路由器上的自动频段选择有点不爽,因为路由器的自动频段选择可以避开繁忙的频段而使用周围环境中较少使用的频段,这样无线信号的干扰就会少一点。而且T61无法使用11以上的频段的原因也没有找到。于是戟起google大法,一通搜索之后终于让我的好奇心得到了满足。

排错过程

我的笔记本上装的是Ubuntu9.10,所以下面的命令都仅适用于Linux。

下面的这个简单的命令实际上一招就能展示我反复试验得出的结论: 就是T61上无法访问11以上的频段,只是不幸的是俺是后来才知道的:

iwlist f

这条命令的结果是显示本机无线可连接的所有频段。在我的电脑上不存在12,13,14这些我的G带宽贝尔金路由器所支持的频段。另外还有一些更高的频段是适用于N带宽路由器的,这里不做讨论。通过搜索了解到,Wifi的IEEE802.11的规范中有regdomain这样的地域规范,就是不同地区所能使用的频段数是不同的。对于G带宽来说美国支持1到11, 欧洲多了12, 13, 而亚洲则另外可以使用14. 所以考虑是不是我的笔记本电脑的无线网卡驱动默认了美国的规范,看能不能改成欧洲或亚洲的。网上介绍了N种办法,因为我的Ubuntu9.10 使用CRDA程序来向内核模块通知domain regulatory的信息(即,地域设置规范),最简单的方法就是:

sudo aptitude install iw

安装iw 无线网管理程序,然后在 /etc/rc.local 中添加一行如下代码,并重启电脑:

iw reg set CN

就是把地域设置为中国。遗憾的是重启电脑后, iwlist f 仍然没有看到久违的12,13,14频段。

lspci

列出了T61使用的是intel 4965 AGN无线模组。再根据该型号来查,原来这个无线模组可能在硬件中设置了美国区,也就是只能使用1到11的频段。至此,我的调查算基本完成,虽然调查并没有为我提供更好的方案,但总算是头绪清爽了,也或许对其他朋友有帮助。另外,对胆大妄为的兄弟可以提供一个进一步的调查方向,就是无线模组的regdomain是纪录在eeprom里的,是可以被擦写修改的,有兄弟饭吃多了,可以往这个方向上再努把力。

Leave a Response