无线网卡不能上网,多半是因为没有正确安装无线网卡驱动。下面是解决无线网卡上网问题的方法(以Broadcom 802.11b/g无线网卡为例):
1.查看无线网卡
使用命令:lspci。当然你可以使用文本过滤进行筛选,否则使用该命令将显示很多内容,有可能超过一屏。
我的是博通的无线网卡,以下是我的无线网卡信息:
Network controller: Broadcom Corporation BCM4312 802.11b /g LP-PHY (rev 01) |
2. 登陆broadcom官网下载驱动
网址: http://www.broadcom.com/support/802.11/linux_sta.php
其他品牌型号的网卡请自行寻找下载相应的linux驱动
登陆之后会看到32位和64位的驱动程序,另外还有一个说明的文档,注意这个文档相当有用,里面讲述了安装流程及安装过程中出现问题的解决办法。安装过程以及安装过程中出现问题的解决都是参照此文本的。
3.查看无线网卡设备ID,基本上这一步是可选的,即使你的网卡不在支持的列表中,也是可以使用的。
命令:
lspci –n | grep 14e4 |
4.如若要编译无线网卡驱动,使其成为内核的一个模块,要有相应的工具(kernel developer),当没有相应的工具时候,编译驱动将会产生如下错误:
make: *** /lib/modules/”release”/build: No such file or directory. Stop.
我的系统是ubuntu,安装kernel developer的方法是:
apt-get inatall build-essential linux-headers-generic apt-get build-dep linux |
其实在ubuntu中,kernel developer是已经安装好的。
5.安装下载好的驱动程序。
可以选择驱动程序安装的位置。新建一个目录,并切换到相应的目录,将下载好的驱动程序拷贝至该目录进行安装。相应的操作比较简单。
编译操作:
#make clean(可选) #make |
执行过程如下(以下过程是自动进行的):
administrator @ubuntu: /usr/app/hybrid_wl $ sudo make clean KBUILD_NOPEDANTIC=1 make -C /lib/modules/ ` uname -r` /build M=` pwd ` clean make [1]: 正在进入目录 ` /usr/src/linux-headers-2 .6.38-8-generic' CFG80211 API is prefered for this kernel version /usr/app/hybrid_wl/Makefile :80: Neither CFG80211 nor Wireless Extension is enabled in kernel make [1]:正在离开目录 ` /usr/src/linux-headers-2 .6.38-8-generic' administrator @ubuntu: /usr/app/hybrid_wl $ sudo make KBUILD_NOPEDANTIC=1 make -C /lib/modules/ ` uname -r` /build M=` pwd ` make [1]: 正在进入目录 ` /usr/src/linux-headers-2 .6.38-8-generic' CFG80211 API is prefered for this kernel version Using CFG80211 API LD /usr/app/hybrid_wl/built-in .o CC [M] /usr/app/hybrid_wl/src/shared/linux_osl .o CC [M] /usr/app/hybrid_wl/src/wl/sys/wl_linux .o CC [M] /usr/app/hybrid_wl/src/wl/sys/wl_iw .o CC [M] /usr/app/hybrid_wl/src/wl/sys/wl_cfg80211 .o LD [M] /usr/app/hybrid_wl/wl .o Building modules, stage 2. CFG80211 API is prefered for this kernel version Using CFG80211 API MODPOST 1 modules WARNING: modpost: missing MODULE_LICENSE() in /usr/app/hybrid_wl/wl .o see include /linux/module .h for more information CC /usr/app/hybrid_wl/wl .mod.o LD [M] /usr/app/hybrid_wl/wl .ko make [1]:正在离开目录 ` /usr/src/linux-headers-2 .6.38-8-generic' |
成功之后将会生成wl.ko文件。
6.查找冲突模块并卸载屏蔽冲突模块,具体操作命令如下:
#查找冲突模块 #lsmod | grep "b43\|wl\|ssb\|bcma" b43 296610 0 mac80211 257001 1 b43 cfg80211 156212 2 b43,mac80211 ssb 45942 1 b43 #卸载冲突模块 # administrator @ubuntu:/usr/app/hybrid_wl$ sudo rmmod b43 [ sudo ] password for administrator: administrator @ubuntu: /usr/app/hybrid_wl $ sudo rmmod ssb #屏蔽冲突模块,阻止其在启动时被加载 administrator @ubuntu: /usr/app/hybrid_wl $ sudo echo "blacklist b43" >> /etc/modprobe .d /blacklist .conf bash : /etc/modprobe .d /blacklist .conf: 权限不够 administrator @ubuntu: /usr/app/hybrid_wl $ sudo su root @ubuntu: /usr/app/hybrid_wl # echo "blacklist b43">>/etc/modprobe.d/blacklist.conf root @ubuntu: /usr/app/hybrid_wl # echo "blacklist ssb">>/etc/modprobe.d/blacklist.conf |
注:最后几步操作不一定要在root模式下
7.将无线模块加入内核中
如果之前没有安装过无线驱动,需要加载安全模块
#加载安全模块 root @ubuntu: /usr/app/hybrid_wl # modprobe lib80211 root @ubuntu: /usr/app/hybrid_wl # modprobe cfg80211 root @ubuntu: /usr/app/hybrid_wl # insmod wl.ko |
注:该步操作不一定要在root模式下,通过tab键可以讲命令补充完整(如果在正确的模式下)
8.让无线模块开机自启动
administrator @ubuntu: /usr/app/hybrid_wl $ sudo cp wl.ko /lib/modules/ ` uname -r` /kernel /drivers/net/ wireless/ administrator @ubuntu: /usr/app/hybrid_wl $ depmod -a FATAL: Could not open /lib/modules/2 .6.38-8-generic /modules .dep.temp for writing: Permission denied administrator @ubuntu: /usr/app/hybrid_wl $ sudo depmod -a |
9.当出现如下信息时,表明已安装成功。此时,就可以搜寻到无线网络
administrator @ubuntu: /usr/app/hybrid_wl $ lsmod | grep "b43\|wl\|ssb\|bcma" wl 2465136 0 cfg80211 156212 1 wl lib80211 14570 2 lib80211_crypt_tkip,wl |
当看不到以上第二行信息时,在步骤5后加上“sudo make API=CFG80211”
可以使用iwconfig查看无线网络的相关信息,以下是我的信息:
administrator @ubuntu:~$ iwconfig lo no wireless extensions. eth0 no wireless extensions. eth1 IEEE 802.11abg ESSID: "NWPU-WLan" Mode:Managed Frequency:2.412 GHz Access Point: 06:1B:B1:21:83:B7 Retry long limit:7 RTS thr:off Fragment thr:off Power Management:on |
注:无线网卡并不是都是显示为eth1
附注:安装过程中的注意事项以及相应问题的解决办法:
1.在将无线模块加入内核时(insmod),也许会出现以下警告:
WARNING:modpost:missing MODULE_LICENSE() |
解决:忽略该警告
2.如果看到这样的信息:
insmod: error inserting ‘wl.ko’: -l Unknown symbol in module |
这往往是缺少相应的模块,加载相应的模块,问题就可解决,解决办法如下:
#modprobe lib80211 or ieee80211_crypt_tkip(根据自己的系统选择) #modprobe cfg80211 |
3.如果无线驱动被加载,但是不起作用,这多半是由ssb模块引起的,有时候将ssb拉黑(将其加入blacklist)并不能完全阻止其在系统启动时不启动(这种情况在Ubuntn/Debian系统上最为常见)。解决办法如下:
检查是否ssb、bcma、wl或者b43被加载
#lsmod | grep "b43\|ssb\|bcma\|wl" |
如果被安装,将其删除:
#rmmod ssb #rmmod bcma #rmmod wl #insmod wl |
配置好后能连网,但重启后又需要重新配置的情况,请编辑/etc/rc.local文件
#rmmod ssb #ssb经常顽固启动 #modprobe wl #modprobe lib80211 #modprobe cfg80211 #insmod /lib/modules/`uname -r`/kernel/drivers/net/wireless/wl.ko exit 0 #以上配置一定要放在exit 0 的上边 |
注:详解请参照官网的安装文档