勤&快

问题其实就是你期望的东西和你体验的东西之间的差别
随笔 - 55, 文章 - 0, 评论 - 68, 引用 - 0
数据加载中……

如何在ubuntu下使用intel 3945abg无线网卡

这个方案在升级到内核"2.6.24-20"之后不可用,不知道为何。搞定的朋友可以将方案贴出来分享,谢谢。
查阅了很多方法,包括对内核打补丁,都不是很理想。其实iwl3945对于其他intel 3945的芯片的支持还是挺好的,比如dell d630中的无线网卡(芯片是8086:4222),但是,我的x60中的无限网卡,芯片是8086:4227的。最终选择使用ndiswrapper+无线网卡驱动for windows。参见这里
如何查看无限网卡芯片:
lspci

找到表示无限网卡的一行,看看最开头,就是你的网卡信息。
比如:
03:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)
那么,03:00.0就是所求。

然后运行
lspci -n

找到和刚此型号对应的行,如:
03:00.0 0280: 8086:4227 (rev 02)
那么,无线网卡的芯片就是8086:4227的。

-----------------------------------------------------我是分割线----------------------------------------------------------

警告:本教程存在一定的风险,请谨慎使用,使用前请将相关文件备份。因为使用本教程带来的任何损失,本人概不负责。
本文中用到的所有文件,都可以在这里一次性下载。
自从升级到ubuntu 8.04之后,自己的ibm x60上的无线网卡就变的很不稳定。

症状

具体症状如下:
1. 可以识别无线网络,可以链接到无线网络。
2. 刚连接上之后一段时间,速度还不错。
3. 过一段时间,网络就变的很慢很慢,有时候是没有速度,有时候会断线。
4. 期间偶尔会变好。
总体来说,就是无线网卡不稳定。
于是很无奈的,我的笔记本只能天天插着网线上网了。

解决方案

最近终于不能忍了,在网上搜索了一下解决方案。是因为ubuntu 8.04使用intel新开发的驱动iwlwifi(驱动名称是iwl3945)作为intel无线网卡的驱动,而这个iwlwifi还很不稳定。所以,基本思想是使用原来的很稳定的ipw3945驱动替换现在的iwl3945驱动。ipw3945现在已经停止开发了,最新版本是1.2.2,但是1.2.2在linux内核2.6.24或者更高版本中不能正常安装。幸好[3]中提供了一个可用的补丁,才可以解决问题。[3]中还强烈谴责了这种新版本驱动还没有开发稳定就停止对于旧驱动的开发的行为,认为这是对用户极大的不负责任。
使用命令
lshw -C network
查看自己的网卡驱动。
下面详细介绍一下替换驱动的步骤。主要参考[1]

具体步骤

1. 阻止原有驱动的加载
为了使用新驱动,我们需要屏蔽掉原有驱动。编辑/etc/modprobe.d/blacklist
sudo vim /etc/modprobe.d/blacklist
在blacklist文件中加入
# blacklist new iwl3945
blacklist iwl3945
2. 安装ipw3945 microcode
下载ipw3945 microcode,下载地址
解压缩之后,将得到的ipw3945.ucode文件,拷贝到/lib/firmware/2.6.24-19-generic/下。
注意,我这里的内核版本是2.6.24-19,请根据自己的情况,将这个数字替换为当前内核版本号。可以使用“uname -r”命令查看当前内核版本。
sudo cp ipw3945.ucode /lib/firmware/2.6.24-19-generic/
3. 安装ipw3945 Regulatory daemon
下载ipw3945 Regulatory daemon,下载地址
解压缩后,将x86(如果是64位机器,则是x86_64)下的ipw3945d拷贝到/sbin目录下。
cp x86/ipw3945d /sbin
为了让ipw3945d工作,需要进行一些操作,这些操作已经写在了两个文件中,分别是ipw3945d-start和ipw3945d-stop中。我们需要将这些文件拷贝到/sbin下,执行如下命令:
sudo cp ipw3945d-{start,stop} /sbin
sudo chmod a
+/sbin/ipw3945d-{start,stop}
更详细的说明,请参考README.ipw3945d
4. 安装ieee80211
一般在内核中都有,特别是ubuntu安装的内核中。所以我就不需要安装。如果你内核中没有ieee80211,需要安装。请参考http://ieee80211.sf.net/。一般ubuntu用户都可以跳过这个步骤。
5. 下载ipw3945 1.2.2
下载地址,要下载1.2.2版本。如果链接不能下载,可以在本文的附件中下载。得到ipw3945-1.2.2.tgz
6. 下载ipw3945补丁
下载地址。这个是一个文本文件,请直接点击右键另存为。得到ipw3945-1.2.2.patch文件。
7. 打补丁
解压缩ipw3945-1.2.2.tgz文件,将ipw3945-1.2.2.patch文件拷贝到ipw3945-1.2.2.tgz解压缩后的目录下,运行patch命令
patch -p1 < ipw3945-1.2.2.patch
提示输入文件名的时候,输入ipw3945.h
8. 安装ipw3945
ipw3945-1.2.2.tgz解压缩后的目录下,运行intall命令
make
sudo make install
sudo chmod 777 /sbin/ipw*
9. 将ipw3945加入内核启动加载模块
新建文件 /etc/modprobe.d/ipw3945
sudo vim /etc/modprobe.d/ipw3945
并且在文件中添加
install ipw3945 /sbin/modprobe -i ipw3945 ; sleep 0.5 ; /sbin/ipw3945d --quiet
remove ipw3945 
/sbin/ipw3945d --kill ; /sbin/modprobe --i ipw3945
载入模块
sudo modprobe ipw3945
10. 重启电脑
重启之后,就可以正常使用无线网络了。

参考文档

[1] http://www.ubuntugeek.com/using-ipw3945-instead-iwl3945-in-hardy.html
[2] http://ipw3945.sourceforge.net/
[3] http://james.colannino.org/downloads.html

posted on 2008-07-09 14:21 daning 阅读(8041) 评论(12)  编辑  收藏 所属分类: ubuntu

评论

# re: 如何在ubuntu下使用intel 3945abg无线网卡  回复  更多评论   

# blacklist new iwl3945
blacklist iwl3945

还是
# blacklist new iwl3945
blacklist iwl3945
blacklist mac8021

2. Reboot
3. Download ipw3945 microcode

2是否必要?

抄袭也要抄全了啊。

我就是编译失败,而且要ieee80211,虽然是ubuntu
2008-08-04 09:41 | 冲浪板

# re: 如何在ubuntu下使用intel 3945abg无线网卡  回复  更多评论   

To 冲浪板:
1. 没有必要屏蔽mac8021,我屏蔽mac8021之后,就不能检测到无线网络了。
2. 不需要重启。最后重启就可以。
3. 我参考了一些英文资料,自己总结翻译了一下,而且都注明了出处,不算抄袭吧。

个人情况不一样,我只是给出自己的经验,分享一下。按照我的方法,你如果没有成功,只能说明我们的情况不一样。你可以自己再搜寻一下答案,把你的经验分享一下。或者把你具体的配置环境列出来,大家共同参考一下,比如你是哪个版本内核,哪个版本ubuntu等等。不需要出言如此无理吧。
2008-08-04 15:41 | daning

# re: 如何在ubuntu下使用intel 3945abg无线网卡  回复  更多评论   

说抄袭严重了一点:-p
说是在的,英文的比较严谨,如
4. Download ipw3945 regulatory daemon from here and copy it into /sbin/
(copy the file within folder x86 to /sbin/ too)

我的是8.04.1,没编译ieee8021的话不成啊,可是这个ieee8021编译也是出错,错误和某些人的贴一样,可是没见解决办法。
ieee8021出错,ipw3945就更了。

有人说连接一个2.6.24-17的就ok,可是2.6.24-17的哪来

livecd装的是不是没编译环境啊,编译驱动模块,比编译一般软件要求多吧,起码头文件....

冒险用这个,以后升级,就麻烦了吧。
2008-08-04 22:26 | 冲浪板

# re: 如何在ubuntu下使用intel 3945abg无线网卡  回复  更多评论   

7. 打补丁
解压缩ipw3945-1.2.2.tgz文件,将ipw3945-1.2.2.patch文件拷贝到ipw3945-1.2.2.tgz解压缩后的目录下,运行patch命令


若能说为什么要这个,就比较能让人记录住;万一ta怕麻烦没做这步骤,不麻烦咯。
2008-08-04 22:30 | 冲浪板

# re: 如何在ubuntu下使用intel 3945abg无线网卡  回复  更多评论   

看来我永远也编译不成了,因为不用,这样就ok
sudo rmmod -f iwl3945
sudo modprobe iwl3945 disable_hw_scan=1
sudo iwlist wlan0 scan
2008-08-04 23:37 | 冲浪板

# re: 如何在ubuntu下使用intel 3945abg无线网卡  回复  更多评论   

我也想解决这个问题..但一直没成功,有空方便交流一下吗?
我很仔细看过你的教程了..但还是不成功..
如果如果可以的话给我发E-MAIL aiches@qq.com
2008-09-20 02:05 | aiches

# re: 如何在ubuntu下使用intel 3945abg无线网卡  回复  更多评论   

完全可以在2.6.24-20以后的Kernel中采用这个驱动,主要是编译的时候注意加两个参数:
SHELL='/bin/bash' IEEE80211_IGNORE_DUPLICATE=y

一个是用bash的shell,一个是忽略80211检查,我是ubuntu 8.04,升级到2.6.24-21完全米问题。
2008-09-21 18:15 | kouga

# re: 如何在ubuntu下使用intel 3945abg无线网卡[未登录]  回复  更多评论   

我在第8个步骤中编译的时候出错了。不知道怎么办。
WARNING: Your kernel contains ieee80211 symbol definitions and you
are not using the kernel's default ieee80211 subsystem.
2008-09-27 10:45 | chris

# re: 如何在ubuntu下使用intel 3945abg无线网卡  回复  更多评论   

我的内核是2.6.24-21-generic,使用正常
2008-09-29 12:26 | jfo

# re: 如何在ubuntu下使用intel 3945abg无线网卡[未登录]  回复  更多评论   

在进行到第8步,make之后,提示有错误。请问如何解决?

Makefile:53:
Makefile:54: WARNING: $SHELL not set to bash.
Makefile:55: If you experience build errors, try
Makefile:56: 'make SHELL=/bin/bash'.
Makefile:57:
/bin/sh: Syntax error: "(" unexpected
/bin/sh: Syntax error: "(" unexpected
-e
WARNING: Your kernel contains ieee80211 symbol definitions and you
are not using the kernel's default ieee80211 subsystem. (Perhaps you
used the out-of-tree ieee80211 subsystem's 'make install' or have
provided a path to the ieee80211 subsystem via IEEE80211_INC.)

If you wish to use the out-of-tree ieee80211 subsystem then it is
recommended to use that projects' "make patch_kernel" facility
and rebuild your kernel to update the Module symbol version information.

Failure to do this may result in build warnings and unexpected
behavior when running modules which rely on the ieee80211 subsystem.


-e Aborting the build. You can force the build to continue by adding:

IEEE80211_IGNORE_DUPLICATE=y

to your make command line.


make: *** [check_inc] 错误 1
2008-10-02 23:26 | Jesse

# re: 如何在ubuntu下使用intel 3945abg无线网卡[未登录]  回复  更多评论   

@Jesse

不好意思,
如kouga所说,
加入SHELL='/bin/bash' IEEE80211_IGNORE_DUPLICATE=y 参数

完整的命令为:
make SHELL='/bin/bash' IEEE80211_IGNORE_DUPLICATE=y
2008-10-05 22:45 | daning

# re: 如何在ubuntu下使用intel 3945abg无线网卡  回复  更多评论   

修改(没有就新建一个)/etc/modprobe.conf
添加内容
#/etc/modprobe.conf: Configuration file/directory for modprobe
options iwl3945 disable_hw_scan=1

redhat上有人这们弄,我觉得ubuntu应该也可以。
2008-11-16 08:38 | shuaikun

只有注册用户登录后才能发表评论。


网站导航: