Better wireless drivers for the bcm4331

So as of the other day, I found the solution to the last of my troubles regarding running Linux on my mid-2012 15″ Retina MacBook Pro – namely, that the wireless drivers were incredibly flakey and would drop randomly and frequently.

Basically, there are two major wireless drivers available for Linux for the Broadcom chipsets; the b43 drivers which are in the upstream kernel, and the broadcom-wl STA drivers. The b43 drivers work fairly well, but don’t implement power management for the bcm4331 and so can frequently/randomly drop. On the other side of the fence, there’s Broadcom’s Linux driver page. However, you’d be forgiven for thinking that Broadcom hasn’t released new drivers in over 2 years, right? And as a result, the currently available drivers don’t support the bcm4331? Wrong. Turns out Ubuntu managed to get newer drivers out of Broadcom in December.

Anyway, one of the major features of the new driver in the December release (version 6.2.155.19) is that it supports the bcm4331 found in the newer MacBook Pro models, amongst other computers. So if you just download the source (I used apt-get source bcmwl on a 13.04 machine), it will compile on pretty much any modern kernel and seems to work fine. For reference, I’m using it now on Fedora 17 running kernel 3.7.9. It even suspends/resumes fine.

8 thoughts on “Better wireless drivers for the bcm4331

  1. Just wondering how you built this on Fedora? When trying to build it from the Ubuntu .orig.tar.gz I get:

    tar xzf bcmwl_6.20.155.1+bdcom.orig.tar.gz
    [alex@alpha Downloads]$ cd bcmwl-6.20.155.1+bdcom/
    [alex@alpha bcmwl-6.20.155.1+bdcom]$ make
    KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
    make[1]: Entering directory `/usr/src/kernels/3.8.2-206.fc18.x86_64′
    CFG80211 API is prefered for this kernel version
    Using CFG80211 API
    LD /home/alex/Downloads/bcmwl-6.20.155.1+bdcom/built-in.o
    make[2]: *** No rule to make target `/home/alex/Downloads/bcmwl-6.20.155.1+bdcom/src/shared/linux_osl.o’, needed by `/home/alex/Downloads/bcmwl-6.20.155.1+bdcom/wl.o’. Stop.
    make[1]: *** [_module_/home/alex/Downloads/bcmwl-6.20.155.1+bdcom] Error 2
    make[1]: Leaving directory `/usr/src/kernels/3.8.2-206.fc18.x86_64′
    make: *** [all] Error 2

  2. Thank you so much for this… I’ve been using the b43 driver for half a year now and it was driving me crazy. This one is soooo much faster and I can finally use 5GHz again. So far it seemed stable too. Can’t believe I missed that since December.

    • Seems to work for me…?

      [george@aluminium ~]$ modinfo wl
      filename: /lib/modules/3.8.3-103.fc17.x86_64/kernel/drivers/net/wireless/wl.ko
      license: MIXED/Proprietary
      alias: pci:v*d*sv*sd*bc02sc80i*
      depends: cfg80211,lib80211
      vermagic: 3.8.3-103.fc17.x86_64 SMP mod_unload

  3. Also of interest: Rafał Miłecki has submitted a whole heap of patches to implement HT-PHY power management support (amongst other things) in the b43 driver, so hopefully once those land the b43 driver will become viable for bcm4331. I don’t know if the patches implement support for 5GHz, though.

  4. any help for installing the driver in Fedora 18 kernel 3.8.4?
    I get
    [user@user-macbook-pro bcmwl-6.20.155.1+bdcom]$ make
    KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
    make[1]: Entering directory `/usr/src/kernels/3.8.4-202.fc18.x86_64′
    CFG80211 API is prefered for this kernel version
    Using CFG80211 API
    make[2]: *** No rule to make target `/home/user/Downloads/bcmWIRELESS_MAC/bcmwl-6.20.155.1+bdcom/src/shared/linux_osl.o’, needed by `/home/user/Downloads/bcmWIRELESS_MAC/bcmwl-6.20.155.1+bdcom/wl.o’. Stop.
    make[1]: *** [_module_/home/user/Downloads/bcmWIRELESS_MAC/bcmwl-6.20.155.1+bdcom] Error 2
    make[1]: Leaving directory `/usr/src/kernels/3.8.4-202.fc18.x86_64′
    make: *** [all] Error 2

  5. Thank you for writing this post. I’m on Debian and was almost going to give up when I found this. Compiling the source deb in the linked bug solved the problem for me.

Leave a Reply

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

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>