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. Tarus

    You … are … the … Man!

    I run training on a stack of iMacs, but running Fedora Core 9. This has helped out considerably. Thank you so much.

  2. Dhell

    Hi I need some help, and thank you ahead of time to anyone that helps me. I got an acer 4420 I’m trying to follow your guide (I’m fairly new to linux) completed steps 1 and used the your patched driver version so I’m at step 3. Downloaded and untar’ed the file I cd into it but in step 4, something is going wrong cause I’m getting the following error:

    make: *** /lib/modules/2.6.26.6-79/fc9.i686/build: No such file or directory. Stop.

    Any help would be greatly appreciated I’m sure its just some minor detail that I’m overlooking.

  3. Chris Post author

    Dhell, this path looks wrong:

    /lib/modules/2.6.26.6-79/fc9.i686/build

    that should be:

    /lib/modules/2.6.26.6-79.fc9.i686/build

    Ensure that the above directory exists (if it doesn’t then you need to install kernel-devel and kernel-headers packages using yum) then try using this command to make the driver:

    make -C /lib/modules/2.6.26.6-79.fc9.i686/build M=`pwd`

    Let me know how you get on.

  4. Dhell

    Hey thank you for the reply, you are right I mistyped the path. However that was not the issue. I log on as root on a terminal and made sure that the directory exists which it does. However like I said I’m a noob around linux still; the build directory is on red, which I have no idea if its good or not. To make sure I got the command right this time I even copied and pasted it from your post and still gave me the same error.

    I appreciate any other ideas or comments.

  5. Dhell

    Update, donkey me I didnt realize that my kernel-devel was not installed. Only had the header so I installed that and it seems to have work I’m in the process of blacklisting atm. One thing though since I logged as root on a console and not using the su command would this affect the result anyhow? I hope not.

  6. Chris Post author

    No, it shouldn’t. But for future reference you should NEVER build software when logged in as route – you cannot trust that a Makefile or source won’t contain code that would delete your entire operating system! If you’re not root, it is safe. Only ever “become root” when you absolutely need to.

  7. Dhell

    Well I made some progress, now the wifi led actually lights up and works accordingly. Now when I go to
    System–>
    Administration–>
    Network–>
    Under network Configuration I only saw my Ethernet. So I clicked on New and the name of my wifi card was there now to select~!! got pretty excited. Completed the process and then selected it and click on Activate. That is when I got
    “Error for wireless request”Set Encode”(8B2A):
    SET failed on device eth1; invalid argument.

    Please help :/ I really want to get this thing working.

  8. Dhell

    Also when I do click activate I get a SE linux warning. That reads as follows;

    Summary
    SELinux is preventing consoletype (console_t)”read”to/var/lib/dhclient/dhclient-eth1.leases

    Do I need to allow access to this somehow?? or is just a misconfiguration??.

  9. Chris Post author

    Don’t click activate. Just ensure that “Controlled by NetworkManager” is selected, and “Activate device when computer starts” is selected.

    Then make sure you have NetworkManager and NetworkManager-gnome installed, then reboot and you should find that the network manager applet appears in the taskbar and you should be able to connect using that.

  10. Dhell

    Man thanks alot, I never thought that I would get this thing to work :) I spent days trying lol. And yeah I know about the not installing as root but I still make rookie mistakes hehe. Wish I could get your email or something. I would give you mine but dont want to post it on a public board and have more spam than I already get.

  11. Pipen

    Hey, I’m also new to linux and I’m getting the same error as Dhell

    make: *** /lib/modules/2.6.25.-14.fc9.x86_64/build: No such file or directory. Stop.

    I have kernel-devel and kernel-headers installed already.

    I’m running Fedora 9 on a MacBook 4,1

    Thanks

  12. Pipen

    I know which is the problem now, the build link in the folder is broken.

    How can I fix it?

    Thanks in advanced

  13. Pipen

    I updated the kernel and now it’s 2.6.26.6-79.fc9.x86_64

    Now when I run the make command I get a different error

    [root@localhost broadcom-patched-x86_64-5.10.27.6]# make -C /lib/modules/2.6.26.6-79.fc9.x86_64/build M=’pwd’
    make: Entering directory `/usr/src/kernels/2.6.26.6-79.fc9.x86_64′
    scripts/Makefile.build:41: /usr/src/kernels/2.6.26.6-79.fc9.x86_64/pwd/Makefile: No such file or directory
    make[1]: *** No rule to make target `/usr/src/kernels/2.6.26.6-79.fc9.x86_64/pwd/Makefile’. Stop.
    make: *** [_module_pwd] Error 2
    make: Leaving directory `/usr/src/kernels/2.6.26.6-79.fc9.x86_64′

    Thanks

  14. Chris Post author

    Pipen, you need to follow the instructions more carefully! Those are `backticks` not ‘single-quotes’ around the `pwd`.

    The full command (as per the instrucations) should just be

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

    Note: they are all backticks not single quotes!

  15. Pipen

    I’m sorry, i had no idea tha backticks were used in Linux, I have the driver working now

    Thanks a lot

  16. G-man

    Hi
    I am trying to get my wireless working on my laptop, i recently downloaded fedora 9. it is not detecting my wireless card (broadcom 4310 rev 1) and have tried anything any every thing and couldn’t get it working. this is the first time i am using linux and i am that familiar with the terminal commands. i have installed ndiswrapper, firmware,and updated the kernel but it think the problem is with installing the driver. Someone please help me i have reading posts for the past 2 days with no luck. i also followed the steps above but after step 4 i get [root@localhost broadcom-patched-x86_64-5.10.27.6]# and i dont know what to do please help!!!

Comments are closed.