Installing the Broadcom 802.11 STA driver in Fedora 9

Update 15 November 2008: Just a note to mention that I’ve packaged this up into an RPM and so this driver is now available as an RPM in the rpmfusion repos for Fedora 8, 9 and 10.

See this post for instructions of how to install using the RPM version (much easier!).

Update 26 January 2009: These instructions are now fairly outdated. The latest releases of the broadcom driver don’t require the same patches as mentioned here to make them build correctly against recent kernels. I highly recommend using the RPM installation instructions linked above, or if you require help with building the latest drivers please drop me a message or leave a comment below.

Happy, happy days! At long last, a Linux Broadcom driver for the BCM4328 chipset that doesn’t require ndiswrapper and Windows drivers. For me, this is really, really huge: ndiswrapper has never worked properly with NetworkManager using WPA security but this new Broadcom driver seems bullet-proof. It is even supposed to support 802.11n standard but I can’t verify that just yet.

The source packages currently available from Broadcom (version 5.10.27.6) don’t build on the current Fedora 9 kernel (2.6.26.5-45) and probably won’t compile on any newer kernel either. Digging around a bit I found a patch that makes the driver build successfully.

Great, but that’s not the whole story: I then found that with the new driver I was unable to SSH or telnet into any remote servers – bummer. However, some more digging turned up another patch that fixes this problem. With these two patches in place the new driver really rocks. For the first time in 10 months (since I bought my MacBook) I can actually connect to WPA secured networks using NetworkManager – no more fiddling around with wpa_supplicant scripts for me!

Anyhow, here’s a little how-to guide to install the new Broadcom driver in Fedora 9. Note: I’m a little unsure of which Broadcom chipsets this driver actually supports but I can confirm that it works beautifully with the BCM4328 which is standard on MacBook 3,1 and 4,1 versions.

Important note: Since writing this guide Broadcom have released an updated driver (v 5.10.27.11). The updated driver and updated patches can be downloaded here along with the original driver/patches mentioned in this guide. Adjust the instructions below according to the version you are using.

1) Preparation

Ensure you have the kernel-headers package installed for your current kernel (I presume you already have make and gcc etc installed):

su -
yum install kernel-headers

2) Patching the source yourself

If you want to patch the driver yourself, download the original driver file from the broadcom website here. Make sure to get the 32 or 64 bit version depending on your installed kernel. I’ve made the patches available at my Fedora 9 page so go there and grab the patches then patch the source code.

3) Using my pre-patched source (easier)

If you’re not sure how to patch the source code or just can’t be bothered, then go grab my ready-patched tarballs from my Fedora 9 page and untar them. Here’s how:

32bit users:

wget http://www.cenolan.com/fedora9/broadcom-patched-x86_32-5.10.27.6.tar.gz
tar zxvf broadcom-patched-x86_32-5.10.27.6.tar.gz
cd broadcom-patched-x86_32-5.10.27.6/

64bit users:

wget http://www.cenolan.com/fedora9/broadcom-patched-x86_64-5.10.27.6.tar.gz
tar zxvf broadcom-patched-x86_64-5.10.27.6.tar.gz
cd broadcom-patched-x86_64-5.10.27.6/

4) Building the driver

Now we’ve got our patched source building the driver kernel module is easy:

make -C /lib/modules/`uname -r`/build M=`pwd`

This should create a file called wl.ko – this is the magic driver file.

5) Install the new driver

We need to copy the new kernel module to the correct location, add wlan0 as an alias for this driver so that it loads on boot and resolve the module dependencies:

su -c "cp wl.ko /lib/modules/`uname -r`/kernel/net/wireless/
su -
echo "alias wlan0 wl" >> /etc/modprobe.conf
depmod -a

6) Blacklist conflicting drivers

This new driver suffers the same conflicts as the ndiswrapper driver so we need to blacklist the b43, ssb, and bcm43xx drivers, as well as the ndiswrapper driver:

su -
echo "blacklist bcm43xx" >> /etc/modprobe.d/blacklist
echo "blacklist ssb" >> /etc/modprobe.d/blacklist
echo "blacklist b43" >> /etc/modprobe.d/blacklist
echo "blacklist ndiswrapper" >> /etc/modprobe.d/blacklist

7) Remove the old module and activate the new one

su -
rmmod bcm43xx; rmmod b43; rmmod b43legacy; rmmod ndiswrapper
modprobe ieee80211_crypt_tkip; modprobe wl

8) All done!

Reboot, or restart NetworkManager and you’ve hopefully got the new driver installed.

Say hello to faster and more robust connections, and say goodbye to ndiswrapper and crappy badly supported Windows drivers!

References

Broadcom 802.11 Linux STA driver at FedoraForum.org

Broadcom 802.11 Linux STA driver at broadcom.com

*OFFICIAL* Broadcom Linux driver BCM4312 at jomcode.com

Broadcom driver for 4328 b/g/n wireless device at ubuntuforums.com

Bug #259816 wl: telnet/ssh connections blocked when going through NAT to external sites at launchpad.net

Fedora 9 fixes and files for MacBook 3,1 and 4,1 (Santa Rosa)

34 thoughts on “Installing the Broadcom 802.11 STA driver in Fedora 9

  1. Charl

    Hi

    Wonder if you can assist. I see the following when I do this make -C /lib/modules/`uname -r`/build M=`pwd`
    make: Entering directory `/usr/src/kernels/2.6.18-92.1.18.el5-x86_64′
    LD /d01/downloads/hybrid_wl/built-in.o
    CC [M] /d01/downloads/hybrid_wl/src/wl/sys/wl_linux.o
    In file included from /d01/downloads/hybrid_wl/src/wl/sys/wl_linux.c:33:
    /d01/downloads/hybrid_wl/src/include/typedefs.h:83: error: conflicting types for ‘bool’
    include/linux/types.h:36: error: previous declaration of ‘bool’ was here
    make[1]: *** [/d01/downloads/hybrid_wl/src/wl/sys/wl_linux.o] Error 1
    make: *** [_module_/d01/downloads/hybrid_wl] Error 2
    make: Leaving directory `/usr/src/kernels/2.6.18-92.1.18.el5-x86_64′

    Thanks
    Charl

  2. alexserver

    Dude !!
    you’re such genius !!!
    I had to recompile my own kernel in ubuntu for other reasons, so restricted modules didn’t work, untill a friend told me about your post.
    this works like a charm in my new ubuntu 8.10 !!!
    thanks !!!!

  3. heinzrothe

    hi, @Charl Says,

    got same problem; found only one solution, broadcom didnt react to any of my questions -> // vi src/include/typedefs.h // delete ifdef // (the complete line), and run command again ;-)

  4. heinzrothe

    Nachtrag: please delete the bool definition in src/include/typedefs.h // typedef unsigned char bool // and it works ;-)

  5. Mike Traum

    Many thanks! I’m running Fedora Core 9 on a Dell Latitude E6500 which has a Broadcom BCM432b. I’ve been using the hybrid_wl driver with the patch for compilation, but having been banging my head on the wall for quite some time trying to figure out why ssh wasn’t working…

  6. Mike Traum

    I just installed the latest version of the driver from broadcom (5.10.27.14 ). It required no patch to compile on Fedora Core 9, kernel 2.6.27.9-73.fc9.i686.PAE (although there were warnings) and no patch for the ssh vlan_mode mode issue.

  7. Chris Post author

    @Mike Traum

    I mentioned in the two updates right at the top of the post that the patches are no longer needed. I also mention that you might save yourself the time/trouble of building it and just install the RPM that I have released at rpmfusion.org!

  8. jpkumar10

    Hi,
    I am new to liunx. I want to learn linux. I have installed linux on my macbook 2.0 GHz.
    I am having trouble in enabling my wireless and trackpad. I have followed the stepts you had given us.
    I get the same error
    [pradeep@localhost 2.6.27.15-78.2.23.fc9.i686]$ make -C /lib/modules/`uname -r`/build M=`pwd`
    make: *** /lib/modules/2.6.27.15-78.2.23.fc9.i686/build: No such file or directory. Stop.
    I am even having trouble my track pad. It took 15 min to type this message . I have follwed the steps given on
    https://help.ubuntu.com/community/SynapticsTouchpad#shmconfig.p.
    I am even having trouble my track pad. It took 15 min to type this message . I have fol
    as I was getting shmconfig error.
    please help me out in both the cases

  9. Pingback: Configuring wireless networking on Fedora 9 - FatFrame.com

  10. Tim

    Thanks!!

    This did the trick and I now have wireless after days of pain.

    Note that instruction #5 is missing a set of double quotes at the end of the first line and should read:
    su -c “cp wl.ko /lib/modules/`uname -r`/kernel/net/wireless/

    HP Pavilion dv6818ca (dv6700)
    Broadcom BCM 4312

Comments are closed.