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.
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
Make sure you apply all the patches in the debian/patches directory after applying the ubuntu-specific diff to the overall package.
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.
Unfortunately, it won’t build any longer under kernel 3.8, due to GPL API requirements…
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
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.
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
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.