[ 教程 ] 编译安装 broadcom 家族官方无线网卡驱动的方法

安装 opensuse 几天以后,发现它比 windows 上网还要慢,找了一些相关文档来看,发现 opensuse 自带的驱动不支持我的无线网卡(4313),只好自己去官方网站拿了编译安装。如果你的源里面有官方的驱动,可以直接安装,毕竟自己编译是很麻烦的,为了解决各种半路冒出来的问题我鼓捣了一个上午。
首先去 broadcom 官网下载相应的驱动包,看得懂英文的朋友可以把说明文档一块下载。(网址: broadcom.com/support/802.11/linux_sta.php
** 1. 安装开发包 **
正式编译之前需要安装 kernel-devel 软件包,你可以到 计算机 - 安装 / 移除软件 那搜索。
** 2. 编译 **
驱动下载好后,进入驱动压缩包所在目录,打开终端(默认快捷键 f4), 在终端输入以下命令:

mkdir hybrid_wl
cp 你的驱动压缩包 hybrid_wl
cd hybrid_wl
tar xzf 你的驱动压缩包 

如果提示你需要超级用户权限可以提前输入 su。
当然也可以不用命令行,直接解压安装包重命名就行。
然后在终端输入:

make clean   (可选的,你之前没有编译过东西就不用清理)
make

编译过程中几乎一定会出现如下提示:asm/system.h: No such file or directory
你可以去找它需要的旧内核源文件,不过这里推荐一个国外朋友的方法:
进入 hybrid_wl/src/wl/sys,找到 wl_linux.c,打开,删除第 43 行的
include <asm/system.h>
代码,然后搜索
.ndo_set_multicast_list
并替换为
.ndo_set_rx_mode
。然后再重新回到 hybrid_wl 目录 make clean 及 make。
(出处: blog.sina.com.cn/s/blog_7fcb1aef0100y786.html
** 3. 删除旧的驱动 **
如果你没有安装过无线网卡驱动可以跳过这步。
在终端输入以下下命令

lsmod  | grep "b43|ssb|bcma|wl"

删除 b43、 ssb、 bcma 、wl 模块

rmmod b43
rmmod ssb
rmmod bcma
rmmod wl

删除模块时可能报错,把它们加进黑名单:
如:

echo "blacklist ssb" >> /etc/modprobe.d/blacklist.conf
echo "blacklist bcma" >> /etc/modprobe.d/blacklist.conf
echo "blacklist b43" >> /etc/modprobe.d/blacklist.conf

重启计算机
现在你不能上网了,如果你没有保存我的帖子就悲剧了,哈哈。 :blush

** 4 安装并设置开机启动 **
进入 hybrid_wl,打开终端,输入:

cp wl.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless 
depmod -a
echo modeprobe wl >> /etc/rc.local

重启计算机,记得打开你的无线物理开关。

注:Linux 内核默认自带的驱动支持 4313,可以到: wireless.kernel.org/en/users/Drivers/brcm80211 下载。
仅限 braodcom 家族无线网卡,部分内容参考官方说明文档。
希望版主还是要设置精华贴和帖子自定义排序。这样新手才不用在板块里瞎找。

1赞

lz 升级内核后,用自带的驱动 4313 就能用了。
不过混合驱动应该在性能上更好一些。
在 packman 源里面找到一个 broadcom-wl 应该跟 lz 说的是同一个东西。

在我的机器中 packman 源里面的 broadcom-wl 安装不但不会解决问题反而直接找不到无线设备了,而楼主的方法很管用,解决了我的无线网络质量问题,我的网卡是 BCM 4313 802.11b/g/n

按照 LZ 的办法,安装了混合驱动,信号瞬间满格~就连一直不亮的 WIFI 指示灯都亮了…
非常感谢!

p.s.
不用重启也可以使用。
可能是 systemd 的缘故,本机没有 /etc/rc.local,把 modprobe wl 写到 /etc/modprobe.d/99-local.conf 可以自动挂载。本人 openSUSE 12.3。