Broadcom

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

以后每次开机,就会启动加载无线网卡的驱动模块。

此外,可别忘记打开无线网卡的开关哦。

最后,本文参考了许多其他经验,如果以上方法没法解决各位同学的问题,不妨看看以下一些帖子能否帮到你。