broadcom BCM wireless card on gentoo

昨天又折腾了一下我的无线,是 dell 的本子,broadcom 的卡 BCM4313,准备写一下的时候,发现之前居然折腾过 BCM4312。。感觉真蛋疼。。

$ lspci -vnn -d 14e4:
02:00.0 Network controller [0280]: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller [14e4:4727] (rev 01)
        Subsystem: Dell Inspiron M5010 / XPS 8300 [1028:0010]
        Flags: fast devsel, IRQ 17
        Memory at e5300000 (64-bit, non-prefetchable) [size=16K]
        Capabilities: <access denied>
        Kernel modules: bcma

根据 这里 , BCM 的网卡有三种可用驱动

  • b43,kernel 自带,源自 broadcom linux 驱动的逆向工程
  • brcmsmac, kernel 自带,似乎源自 broadcom 某个开源的驱动
  • wl, broadcom 发布的 linux 驱动

另外,kernel 自带的 b43 和 brcmsmac 支持标准的 802.11 栈,可以通过 iw iwconfig 之类的工具来配置,获取状态。wl 就不行了。

如果想使用 b43 或者 brcmsmac,需要选择下面的 kernel 选项,要注意都选择成 module,因为还需要加载 firmware,如果编译进内核那需要把 firmware 也编译到内核才可以。

Networking support  --->  Wireless  ---> Generic IEEE 802.11 Networking Stack (mac80211)
Device Drivers  ---> Broadcom specific AMBA  --->  BCMA support

针对 b43 选择 Device Drivers ---> Network device support ---> Wireless LAN ---> Broadcom 43xx wireless support (mac80211 stack), 还需要安装 sys-firmware/b43-firmware

针对 brcmsmac 选择 Device Drivers ---> Network device support ---> Wireless LAN ---> Broadcom IEEE802.11n PCIe SoftMAC WLAN driver,还需要安装 sys-kernel/linux-firmware

对于 wl,需要安装 net-wireless/broadcom-sta,安装的时候会自动检查必要的内核选项,按照提示选择好就可以了。主要是要注意去掉上面的 kernel 的选项,另外可能还需要一个 ipw2100 来提供某一个隐藏的 kernel 选项。此外还有个 PREEMPT_RCU 检查,需要选择下面的内核选项 Processor type and features ---> Preemption Model (Voluntary Kernel Preemption (Desktop)) ---> Voluntary Kernel Preemption (Desktop)

如此之后编译安装重启就可以了。

comments powered by Disqus