If you have a Broadcom wireless chipset BCM4311, BCM4312, BCM4321, or BCM4322 it will not work with Ubuntu Karmic after an upgrade or an install.

To get it working, you need to install the STA driver. You can get it from the Broadcom site:


Follow the instructions in the README.txt file which is on same page.

After you have finished installing it the wireless will work, but only until the next reboot. To make this permanent follow these steps:

1. Run:

sudo rmmod ssb

For some reason you cannot blacklist the ssb module. It always runs on boot even if it is in the blacklist.conf file.
After that you need to run this to get rid of the ssb module permanently:

sudo update-initramfs -u

2. Now that we got rid of ssb, we need to make sure that lib80211 is loaded on boot. To do that add lib80211 to the end of the /etc/modules file:

echo "lib80211" | sudo tee -a /etc/modules

I went ahead and added wl to it as well:

echo "wl" | sudo tee -a /etc/modules

So the /etc/modules file looks like this:

# /etc/modules: kernel modules to load at boot time.
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

3. Now we need to make sure that “insmod wl.ko” as specified in the README.txt file runs every time we boot. There might be a better way to do this but I just added it to the /etc/rc.local file.

Before I did this I copied the wl.ko file to the /lib/modules/2.6.31-14-generic/kernel/lib directory. This way we can get rid of the source files we downloaded from the Broadcom site along with the binaries we compiled and not worry about losing the wl.ko file:

sudo cp wl.ko  /lib/modules/2.6.31-14-generic/kernel/lib

Then add the line “insmod /lib/modules/2.6.31-14-generic/kernel/lib/wl.ko” at the end of the rc.local file, right above the exit 0 line:

sudo gedit /etc/rc.local

Here is how the rc.local file looks:

cat /etc/rc.local

#!/bin/sh -e
# rc.local
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
# In order to enable or disable this script just change the execution
# bits.
# By default this script does nothing.

insmod /lib/modules/2.6.31-14-generic/kernel/lib/wl.ko
exit 0

4. Last step is to pin down the linux kernel so that we don’t upgrade the kernel accidentally along with the other updates:

System -> Administration -> Synaptic Package Manager

Then click on the “Status” button and select “Installed”. Then search for “linux-“. Select all packages that start with “linux-” and then Package -> Lock Version.

Broadcom Wireless Chipset (BCM4311, BCM4312, BCM4321, and BCM4322) on Ubuntu Karmic.

9 thoughts on “Broadcom Wireless Chipset (BCM4311, BCM4312, BCM4321, and BCM4322) on Ubuntu Karmic.

  • December 25, 2009 at 8:09 pm

    Works great!

    For any noobs out there who have trouble, preface EVERY command with “sudo”, because it enables root permissions (Administrator permissions, in Windows talk)

    Also, if an echo command doesn’t work, use “sudo gedit (filename)” and it will open it up in a text editor for you, so you can then “echo” the line you want.

    Works perfectly! Without a doubt, the easiest thing I’ve come across to follow when it comes to installing my wireless driver!

  • January 1, 2010 at 8:49 pm

    Thank you so much! This was the exact problem I was having and your explanation made it very easy for a noob like me.

  • January 21, 2010 at 7:59 am

    Looks very easy to follow, good for a nub like me 😛

  • January 22, 2010 at 3:31 pm

    To fix the problem connect the machine to Internet with cable, open the terminal (applications>accessories>terminal) and run the following commands:

    $ sudo apt-get –purge remove b43-fwcutter
    $ sudo reboot

    The machine will reboot here. After it’s back on again execute the next two commands in terminal:

    $ sudo apt-get install b43-fwcutter # IMPORTANT: Confirm firmware download when asked
    $ sudo reboot

    Reboots may not be necessary, but do them just to be on the safe side. After the second reboot you should be able to connect to the wireless network.

  • January 22, 2010 at 7:57 pm

    @ dejuren,

    I am not sure how uninstalling and installing exactly the same package will do anything…

    If anyone tries this, please post a reply to confirm.

  • February 17, 2010 at 12:25 pm

    @ dimitar, (jan 22 2010)
    I have tried uninstalling & reinstalling using the driver manager & it turns the WiFi on till next reboot.
    I am trying the rest of what he suggests….

    And it works..
    I skipped the download from broadcom, because mine already had the driver somehow.
    I can tell you what I did that told me this. Go to administration> Hardware drivers. It showed that i had the drivers, but they where not showing up as ‘in use’. I found the wl.ko file by running sudo find / -name wl.ko and copying that to the path he suggested & I edited the RC.local as he suggested, for now I think that should fix me. SO yes, he is right & Thank you sir for this guide!

  • Pingback:Broadcom BCM4322 Wireless On Ubuntu Karmic Rants of a mobile dev

  • March 21, 2010 at 9:05 pm

    download b43-fwcutter deb and wl_apsta.o. than

    sudo apt-get install b43-fwcutter (NO for fetch and install firmware)

    sudo b43-fwcutter -w /lib/firmware wl_apsta.o

    modprobe -r b43

    modprobe b43


  • Pingback:HP – Pavilion dv4 -1283cl – Ubuntu / Linux internet issue – RESOLVED » Blogs and Tech docs

Leave a Reply

Your email address will not be published. Required fields are marked *