Articles

[HOWTO] Broadcom wifi under Porteus

As you probably know, Broadcom wifi chipsets are the most problematic in the linux world.
Starting with the Porteus-1.2 release we are going to provide 4 drivers which should cover all broadcom wifi cards.


The broadcom-sta driver will be placed in 000-kernel.xzm along with the b43, b43-legacy and bcma drivers. The last three are blacklisted by default as broadcom-sta supports the majority of wifi NIC's. Unfortunately older chipsets are not working properly with broadcom-sta so b43, b43-legacy and bcma must come to the rescue.
Here is an example of a wifi card that is not working with the broadcom-sta driver:

lspci -knn
0c:00.0 Network controller [0280]: Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] (rev 01)
Subsystem: Dell Wireless 1390 WLAN Mini-Card [1028:0007]
Kernel modules: wl, ssb



 
dmesg
[    5.878844] wl: module license 'unspecified' taints kernel.
[    5.878849] Disabling lock debugging due to kernel taint
[    5.892862] wl 0000:0c:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[    5.892872] wl 0000:0c:00.0: setting latency timer to 64
[    5.895866] eth%d: 5.100.82.112 driver failed with code 21



Here is an example of a card that is working correctly with broadcom-sta:

 
lspci -knn
0c:00.0 Network controller [0280]: Broadcom Corporation BCM4312 802.11b/g LP-PHY [14e4:4315] (rev 01)
Subsystem: Dell Wireless 1395 WLAN Mini-Card [1028:000b]
Kernel driver in use: wl
Kernel modules: wl, ssb

 

dmesg
[    6.916353] wl: module license 'unspecified' taints kernel.
[    6.916357] Disabling lock debugging due to kernel taint
[    6.928402] wl 0000:0c:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[    6.928416] wl 0000:0c:00.0: setting latency timer to 64
[    6.990065] lib80211_crypt: registered algorithm 'TKIP'
[    6.990369] eth1: Broadcom BCM4315 802.11 Hybrid Wireless Controller 5.100.82.112



As you can see "Dell Wireless 1390" is unlucky while "Dell Wireless 1395" works just fine.

What to do if your NIC is not working with the broadcom-sta driver?
The solution is quite simple as Porteus comes with other drivers which should do the job. The only thing which must be done is to blacklist 'wl' driver (our broadcom-sta) and unblacklist the rest.  To do this, create a file (plain text) at /mnt/sdXY/porteus/rootcopy/etc/modprobe.d/b43_blacklist.conf with following content:

    blacklist wl


This file will override the original one from 000-kernel.xzm and the b43 (or b43-legacy, or bcma) driver will take priority over 'wl'.
By default Porteus-1.2 ships only with open-source firmware for the b43 driver which supports a limited number of chipsets. You can still extract non-free firmware for b43 driver with the help of b43-fwcutter as described in this HOWTO:
link

here is sample dmesg output when broadcom chipset is served by the b43 driver:

dmesg | grep b43
[    8.070964] b43-pci-bridge 0000:0c:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[    8.070975] b43-pci-bridge 0000:0c:00.0: setting latency timer to 64
[    8.326540] b43-phy0: Broadcom 4311 WLAN found (core revision 10)
[    8.444650] Registered led device: b43-phy0::tx
[    8.444670] Registered led device: b43-phy0::rx
[    8.444691] Registered led device: b43-phy0::radio
[   11.554040] b43-phy0: Loading firmware version 666.2 (2011-02-23 01:15:07)



Hopefully all broadcom problems will finally be gone in Porteus-1.2.