挣扎了许久,总算能够正常上无线网了。现在想想,操作系统的基础是如此的重要。
比较简单的方法:ubuntu apt source的bcmwl-kernel-source
安装方法如下:
sudo apt-get update sudo apt-get install bcmwl-kernel-source
驱动加入黑名单,让系统记住
sudo vi /etc/modprobe.d/blacklist.conf
末尾加入以下语句:
blacklist b43 blacklist ssb blacklist brcmsmac
复杂方法:
PC公司驱动下载网站上都只支持Windows XX版本的驱动。安装linux操作系统的驱动必须要到相应的硬件厂商网站上才能下载、安装。
首先也必须得了解一下自己电脑的硬件配置:
lspci
找到Network controller一项。找到对应的无线网卡硬件商公司及产品型号。
(Network controller为无线网卡项,Ethernet controller为以太网网卡项)
以下内容暂时没有进行尝试,做为摘抄:
进入broadcom的官网:http://www.broadcom.com/support/802.11/linux_sta.php 下载相应的驱动包。
首先针对自己的OS是32bit还是64bit下载对应的驱动,下载好后开始解压准备编译:
mkdir bcm43xx_x86_64-v5_100_82_112 tar xzvf hybrid-portsrc_x86_64-v5_100_82_112.tar.gz -C bcm43xx_x86_64-v5_100_82_112 cd bcm43xx_x86_64-v5_100_82_112 make
出现以下错误:
Using Wireless Extension API LD /home/ego/Drivers/bcm43xx_x86_64-v5_100_82_112/built-in.o CC [M] /home/ego/Drivers/bcm43xx_x86_64-v5_100_82_112/src/shared/linux_osl.o CC [M] /home/ego/Drivers/bcm43xx_x86_64-v5_100_82_112/src/wl/sys/wl_linux.o /home/ego/Drivers/bcm43xx_x86_64-v5_100_82_112/src/wl/sys/wl_linux.c:388:2: error: unknown field ‘ndo_set_multicast_list’ specified in initializer /home/ego/Drivers/bcm43xx_x86_64-v5_100_82_112/src/wl/sys/wl_linux.c:388:2: warning: initialization from incompatible pointer type [enabled by default] /home/ego/Drivers/bcm43xx_x86_64-v5_100_82_112/src/wl/sys/wl_linux.c:388:2: warning: (near initialization for ‘wl_netdev_ops.ndo_validate_addr’) [enabled by default] make[2]: *** [/home/ego/Drivers/bcm43xx_x86_64-v5_100_82_112/src/wl/sys/wl_linux.o] Error 1 make[1]: *** [_module_/home/ego/Drivers/bcm43xx_x86_64-v5_100_82_112] Error 2 make[1]: Leaving directory `/usr/src/linux-headers-3.2.0-26-generic' make: *** [all] Error 2
关键是src/wl/sys/wl_linux.c的388行
vi src/wl/sys/wl_linux.c +388
代码如下:
.ndo_set_multicast_list = wl_set_multicast_list,
查看内核源码struct net_device_ops的确没有这个接口了。
看了一下bcmwl-kernel-source的patch,它使用的是.ndo_set_rx_mode替换的,那我们也用这个替换:
vi src/wl/sys/wl_linux.c +388
将源文件改为以下:
#if 0 .ndo_set_multicast_list = wl_set_multicast_list, #else .ndo_set_rx_mode = wl_set_multicast_list, #endif
修改好后保存,继续编译:
make
这次编译顺利通过,生成了wl.ko。
sudo make install sudo rmmod brcmsmac sudo rmmod brcmutil sudo depmod sudo modprobe wl sudo ifconfig eth1 up
无线网卡正常运行,信号明显要比bcmwl-kernel-source要好一些。
禁用内核驱动:
sudo vi /etc/modprobe.d/blacklist.conf
末尾加入以下语句:
blacklist b43 blacklist ssb blacklist brcmsmac
保存文件后,重启。
问题出来了,wl加载了,但是竟然不能正常驱动无线网卡,为什么重启之前可用呢,复现重启之前的环境:
sudo rmmod wl sudo modprobe brcmsmac sudo rmmod brcmsmac sudo rmmod brcmutil sudo modprobe wl
神奇,居然又工作了,看来还要依赖brcmsmac才行,不完美,继续折腾!
方法1:
修改启动脚本:
sudo vi /etc/init.d/rc
在文本末尾炸到exit 0关键字后,按照如下修改:
rmmod wl modprobe brcmsmac rmmod brcmsmac rmmod brcmutil modprobe wl trap - EXIT # Disable emergency handler exit 0
保存,重启,ok,驱动正常,但是启动过程中,本子的无线指示灯会出现1秒的循环闪烁,还不是最优解,继续折腾!
方法2:
既然bcmwl-kernel-source可以不依赖brcmsmac直接驱动设备,那么为什么自己编译的不行呢。
继续分析他的deb,没有发现任何不一样,只是他的驱动安装路径不同,难道这也有差,继续偷懒:
sudo apt-get install bcmwl-kernel-source
然后将咱们编译的wl.ko替换掉bcmwl-kernel-source的:
sudo mv /lib/modules/`uname -r`/updates/dkms/wl.ko /lib/modules/`uname -r`/updates/dkms/wl.ko.old sudo cp ./wl.ko /lib/modules/`uname -r`/updates/dkms/wl.ko
继续禁用kernel的驱动:
sudo vi /etc/modprobe.d/blacklist.conf
末尾加入以下语句:
blacklist b43 blacklist ssb blacklist brcmsmac
保存文件后,重启。
参考资料:
http://blog.sina.com.cn/s/blog_73b6331101016haq.html
http://forums.fedoraforum.org/archive/index.php/t-280821.html
相关推荐
ubuntu14.04安装gitlab.pdf
虚拟机+Ubuntu 14.04完美安装方法。
ubuntu14.04 无线驱动 详见:http://blog.csdn.net/u012488189/article/details/47973795
Ubuntu14.04离线安装NFS方法,这里面是需要的安装包,还有安装的手册,注意这个是Ubuntu14.04的安装包。
1.按以下顺序执行安装 sudo dpkg -i openssh-client_6.6p1-2ubuntu1_amd64.deb sudo dpkg -i openssh-sftp-server_6.6p1-2ubuntu1_amd64.deb sudo dpkg -i libck-connector0_0.4.5-3.1ubuntu2_amd64.deb sudo dpkg -...
nfs 挂载的详细步骤
有关在Ubuntu 14.04上安装UHD和GNURdio的教程,自己总结的
在ubuntu 14.04下有网安装GNU Radio
Ubuntu14.04升级GCC4.9.3步骤,基于Linuxmint17、Ubuntu14.04亲测。
mysql-ubuntu14.04系统版
Ubuntu 14.04系统下能用的vscode客户端(新版本在启动时无响应,且无法打开终端),版本号:code_1.42.1-1581432938_amd64.deb 使用方法:解压后执行sudo dpkg -i code*
安装完Ubuntu 14.04要做的件事,用于最新发布的ubuntu14.04,方便学习应用
复制文件内百度网盘分享地址ubuntu-14.04-desktop-amd64.iso
Ubuntu14.04下indigo的手控器phantom omni驱动安装 参考github上前辈写的手控器的驱动 适合的平台:Ubuntu14.04 +indigo+phantom omni 里面还有相关的使用说明
当联想笔记本电脑安装了win10+ubuntu14.04双系统后,ubuntu无法连接到wifi,那是因为ubuntu默认安装的是博通公司的wifi驱动,而我们的笔记本的硬件为高通平台,wifi型号为Qualcomm-Atheros-QCA9377,通过安装本文件...
ubuntu14.04 source.list
参照其他人的博客,绝对正确,在ubuntu14.04系统中安装indigo版本ROS的教程,亲手实践的!
ubuntu14.04 Docker离线安装包
安装了ubuntu14.04,必须使用root,所以使用了root登陆