Again: Broadcom Wireless BCM43224, Ubuntu

Update 2013-02-27: This solution on Ask Ubuntu is much better, because it includes properly packaged things that should update when you upgrade Ubuntu.

Update 2012-10-24: The patch is no longer available on Broadcom’s website, but it can be found here. Also, you may also need this patch now too.

Once again, I find that my Broadcom wireless card is not working. I don’t know how long this has been going on—I’m normally wired.

Mode of Failure

I have no wireless. Wireless is not displayed under Network Manager. My wireless card does not have an associated interface. iwconfig shows this:

$ iwconfig lo no wireless extensions. eth0 no wireless extensions. 

Also, lshw shows *-network UNCLAIMED for the wireless card.

Solution

I tried rebuilding the driver provided by Broadcom. The build succeeded, but modprobe wl still failed like so:

$ sudo modprobe wl FATAL: Module wl not found. FATAL: Error running install command for wl 

But the .ko file existed at the correct place:

$ locate wl.ko /lib/modules/3.0.0-12-generic/kernel/drivers/net/wireless/wl.ko . . 

Finally, I found a solution here. By running sudo depmod -a, I could then sudo modprobe wl and my wireless started working again.

I don’t know if it was necessary for me to get the latest drivers from Broadcom or if the version Ubuntu packaged would have worked. But my wireless is working again now.

This entry was posted in short and tagged , , , , . Bookmark the permalink.

4 Responses to Again: Broadcom Wireless BCM43224, Ubuntu

  1. lightpriest says:

    I had the same problem and investigated a solution for it. Here are my results:

    The kernel supplied with Ubuntu 11.10 is loading the module bcma instead of wl.
    The packages bcmwl-kernel-source doesn’t include “blacklist bcma” in the modprobe blacklist file that it generates.
    lspci -v shows which driver is loaded per hardware (and which applies).
    If you put ‘blacklist bcma’ in /etc/modprobe.d/blacklist-custom.conf that should solve this for good.

    That solution is good, but not the best. I don’t recommend the driver that comes from Broadcom. I cannot get it to recognize wireless networks after sleep (must reboot), and it works really slow.

    The real solution is already inside the kernel. There’s a driver called brcm80211, containing the module brcmsmac, the problem is that for kernels prior to 3.1 it doesn’t handle 0x0576, which is what we have.
    It only handles 43224 of ID 0x4353.

    You can have a look on PCI IDs list on both of these links.
    Kernel 3.0: http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=blob;f=drivers/staging/brcm80211/brcmsmac/wl_mac80211.c;h=aa0d127427912531a21f54cfcf447c3a2236764a;hb=e9d23be2708477feeaec78e707c80441520c1ef6
    Kernel 3.1: http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=blob;f=drivers/staging/brcm80211/brcmsmac/mac80211_if.c;h=3cb92fc0391a962d33d40ae411dd4550e05f0510;hb=9bb1282f6a7754955c18be912fbc2b55d133f1b9

    In my tries, I recompiled the kernel that ships with ubuntu (3.0.0-15) adding the necessary code to brcmsmac and it works flawlessly. An easier solution to use brcmsmac would be to install the packaged Kernel 3.1, though I didn’t try that one.

  2. Yvonne says:

    Love the blog

  3. Stuart Guardia says:

    Wow, I like the way you put that.

  4. Adriana says:

    thanks for share!