Do I have this card?
Broadcom wireless cards are found in a lot of Dell, HP/Compaq, Acer, and Apple (using Airport Extreme) laptops. For a complete list of supported cards see here. (I have a Dell Latitude D600 with a Dell Wireless 1350 WLAN Mini-PCI Card, so I will use that as an example throughout the remainder of this Howto.)
To see if you have one of these cards do a:
Code: Select all
$ lspci
Code: Select all
02:03.0 Network controller: Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller (rev 02)
Code: Select all
# apt-get pciutils
If you are using a stock kernel then chances are you already have everything you need in your kernel. If you need to compile your own kernel or are unsure how to check if the following options are enabled, see Kernel compile and install on Debian systems.
Code: Select all
Networking -->
<*> Generic IEEE 802.11 Networking Stack
[*] Enable full debugging output
<M> IEEE 802.11 WEP encryption (802.1x)
<M> IEEE 802.11i CCMP support
<M> IEEE 802.11i TKIP encryption
<*> Software MAC add-on to the IEEE 802.11 networking stack
[*] Enable full debugging output
As of kernel 2.6.17 support for Broadcom BCM43xx cards is available natively in linux (You should probably use a kernel >= 2.6.20 however). The addition of this driver stems from the addition of a Softmac layer in the wireless stack. Softmac is a software MAC (machine access control) layer that works with Linux's built-in 802.11 layer. This provides a great deal of WiFi protocol management features for chips that, unlike Intel Pro Wireless chip family, don't handle in hardware. (For more information see here.) The native linux driver, bcm43xx, works well and should probably be tried before Ndiswrapper. To try it out enable the following in addition to the options above:
Code: Select all
Device Drivers -> Network device support -> Wireless LAN (non-hamradio) -> Wireless LAN drivers (non-hamradio)
<M> Broadcom BCM43xx wireless support
[*] Broadcom BCM43xx debugging (RECOMMENDED)
BCM43xx data transfer mode (DMA + PIO) --->
Getting and extracting the firmware
As machiner has pointed out getting the firmware is now trivial because bcm43xx-fwcutter will get and extract it for you when you
Code: Select all
# apt-get install bcm43xx-fwcutter
Code: Select all
# mkdir -p /lib/hotplug/firmware; cp /lib/firmware/*.fw /lib/hotplug/firmware
Congratulations. You are now done, enjoy your wireless.
Using Ndiswrapper
If you wish to use Ndiswrapper or an alternate driver file you must first find a windows driver and you will obviously still need bcm43xx-fwcutter.
Getting the windows driver
Windows driver files are ridulously large and contain a lot of file which we don't care about. The files we are interested in are bcmwl5.inf and bcmwl5.sys. There are a couple different ways to get these files.
1. If you have the driver's installed on a windows machine do a search for bcmwl5.inf and open it up in notepad. Look for the line near the top that says something like:
Code: Select all
DriverVer=10/20/2004, 3.70.17.0
3.20.23.0
3.30.15.0
3.30.15.1
3.40.20.0
3.40.25.3
3.40.65.0
3.40.69.0
3.40.73.0
3.40.100.0
3.50.21.10
3.60.7.0
3.60.7.5
3.70.12.0
3.70.17.0
3.90.16.0
3.90.41.1
3.94.41.1
3.94.41.2
3.100.35.1
3.100.46.0
3.100.64.0
3.100.64.50
3.100.65.1
3.104.64.50
3.104.64.52
3.120.27.0
3.140.16.0
4.10.40.0
4.10.40.1
copy both bcmwl5.inf and bcmwl5.sys over to your linux box and proceed to "Installing Ndiswrapper".
2. Read the documentation! You will find a list of URL's in /usr/share/doc/bcm43xx-fwcutter-00x/README.
3. Get the driver from your laptop vendor*. (Mine happens to be here.
*If you use method three you will need to extract the files from the .exe file.
Extracting the files from a .exe
Since we have an executible file, we need to extract its contents. Their will be a lot of different files in the archive, but remember we only care about bcmwl5.inf and bcmwl5.sys, so you can delete the rest if you like.
Code: Select all
# apt-get install cabextract
# cabextract driver_file.exe
Extracting cabinet: driver_file.exe
extracting bcm43xx.cat
extracting bcm43xxa.cat
extracting bcmwl5.inf
extracting bcmwl5.sys
extracting bcmwl5a.inf
extracting bcmwld2k.exe
.....
All done, no errors.
Now it's time to do something with that bcmwl5.sys file. This file contains the firmware that we need, but we need to extract it. If you haven't already install bcm43xx-fwcutter.
Code: Select all
# apt-get install bcm43xx-fwcutter
Code: Select all
# bcm43xx-fwcutter path/to/bcmwl5.sys
(don't worry if you get an error message like)
*****: Sorry, it's not possible to extract "bcm43xx_microcode11.fw".
*****: Extracting firmware from an old driver is bad. Choose a more recent one.
*****: Luckily bcm43xx driver doesn't include microcode11 uploads at the moment.
*****: But this can be added in the future...
# cp bcm43xx* /lib/firmware/