Friday, August 19, 2011

A quick and dirty HOWTO for getting Broadcom wifi drivers running on Fedora

This is mainly so I remember exactly how to do it since it is a headache :)  Most of this information comes from http://www.broadcom.com/docs/linux_sta/README.txt which has a different procedure that didn't work for me.
NOTE: I would strongly suggest keeping the source directory after you have finished the steps below because you will need to recompile and re-install the module every time the kernel is updated.

1. Download the source for the driver from: http://www.broadcom.com/support/802.11/linux_sta.php
NOTE: There is also a Patch for compilation problem with kernel versions > 2.6.37
NOTE 2: The patch doesn't seem to want to apply cleanly, but since it's only one line that needs to be changed it's not a headache to make the change manually.

2. After extracting the .tgz, but before compiling the source, the include/linuxver.h file needs to be modified.
Add a new line at the end of the file: MODULE_LICENSE("GPL");
Reason: At least with Fedora Core 15 (what I'm using) the kernel will not load tainted modules and this fixes that problem by making the kernel think that this module uses GPL licensed source code.  The code isn't really GPL licensed, but it's not a problem as long as you're not distributing it.

2a. Compile and install the module: make ; make install

3. For all Linux distros it is necessary blacklist Broadcom modules that may be present in your distribution so they will not be loaded when Linux is starting up.  Depending on your distro the exact method may vary, but for FC15 I created /etc/modprobe.d/broadcom-wl-blacklist.conf of which the contents are:

# modules blacklisted for broadcom-wl
blacklist bcm43xx
blacklist ssb
blacklist b43
blacklist ndiswrapper

4. At this point I suggest rebooting (or you could take the long road and unload all the above modules manually).

5. Run: depmod ; modprobe wl

You should now see your wifi card listed when you do ifconfig -a