Broadcom 43xx
From Gentoo Linux Wiki
This article details the configuration of Broadcom 43xx series devices by three different methods. Note that this article only covers the specifics required for these devices. For generic installation instructions please see the Gentoo Handbook.
Contents |
[edit] Open Source Kernel Driver
For a list of supported devices and the latest information for the open-source drivers, see the relevent project documentation page:
Enable the following options in the kernel, then build and install as normal. The deselected options are possible extras or alternatives, depending on your device.
| Linux Kernel Configuration: b43 / b43-legacy kernel options (2.6.25+) |
Bus options (PCI etc.) -->
< > PCCard (PCMCIA/CardBus) support --->
[*] Networking support -->
Wireless -->
-*- Improved wireless configuration API
-*- Wireless extensions
<*> Generic IEEE 802.11 Networking Stack (mac80211)
Device Drivers -->
Network device support -->
Wireless LAN
[*] Wireless LAN (IEEE 802.11)
<*> Broadcom 43xx wireless support (mac80211 stack)
[ ] Broadcom 43xx PCMCIA device support
[*] Broadcom 43xx debugging
< > Broadcom 43xx-legacy wireless support (mac80211 stack)
[ ] Broadcom 43xx-legacy debugging
Broadcom 43xx-legacy data transfer mode (DMA + PIO) --->*
|
(*) Broadcom 43xx-legacy data transfer mode (DMA + PIO) kernel option reports that "not all devices of the b43legacy series support PIO. You should use PIO only if DMA does not work for you."
The following options may enable support for laptop LEDs.
| Linux Kernel Configuration: Extra Options for Laptops (2.6.25+) |
[*] Networking support --->
Wireless --->
<*> Generic IEEE 802.11 Networking Stack (mac80211)
[*] Enable LED triggers
<*> RF switch subsystem support --->
<*> Input layer to RF switch connector
Device Drivers --->
[*] LED Support --->
[*] LED Trigger support
<*> LED Timer Trigger
<*> LED Heartbeat Trigger
<*> LED Default ON Trigger
Input device support --->
-*- Generic input layer (needed for keyboard, mouse, ...)
<*> Polled input device skeleton
|
[edit] Firmware
In addition to the kernel driver, you will need the firmware for your card.
[edit] Kernel >=2.6.32
You can install the firmware from portage tree without fwcutter:
[edit] Older Kernels
For manual installation you will need a firmware cutter (which extracts the firmware and places it in /lib/firmware)
Install the firmware cutter with:Download the appropriate firmware file from the documentation site.
Now extract the firmware file (replacing the example used below with the version of firmware recommended by the b43 documentation):
then
Cut the firmware with:
[edit] Loading the Module
If you opted to compile the driver as a module, it will be named either b43 or b43legacy depending on which you chose.
or
For most users, installation should now be complete. Reboot and configure your wireless.
[edit] Optional: Monitor mode
If you want monitor mode, you will need to patch the kernel driver. If you don't know what Monitor Mode means, you probably don't need it.
Generally, monitor mode is only needed for networking research and packet injection by aircrack-ng and similar tools.
You can find documentation on these patches on the aircrack-ng website. The patches themselves can be downloaded from http://patches.aircrack-ng.org/
It is best to use the wireless testing kernel to patch against:
[edit] Kernel 2.6.26
[edit] Kernel 2.6.25
[edit] Ndiswrapper - Wrapping Windows Drivers
If the process above doesn't work, you can try to use the ndiswrapper drivers are the drivers that came with your laptop or wireless card. If those fail, check for the latest version from the manufacturers website.
If you own a macbook (4th or 5th generation) try using the bootcamp winxp driver. It's located on the 1st install DVD and named "broadcomxpinstaller.exe", just unrar it.
Then just follow Ndiswrapper.
[edit] Broadcom 802.11 Linux STA driver
Broadcom has released it's own kernel driver. It's closed source but works and seems to release "often" (at least 3 times between the summer of 2008 and the February 2009).
There is now a masked ebuild (net-wireless/broadcom-sta) so one no longer has to compile it by hand. The ebuild also contains patches so that it will work on the latest kernel. Just unmask the package and emerge as usual.
This could not be verified on a MacBookPro6,2 (2010-05) with BCM4353 and broadcom-sta-5.60.48.36 on gentoo-sources-2.6.33-r1. The driver survived a suspend (hibernate not tested) and NetworkManager could connect afterwards.
[edit] Troubleshooting
[edit] General Advice
Your first port of call when problems arise is the output of dmesg, which displays the kernel log. It is also helpful to make sure that only one of the 3 possible modules is loading. The best way to do this is blacklist the modules you don't want. Add the relevant entries from below.
blacklist b43
blacklist wl[edit] WEP encryption is not enabled for your device
If you get an error message saying "WEP encryption is not enabled for your device" or similar it may be necessary to compile the following into the kernel to ensure that the required cryptographic options are enabled. If you compile the cryptographic options as modules, they may not be loaded automatically by the driver.
[edit] iwconfig reports txpower off
On some laptops the driver does not initialise the device in powered on mode. This can be resolved by adding the following to your network configuration (assuming wlan0 is the device name).
postup () {
if [[ ${IFACE} == "wlan0" ]]; then
iwconfig wlan0 txpower on
fi
}
[edit] Old Driver Support List
This table is *incomplete*, and probably out of date. If your card is unlisted, that doesn't mean that it isn't supported.
For an up-to-date list for the Open Source 43XX driver, read http://wireless.kernel.org/en/users/Drivers/b43/devices
| PCI ID | Subsystem PCI ID | Device name | b43 | b43-legacy | wl (broadcom-sta) |
|---|---|---|---|---|---|
| 14e4:4311 | 103c:1374 | Broadcom Corporation BCM4311 802.11b/g WLAN | Yes | Not tested | Not tested |
| 14e4:4311 | 1468:0422 | Broadcom Corporation BCM94311MCG wlan mini-PCI (rev 01) | Yes | Not tested | Not tested |
| 14e4:4312 | 1028:0007 | Broadcom Corporation BCM4312 802.11a/b/g (rev 01) | Yes | Not tested | Not tested |
| 14e4:4312 | 103c:1370 | Broadcom Corporation BCM4312 802.11a/b/g (rev 02) | Partially (results vary with kernel and patches) | Not tested | Not tested |
| 14e4:4315 | 1028:000b | Broadcom Corporation BCM4312 802.11b/g (rev 01) | No | No | Not tested |
| 14e4:4315 | 1028:000c | Broadcom Corporation BCM4312 802.11b/g (rev 01) | No | No | Yes |
| 14e4:4315 | 103c:1508 | Broadcom Corporation BCM4312 802.11b/g (rev 01) | Yes | Not tested | Not tested |
| 14e4:4315 | 103c:137c | Broadcom Corporation BCM4312 802.11b/g (rev 01) | No | No | Yes |
| 14e4:4315 | 103c:137d | Broadcom Corporation BCM4310 802.11a/b/g (rev 01) | No | No | Not tested |
| 14e4:4315 | 105b:e003 | Broadcom Corporation BCM4310 USB Controller (rev 01) | No | No | Not tested |
| 14e4:4315 | 105b:e003 | Broadcom Corporation BCM4312 Mini PCI-E Controller 802.11b/g (rev 01) | No | No | Not tested |
| 14e4:4318 | 103c:1355 | Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g (rev 02) | Yes | Not tested | Not tested |
| 14e4:4318 | 1799:7010 | Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller (rev 02) | No | Yes | Not tested |
| 14e4:4320 | 103c:12fa | Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller (rev 03) | Yes | No | Not tested |
| 14e4:4320 | 1737:4320 | Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller (rev 03) | Yes | No | Not tested |
| 14e4:4320 | 1799:7010 | Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller (rev 02) | No | Yes | Not tested |
| 14e4:4328 | 103c:1366 | Broadcom Corporation BCM4328 802.11a/b/g/n (rev 03)* | No | No | Not tested |
| 14e4:432b | 103c:137f | Broadcom Corporation BCM4322 802.11a/b/g/n Wireless LAN Controller (rev 01) | Not tested | Not tested | Not tested |
| 14e4:432b | 106b:008d | Broadcom Corporation BCM4322 802.11a/b/g/n Wireless LAN Controller (rev 01) | No | No | Yes |
| 14e4:4353 | 106b:0093 | Broadcom Corporation Device (rev 01) | No | No | Yes |
(*) N-series Broadcom chips are not supported by any of the 43xx drivers in Linux at this time (August 2008) - https://lists.berlios.de/pipermail/bcm43xx-dev/2008-May/007517.html
