Windows 7开启Update后,给硬件找驱动很给力,除了部分老硬件外,基本不需要自己操心驱动的问题。而在Ubuntu下某些时候就难说了,尤其是遇到一些新硬件。
某的Dell笔电在无线网卡方面与Studio15系列的中配系列不同,下面2个型号均使用Intel的解决方案,Dell给高配机似乎都使用所谓Dell Wireless-N 1520的网卡。这款网卡实际采用的是Broadcom BCM43xx系列芯片的解决方案。安装完Ubuntu后提示有找到驱动;问题在于只有第一次安装完驱动后可以正常连接到无线router(采用WPA2的加密方式),之后每次连接都失败。查阅了网上一些资料后,尝试了更换连接程序等等均无果;最后在ubuntu.org上找到老外说是源里提供的BCM驱动对于BCM4322的芯片支持不好,需要用Broadcom最新的STA Linux驱动才行。
之后在找到官方文档里翻阅到,Dell Wireless-N 1520的芯片就是官方的BCM43224,最新的驱动已经可以支持。
下面是来自官方readme的解决思路
编译
在Broadcom的官方Linux_STA驱动页下载对应的最新源码。解压至任意目录
配置编译源码所需的环境
sudo apt-get install build-essential linux-headers-generic sudo apt-get build-dep linux
顺便检查一下路径是否存在
ls /lib/modules/`uname -r`/build
将驱动编译为LKM,cd到源码所在目录
make clean (此步可选) make
之后应该在该目录下生成一个wl.ko文件。
安装驱动
升级安装
如果原来安装过wl的驱动,需要先卸载后再加载新的驱动模块。
原来安装源里驱动的野可以先卸载后按照全新安装来。
sudo rmmod wl
之后把原来的wl.ko删除,再刷新模块。
sudo depmod
modprobe wl
全新安装
需要确保没有加载其他无线驱动。
sudo lsmod | grep "b43|ssb|wl"
如果上面命令有结果输出,那么需要把对应的驱动模块删除。
sudo rmmod b43 sudo rmmod ssb sudo rmmod wl
如果原来有加载过,还可能需要把它们加入黑名单屏蔽。
sudo echo "blacklist ssb" >> /etc/modprobe.d/blacklist.conf sudo echo "blacklist b43" >> /etc/modprobe.d/blacklist.conf
添加驱动模块,在添加前要设置安装模块,根据不同环境可能是
modprobe lib80211
或者
modprobe ieee80211_crypt_tkip
之后添加模块
sudo insmod wl.ko
其他问题
编译时出错
如果提示WARNING: modpost: missing MODULE_LICENSE()
,可以无视
如果提示insmod: error inserting 'wl.ko': -1 Unknown symbol in module
,那么在添加模块前,忘记加载安全模块,方法见上面。
开机自动加载无线驱动模块
每次重启后,刚才加载的模块就消失了,需要在开机时自动加载,需要设置一番。
严格,来说wl.ko放哪里都无所谓,方便其间,这里就放核心驱动里,并刷新模块列表。
sudo cp wl.ko /lib/modules/`uname -r`/wlan/wl.ko
depmod -a
注意这里”uname -r”就代表是kernel的版本号
在/etc/modules中最后一行添加
wl
在/etc/rc.local最后行exit 0 前面添加
sudo insmod /lib/modules/`uname -r`/wlan/wl.ko
以后每次开机,就会启动加载无线网卡的驱动模块。
此外,可别忘记打开无线网卡的开关哦。
最后,本文参考了许多其他经验,如果以上方法没法解决各位同学的问题,不妨看看以下一些帖子能否帮到你。