设为首页 收藏本站
查看: 1304|回复: 0

[经验分享] ubuntu 安装dell无线网卡2

[复制链接]

尚未签到

发表于 2015-10-7 11:32:37 | 显示全部楼层 |阅读模式
  
  
  
  以下转自:http://blog.sina.com.cn/s/blog_73b6331101016haq.html

ubuntu 12.04 bcm43xx无线网卡安装记录
(2012-07-01 01:52:41)
转载
标签:linux
ubuntu
bcm43xx
driver
杂谈
分类: PC

本人本子型号为HP envy 4 1006TX 无线网卡为bcm4313 其实 ubuntu 12.04的内核是有这个型号的无线网卡的驱动 但是这个版本驱动 信号实在有点说不过去 于是想着办法换一个版本

最先尝试的是ubuntu apt source的bcmwl-kernel-source,这个版本的信号还是不错的但仅限于12.04的,驱动版本为5.100.82.38的。
安装方法:
sudo apt-get install bcmwl-kernel-source
sudo vi /etc/modprobe.d/blacklist.conf
末尾加入以下语句:

blacklist b43
blacklist ssb
blacklist brcmsmac
保存文件后,重启。

很简单,驱动性能也还不错,适合新手使用,但是喜欢折腾的人就继续往下看吧。

本着自己爱折腾的思想,对驱动追新的理念还是很强的,于是上了broadcom的官网:
http://www.broadcom.com/support/802.11/linux_sta.php
64-bit driver5.100.82.112 10/25/2011

最新的驱动明显要比apt source的要新,经过测试性能也好于前者。

首先针对自己的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的确没有这个接口了,看来这个驱动是2.6的内核的版本,指望官方是没有希望了,自己动手吧。

看了一下bcmwl-kernel-source的patch,它使用的是.ndo_set_rx_mode替换的,那我们也用这个替换:
vi src/wl/sys/wl_linux.c +388
将源文件改为以下(ps:这里偷个懒就不对内核版本进行判断了):

#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
ok,无线网卡正常运行,信号明显要比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
保存文件后,重启。

至此,一切正常,换了驱动后信号只是好的一B,比windows的驱动还要稳定,折腾成功:P

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-123736-1-1.html 上篇帖子: DELL磁盘阵列控制卡(RAID卡)MegaCli常用管理命令汇总 下篇帖子: 某些DELL笔记本电脑不能用GHOST版本XP的解决方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表