以下转自: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的官网:
64-bit driver 5.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

ubuntu 安装dell无线网卡2的更多相关文章

  1. Debian/Ubuntu 安装bcm43142无线网卡驱动

    Drivers for Broadcom BCM43142 wireless card of Ubuntu/Debian 64-bit Linux 1.Check the wireless card ...

  2. ubuntu 14.04 重装机 安装笔记 无线网卡+cuda+nvidia

    1. 安装QA6714 无线网卡重要参考网页 #22 回答 https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1520343? ...

  3. Ubuntu系统下电脑驱动的安装(wifi无线网卡)

    今天给自己的笔记本电脑安装了新的Ubuntu 16.04但是安装之后发现wifi无法启用.这里特说明解决过程. 首先,网上的大部分教程是 选择"系统设置",点击"软件和更 ...

  4. Ubuntu 安装BCM 43142无线网卡驱动

    ubuntu14.04 安装 bcm43142无线网卡 用命令lspci 查看无线网卡类型 然后下载对应的无线网卡驱动. 之后,使用下列命令安装,即可搜索无线热点了: sudo apt-get ins ...

  5. LaTeX技巧892: Ubuntu 安装新版本TeXLive并更新

    原文地址:http://www.latexstudio.net/archives/9788.html 摘要: 本文比较系统地介绍了在Ubuntu下的TeXLive的安装与配置测试过程,建议使用Ubun ...

  6. Mac OS、Ubuntu 安装及使用 Consul

    Consul 概念(摘录): Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb 的 SmartStac ...

  7. ubuntu安装mysql

    好记性不如烂笔头,记录一下,ubuntu安装mysql的指令. 安装MySQL: sudo apt-get install mysql-server sudo apt-get install mysq ...

  8. ubuntu安装vim时提示 没有可用的软件包 vim,但是它被其它的软件包引用了 解决办法

    ubuntu安装vim时提示 没有可用的软件包 vim-gtk3,但是它被其它的软件包引用了 解决办法 本人在ubuntu系统安装vim  输入 sudo apt-get install vim 提示 ...

  9. docker 1.8+之后ubuntu安装指定版本docker-engine

    这边记录ubuntu安装过程,首先是官网文档 If you haven’t already done so, log into your Ubuntu instance. Open a termina ...

随机推荐

  1. JavaScript 之 页面跳转及Frame动态加载

    一.页面跳转 JS跳转大概有以下五种方式: 1.跳转到B页面 <script language="javascript" type="text/javascript ...

  2. Android(java)学习笔记113:Android编写代码调用Vibrator震动功能(Bug:按下按钮button始终没有震动)

    1.之前我编写的代码是如下: package com.himi.vibrate; import android.app.Activity; import android.app.Service; im ...

  3. IJKMediaFramework第三方库的使用

    大多数做直播的时候使用 FFMpeg.  IJKMediaFramework也是基于FFMpeg封装 使用起来比较简单,个人觉得如果有能力可以使用 FFMpeg , 使用 FFMpeg对 内存的占用比 ...

  4. Installing MySQL Connector/Python using pip v1.5

    The latest pip versions will fail on you when the packages it needs to install are not hosted on PyP ...

  5. javaweb学习总结五(内省、beanUtils工具包)

    一:内省的概念 1:内省是反射的一种特例,由于在反射中频繁的操作javabean,所以为了方便反射 javabean,sun公司开发出一套API提高效率. 2:javaBean,就是用来封装客户端请求 ...

  6. [未完成]关于JavaScript总结

    jsp服务端,js客户端. javascript 是基于对象和事件驱动的脚本语言. 特点: 交互性 安全性(不允许直接访问本地硬盘) 跨平台性(只要是可以解析java的浏览器都可以执行,和平台无关) ...

  7. IP地址计算和划分

    一.      B类地址 范围从128-191(第一串8位二进制10000000~10111111),如172.168.1.1,第一和第二段号码为网络号码,剩下的2段号码为本地计算机的号码.转换为2进 ...

  8. arguments的用法

    arguments 对象 在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们. 例如,在函数 sayHi() 中,第一个参数是 message.用 argument ...

  9. Git CMD - rm: Remove files from the working tree and from the index

    命令格式 git rm [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch] [--quiet] [--] <file>…​ 命令参 ...

  10. EF4.1之Code first 的几种连接数据库的方式

    通过代码 进行连接和创建数据库的方法主要分为两种: 1.使用用连接字符串(在配置文件里面): 连接字符串: <add name="DbEntities" connection ...