Depoly your flask app into Heroku Fix shit IE code manually ISBN to Book Category by Scraping DangDang A Generic Makefile for C/C++ Program Configure Raspberry pi Remove watermark with PyPDF2 tips for docker Anaconda+TensorFlow+CUDA Snippets Configure Remote Mathematica Kernel Build your own ngrok server Access Array SSL VPN 使用Rstudio制作html5幻灯片 tips for Mac OS X system Tips for ipython notebook 配置Ubuntu server + Openbox (Obuntu) tips for Vimperator tips for Vim 安装CUDA My First Jekyll Blog rsync常见选项 在Linux中读取Ipod touch的文件 tip for texmacs 在VPS上建站的一些tip Gnuplot绘图札记 Samba系统和autofs自动挂载 Linux中alsamixer声卡无法录音 搭建自己的RSS订阅器——Tiny Tiny RSS Grub2引导安装Ubuntu awk tips 将Ubuntu系统装入U盘 The Great Rtorrent 编译GCC 再这样剁手!!!该死的libgd 使用ulimit进行资源限制 使用SSH代理上IPV6 使用RCurl抓取网页数据 修复Ubuntu Grub记 openbox中的文件关联 在Ubuntu 12.04下编译qtiplot 处理BCM4312网卡驱动纪实 配置我的Ubuntu Server记 Cygwin杂记 Linux 使普通用户具有以超级权限执行脚本 让firefox自定义地处理文件类型 WordPress优秀主题及插件 在phpcloud上搭建wordpress UBUNTU下用pptpd做VPN server ubuntu升级内核过后的一些问题 安装telnet服务 kubuntu札记 64位kubuntu札记 统计软件R virtualbox stardict星际译王 Ubuntu重装windows系统后的grub引导修复 SSH服务及花生壳域名解析 采用cbp2make工具由code::blocks工程创建makefile文件 UBUNTU 札记

处理BCM4312网卡驱动纪实

2013年07月03日

现在我是越来越讨厌不开源并且不标准化的产品了。拿我Thinkpad跟老婆换了一台hp来用,果断格操作系统装ubuntu server + openbox,重头打造属于自己的超级清凉的系统。木办法,有强迫症的人。

于是乎,在无线网卡上面卡住了,搞了一下午才把驱动装好。BCM4312是一块比较奇葩的网卡,一般来说ubuntu对大多数硬件都已经支持得很好了,但是这个网卡一定要装驱动。

谷歌了一下,网上的人提供了闭源驱动wl和开源驱动b43两种方案。同时,我采用wicd-curses来管理我的无线网络。

首先,说明一下如何查询硬件信息和一些系统信息。为方便,把其他硬件信息的查询方式也说明如下:

# 查看硬件信息
dmidecode | less
# 查看总线信息,一般指主板上的设备
lspci -vvnn

# 查看CPU信息
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
# 实际有多少核心
cat /proc/cpuinfo | grep physical | uniq -c
# 当前使用字长,32位还是64位
getconf LONG_BIT

# 查看内存信息
cat /proc/meminfo

# 查看操作系统内核信息
uname -a
# 查看操作系统发行版信息
cat /etc/issue

# 利用内核加载硬件驱动时打印的信息来查看网卡信息
dmesg | grep -i eth

可以使用grep命令过滤查询到的信息,如lspci -vvvnn|grep Net可以显示网卡型号。

实验证明b43驱动在我的本子上是无法正常工作的,但是此处还是记录一下我的安装过程。主要参考了b43官方文档ubuntu帮助

sudo apt-get install b43-fwcutter
sudo apt-get install firmware-b43-installer
# 坑爹了,这条语句提示需用firmware-b43-lpphy-installer替代,然后又提示有个包无法被bzip2解压
# 没办法,还是手动安装吧!
wget http://www.lwfinger.com/b43-firmware/broadcom-wl-5.100.138.tar.bz2
tar xjf broadcom-wl-5.100.138.tar.bz2
sudo b43-fwcutter -w /lib/firmware broadcom-wl-5.100.138/linux/wl_apsta.o
# 有人提到需要去除对bcm43xx驱动的禁用,使用下面命令找到是在哪儿禁用的
egrep 'bcm' /etc/modprobe.d/*

# 完成后开启驱动
sudo modprobe b43
## 卸载驱动
# sudo modprobe -r b43
# sudo rmmod b43

好吧,一通折腾,此方案没有成功,无线网卡的键盘灯根本就没亮,尽管我是否想用开源的驱动,并且它提供了更多的功能。

接下来,上闭源驱动:

# 为免冲突先把上面装的删了
sudo apt-get purge firmware-b43-lpphy-installer
# 装闭源驱动
sudo apt-get install bcmwl-kernel-source
# 加载驱动
sudo modprobe wl

键盘灯是亮了,但是进入wicd-curses还是不能扫描到网络。这下没辙了,于是我就不停在b43wl之间换,试各种方式,检查各个操作步骤。最后被我发现是坑爹的wicd的问题,有两个链接文件位置错了,

sudo rm /etc/resolv.conf
sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
sudo rm /var/lib/wicd/resolv.conf.orig
sudo ln -s /run/resolvconf/resolv.conf /var/lib/wicd/resolv.conf.orig
sudo service wicd start

对了,上面有一点没有说到,就是现在ubuntu 13.04源里的wl驱动有问题,在运行命令sudo iwconfig的时候会把内核搞死掉。所以需要安装一个打了补丁的版本:

wget https://launchpad.net/~eugenesan/+archive/ppa/+build/4546722/+files/bcmwl-kernel-source_6.30.223.30%2Bbdcom-0ubuntu1%7Eeugenesan%7Eraring2_i386.deb
sudo dpkg -i bcmwl-kernel-source_6.30.223.30+bdcom-0ubuntu1~eugenesan~raring2_i386.deb

这其中我还考虑到是不是我NIC(Network Interface Card)的名称没有搞对,cat /etc/udev/rules.d/70-persistent-net.rules查看硬件对应的名称,果然,里面提示我wl模块的名称应该是eth1而非我们常说的wlan0,赶紧去/etc/network/interfaces改成下面这样:

auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet dhcp

采用动态分配地址。

然后,再打开wicd-curses还是没有反应,彻底崩溃中。。。

看到前面有人提到使用iwconfig命令,这玩意儿干嘛的呀?跑一下一看,诶,有识别到eth1啊!这才想到是wicd-curses的问题。查看它的设置(敲wicd-curses,然后shift+p进设置),发现有无线网卡一栏没有填写东西,赶紧填上名称eth1,这才能检测到网络信号!

好吧,折腾死我了。