Monthly Archives: August 2009

Broadcom Wifi Card – Making it work with Free Software

Till now I have been cursing myself for not being informed enough to buy a laptop which has a wifi card that can run entirely on Free Software. The Acer Aspire 4710z has a Broadcom Corporation BCM4311 802.11b/g WLAN (rev 01) card. I have been using the wifi card with the Free b43 driver together with non-free firmware. All of this changed when i decided to rant about my misfortunes with the wifi card on #gnewsense on freenode. gnufs on #gnewsense pointed me to http://leorockway.wordpress.com/2009/07/04/0c00-0-network-controller-broadcom-corporation-bcm4311-802-11bg-wlan-rev-01-take-two/ .  There, I came to know about OpenFWWF , a project “that provides an open source firmware for Broadcom/AirForce chipset based devices”.

The first link above lists steps on how to make the Broadcom wifi card work with the Free firmware under gNewSense. I tried to follow the steps to configure the card under Debian squeeze (presently testing) and it finally worked after I read some debian bug reports as well. The steps I followed are as follows:

Install kernel 2.6.30 from Debian Backports (Currently Squeeze has 2.6.26)

  • Add “deb http://www.backports.org/debian/ lenny-backports main contrib non-free” to /etc/apt/sources.list
  • aptitude install linux-image-2.6.30-bpo.1-686 (specific pkg name and version may change with time)

Build and install b43-asm (Tool to compile/assemble the firmware from their source code (b43-asm is not in the Debian repo at the time of writing this article)

  • svn co svn://svn.berlios.de/fullstory/b43-asm/trunk b43-asm-debian
  • cd b43-asm
  • debuild -i -us -uc -b –lintian-opts -i  (this builds the .deb package from the source tree. Just running debuild without any options gives some gpg key error)
  • dpkg -i <name of the deb package built in the above step>

Build and install the openfwwf firmware from its source

  • svn co svn://svn.berlios.de/fullstory/openfwwf/trunk openfwwf-debian
  • cd openfwwf-debian
  • debuild -i -us -uc -b –lintian-opts -i
  • dpkg -i <name of the deb package built in the above step>. This installs the Free Software firmwares under /lib/firmware/b43-open/ .

OpenFWWF currently does not support hardware encryption and QOS yet. To force these module options automatically, it is recommended to install a module-init-tools override /etc/modprobe.d/openfwwf.conf containing the following line:

  • options b43 nohwcrypt=1 qos=0

Or, just copy the corresponding example /usr/share/doc/openfwwf/examples/openfwwf.conf
to /etc/modprobe.d/openfwwf.conf

Once the Free Firmware is installed, you can remove the previous non-free firmware from /lib/firmware/ directory. Now reboot the machine to see if everything has gone OK or not. On my machine, after rebooting, when i do:

dmesg | grep firmware , I get the following output:

[   34.301153] b43 ssb0:0: firmware: requesting b43/ucode5.fw
[   34.484276] b43 ssb0:0: firmware: requesting b43-open/ucode5.fw
[   34.602878] b43 ssb0:0: firmware: requesting b43-open/pcm5.fw
[   34.609582] b43 ssb0:0: firmware: requesting b43-open/b0g0initvals5.fw
[   34.627897] b43 ssb0:0: firmware: requesting b43-open/b0g0bsinitvals5.fw
[   34.717116] b43-phy0: Loading OpenSource firmware version 410.31754 (Hardware crypto not supported)

Which shows that everything went ok and that I am now using the Free firmware.

One more non-free component removed!! Yay!!! /

My thanks goes to people on #gnewsense (gnufs, graziano and all the others), the OpenFWWF developers and everyone in the Free Software Community.

Important links:

Note: lspci says my wifi card is: 03:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 01)