Got some time to post this one, I thought I should log my experience, installing wireless support for my broadcom PCI card in debian, so that next time, I will not miss the methods.
Debian provides three way to get support for BCM43XX devices. One is the reverse engineered ‘b43xx’ driver comming with the default kernel image. Its opensource and mainly, it works. To get it work, first we need to check whether our device have support from this driver,
squeeze@Debian:~$ lspci | grep BCM 03:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 02) squeeze@Debian:~$
My card have support for b43, I just checked with the list of PCI cards they provided in their site. Now all I need to do is, install the firmware,
$ su -c'aptitude install b43-fwcutter'
This will automatically install the firmware. Thus, in your next boot, you will get ‘wlan(x)’ interface provided by ‘b43’ opensource driver.
If your card is not supported by opensource b43xx driver, still debian provides a good way, its ‘broadcom-sta-common’ package. This will install the proprietary ‘wl’ driver in a way that it will perfectly sync with debian packaging system.
Before starting this, don’t forget to have your backports ready, because debian testing repos have the habit of removing important packages, I had an experience that I was not able to find ‘kernel-headers-2.6.30-amd64’ in testing repo, after some googling, I came to know that its available in backports.
$ su -c'echo "deb http://www.backports.org/debian/ lenny-backports main non-free contrib" >> /etc/apt/sources.list.d/backports.sources.list' $ su -c'echo "deb-src http://www.backports.org/debian/ lenny-backports main non-free contrib" >> /etc/apt/sources.list.d/backports.sources.list' $ su -c'aptitude update' $ su -c'aptitude install debian-backports-keyring'
Now make sure ‘module-assistant’ is fully prepared and ready to compile source codes for you.
$ su -c'module-assistant prepare'
Now we can start our proceedings,
$ su -c'aptitude install broadcom-sta-common'
Now, we need to compile the proprietary driver using ‘module-assistant’ command. This command will download packages to compile source codes on behalf of you using GNU Tools, Debian Build tools etc. Its ncurses based interface will clearly tell you what its doing. select ‘broadcom-sta’ in the wizard, ‘module-assistant’ will compile and install ‘wl’ dirver in this path ‘/lib/modules/$(uname -r)/kernel/drivers/net/wireless/wl.ko’
$ su -c'module-assistant'
Thus, in your next boot, you will get ‘eth(x)’ provided by ‘wl.ko’ properitory driver. This method is called “The Debian Way”.
Final method is so simple, Download the driver from broadcom’s website. Prepare your system to compile source codes. You can do this by installing gcc,autotools,libtool,build-essential etc., or just install and prepare ‘module-assistance’ so that your system will be fully capable to compile source codes.
$ su -c'aptitude install module-assistant' $ su -c'module-assistant prepare'
Now just extract, make and make install,
$ su -c'tar xvzf hybrid-portsrc-x86_64-v18.104.22.168.3.tar.gz' $ su -c'make' $ su -c'make install' $ su -c'echo "blacklist b44" >> /etc/modprobe.d/wl.conf' $ su -c'echo "blacklist b43legacy" >> /etc/modprobe.d/wl.conf' $ su -c'echo "blacklist b43" >> /etc/modprobe.d/wl.conf' $ su -c'echo "blacklist ssb" >> /etc/modprobe.d/wl.conf' $ su -c'depmod -aeF /boot/System.map-$(uname -r)' $ su -c'update-initramfs -u'
Finally you can see ‘wl’ driver in this path ‘/lib/modules/$(uname -r)/kernel/drivers/net/wireless/wl.ko’. In next boot you will get ‘eth(x)’ wireless interface provided by proprietary ‘wl’ driver. In this method, debian will not update this driver for the next kernel updates, you need to do it on your own. This is the main drawback in the final method.