Broadcom BCM4312 (简体中文)
From ArchWiki
i18n |
---|
English |
简体中文 |
Contents |
简介
Broadcom终于放出了大部分无线网卡的Linux驱动.请看 Ubuntu forums 和 Debian forums. 看上去适用于所有Broadcom 43xx,例如通过ndiswrapper 所支持的4328无线网卡. Broadcom无线网卡通常用于Dell等笔记本平台.
不幸的是,本驱动不能工作于隐藏的ESSID下.(笔者注:本人用这个驱动+gnome的networkmanager前端,可以连入隐藏essid的无线路由)
请确保您的无线网卡在如下列表中
下表为可以使用此驱动的无线网卡芯片,
14e4:432b "Broadcom Corporation BCM4322 802.11a/b/g/n Wireless LAN Controller" 14e4:4329 "Broadcom Corporation BCM43XG" 14e4:4328 "Broadcom Corporation BCM4328 802.11a/b/g/n" 14e4:4315 "Broadcom Corporation BCM4312 802.11b/g" 14e4:4313 "Broadcom Corporation BCM4310 Ethernet Controller" 14e4:4312 "Broadcom Corporation BCM4312 802.11a/b/g" 14e4:4311 "Broadcom Corporation BCM4311 802.11b/g WLAN" 14e4:432d 14e4:432c 14e4:432a
在终端输入 (小心输入哦)
lspci | grep BCM43
如果有其它的Broadcom模块出现,可以试试 b43 驱动.
驱动安装
获得驱动
这儿有PKGBUILD文件 AUR. 或者可以从 这里 下载驱动,目录下会有一个 README 文件.
加载内核模块
在加载模块之前, 移除 b43, 或者其它用于无线网卡的内核模块:
# rmmod b43
加载模块:
# modprobe lib80211_crypt_tkip # modprobe wl # insmod /lib/modules/2.6.30-ARCH/kernel/drivers/net/wireless/wl.ko
您可能还需要通过以下命令重新生成modules.dep:
# depmod -a
现在您可以在/etc/rc.conf中模块部分加入使之永久生效 .
MODULES=(lib80211_crypt_tkip, ...
如果您是通过AUR安装本驱动包,仅需要:
# rmmod b43 # (or any other module you are using for your wireless card) # modprobe wl
现在使用iwconfig命令,应该能看到一个无线设备(例如 eth1或者wlan0). 您可能需要重启电脑才能在iwconfig中看到无线设备.
要让模块每次开机自动加载,请在 rc.conf中加入:
MODULES=(lib80211_crypt_tkip wl !b43 !ssb ...
通过把 'b43' and 'ssb' 模块加入黑名单, 可以预防内核加载错误的驱动模块.
加载多Broadcom网卡的内核驱动模块
在我的Dell Inspiron笔记本上, 拥有BCM4401有线网卡和BCM4328无线网卡.如果我仅仅是移除b43模块,我能加载wl无线驱动,但是没有无线网卡显示.然而,如果我先移除有线网卡的b44(和ssb)驱动模块,然后加载wl无线驱动,则会有一个eth0无线网卡设备出现.之后,再重新加载b44驱动,这样就同时能有一个eth1的有线网卡出现.
短文版:
- Put "lib80211_crypt_tkip" and "wl" at the BEFORE b44 (if you have it) position in MODULES= 在 /etc/rc.conf 模块部分,b44(如果你需要这个驱动的话)之前加入lib80211_crypt_tkip wl
- 不要忘记把 b43 模块加入黑名单
- 您的无线网卡设备为eth0
- 您的有线网卡设备为eth1
- 两者能同是正常工作
故障解决
网卡设备界面总是互换
这个本驱动的常见问题.而我根据 udev post来设定我的BCM4312网卡:
创建一个/etc/udev/rules.d/10-network.rules
文件并根据网卡的MAC地址来命名网卡设备名.
SUBSYSTEM=="net", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="eth0" SUBSYSTEM=="net", ATTR{address}=="ff:ee:dd:cc:bb:aa", NAME="eth1"
语法说明:
- NAME="eth0" 是你想要的设备名称,例如"eth0". 你也可以使用其它的来代替,如"lan0"来代替eth0或者"wlan0"代替eth1.
- 可以通过如下命令查看网卡MAC地址:
udevadm info -a -p /sys/class/net/<yourdevice> | grep address
但是首先你要知道eth0不是eth1,反之亦然, 当然你可以扫描下设备: iwlist scan
如果eth0变成了eth1,那么现在eth1的MAC地址,就是之前eth0的MAC地址.
别忘记更新 /etc/rc.conf 和其它要用到ethX的配置文件!
wl模块在内核更新后无法工作
这是因为驱动是为当前内核所编译,当你每次更新完内核后都需要重新编译驱动.