How to install b43 firmware for Broadcom Wireless cards
The Broadcom wireless chip needs proprietary software (called "firmware") that runs on the wireless chip itself to work properly. This firmware is copyrighted by Broadcom and must be extracted from Broadcom's proprietary drivers. To get such firmware on your system, you must download the driver from a legal distribution point, extract it, and install it.
Here is a short guide on how to create a b43(legacy) firmware package for your system.
First you need to find out which firmware you require for your device. You can use the lspci command to display the Chip-ID of the wireless card which can then be compared against the Supported devices list at http://linuxwireless.org.
# lspci -vnn | grep 14e4 0001:01:01.0 Network controller : Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller [14e4:4318] (rev 02)
The Chip-ID from the example above is [14e4:4318], using this information you should discover this card requires the b43 (as opposed to b43legacy) kernel module using version 18.104.22.168 of the firmware.
If you are a Salix 13.1 user please read the How to install b43 firmware for Broadcom wifi (Salix 13.1) forum thread.
First you need to install the b43-fwcutter package from the Salix repository.
slapt-get -u slapt-get -i b43-fwcutter
Distributed with the b43-fwcutter package are a number of ready-made build scipts (SLKBUILD) you can use to create a b43 or b43legacy firmware package. These scripts can be found in the /usr/share/b43-fwcutter/ directory.
To create a package copy the relevant build script in to an empty directory then execute slkbuild -X as root (super user) from that directory. The source archive will be fetched from the internet (you will need an active internet connection) and the package created.
mkdir b43 cd b43 cat /usr/share/b43-fwcutter/b43-firmware-22.214.171.124.SLKBUILD > SLKBUILD slkbuild -X
Once the package has been created you can install it with the package management tools.
spkg -i b43-firmware-126.96.36.199-fw-1pw.txz
First you need to install the b43-fwcutter package from the Slackbuid repository using slapt-src or it's graphical equivalent, Sourcery. Then follow this by installing the b43-firmware package also available in the Slackbuild repository
slapt-src -u slapt-src -i b43-fwcutter slapt-src -i b43-firmware
That's it, now reboot
With the addition of dependency resolution in Sourcery and slapt-src all you need to do is to installed the b43-firmware package. Sourcery /slapt-src will recognize the need to install the b43-fwcutter package and do it automatically for you.
slapt-src -u slapt-src -i b43-firmware.
That's it, now reboot
Once the firmware has been installed you can load the b43 (or b43legacy) kernel module with the modprobe command. If the module doesn't load automatically on startup then you may want to add the command to /etc/rc.d/rc.local.
If you have installed Broadcom's Hybrid Linux Driver then you will need to unload the wl module first.
modprobe -r wl
To perminently blacklist the wl module use the following command. This way you can easily delete /etc/modprobe.d/blacklist-wl.conf to remove the blacklist at a later date.
echo "blacklist wl" > /etc/modprobe.d/blacklist-wl.conf
There may be times when your target system doesn't have any access to the internet other than via a wireless connection which creates a "chicken and egg" situation when it comes to upgrading or changing the installed operating system.
Since this situation has been raised on the forum many times here are a few helpful hints.
- The firmware has no architecture so the packages can be created on either version of Salix (32bit or 64bit) and installed on the other version.
- The system you use to extract the firmware does not require a Broadcom wireless card to be connected to it.
- Solution A: Install Salix inside a virtual machine before installing to your hard drive so you can create the firmware package while you still have a working internet connection.
- Solution B: Use a Salix Live CD to create the firmware package on another system with a working internet connection.