Skip to content

October 3, 2013


Wireless BCM4312 with the 3.10, 3.11, 3.12 and 3.13 kernels

Broadcom Chipset BCM4312
The hybrid driver from Broadcom was updated again in September (2013) with all the previous patches and a few other fixes as well. This brings them up to support linux kernel 3.9, which is very much welcome.

Sadly it breaks again with >= 3.10 with many warnings and errors which isn’t good considering that Ubuntu (13.10) Saucy Salamander is about to be released.

We do have a patch for you though that gets us working again up to the 3.11 kernel.

Chipsets supported by “Broadcom’s IEEE 802.11a/b/g/n hybrid Linux® device driver” are: BCM4311, BCM4312, BCM4313, BCM4321, BCM4322, BCM43224, BCM43225, BCM43227 and BCM43228.

The error you will run into:

bcurtis@Aria:~/Workspace/wl.orig$ make
KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
make[1]: Entering directory `/usr/src/linux-headers-3.11.0-11-generic’
CFG80211 API is prefered for this kernel version
Using CFG80211 API
LD /home/bcurtis/Workspace/wl.orig/built-in.o
CC [M] /home/bcurtis/Workspace/wl.orig/src/shared/linux_osl.o
CC [M] /home/bcurtis/Workspace/wl.orig/src/wl/sys/wl_linux.o
/home/bcurtis/Workspace/wl.orig/src/wl/sys/wl_linux.c: In function ‘wl_tkip_printstats’:
/home/bcurtis/Workspace/wl.orig/src/wl/sys/wl_linux.c:3246:7: warning: passing argument 1 of ‘wl->tkipmodops->print_stats’ from incompatible pointer type [enabled by default]
/home/bcurtis/Workspace/wl.orig/src/wl/sys/wl_linux.c:3246:7: note: expected ‘struct seq_file *’ but argument is of type ‘char *’
/home/bcurtis/Workspace/wl.orig/src/wl/sys/wl_linux.c:3249:4: warning: passing argument 1 of ‘wl->tkipmodops->print_stats’ from incompatible pointer type [enabled by default]
wl->tkipmodops->print_stats(debug_buf, wl->tkip_ucast_data);
/home/bcurtis/Workspace/wl.orig/src/wl/sys/wl_linux.c:3249:4: note: expected ‘struct seq_file *’ but argument is of type ‘char *’
/home/bcurtis/Workspace/wl.orig/src/wl/sys/wl_linux.c: In function ‘wl_reg_proc_entry’:
/home/bcurtis/Workspace/wl.orig/src/wl/sys/wl_linux.c:3470:2: error: implicit declaration of function ‘create_proc_entry’ [-Werror=implicit-function-declaration]
if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) {
/home/bcurtis/Workspace/wl.orig/src/wl/sys/wl_linux.c:3470:22: warning: assignment makes pointer from integer without a cast [enabled by default]
if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) {
/home/bcurtis/Workspace/wl.orig/src/wl/sys/wl_linux.c:3475:16: error: dereferencing pointer to incomplete type
wl->proc_entry->read_proc = wl_proc_read;
/home/bcurtis/Workspace/wl.orig/src/wl/sys/wl_linux.c:3476:16: error: dereferencing pointer to incomplete type
wl->proc_entry->write_proc = wl_proc_write;
/home/bcurtis/Workspace/wl.orig/src/wl/sys/wl_linux.c:3477:16: error: dereferencing pointer to incomplete type
wl->proc_entry->data = wl;
cc1: some warnings being treated as errors
make[2]: *** [/home/bcurtis/Workspace/wl.orig/src/wl/sys/wl_linux.o] Error 1
make[1]: *** [_module_/home/bcurtis/Workspace/wl.orig] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.11.0-11-generic’
make: *** [all] Error 2

The rundown:

  1. Download the 32 or 64-bit version:
  2. Download the patch: wl_3.10.patch
  3. Extract the sources:
    cd ~/Downloads; mkdir -p wl; cd wl; tar xf ../hybrid-*.tar.gz
  4. Patch and compile the sources: patch -p2 < ~/Downloads/wl_3.10.patch; make; sudo make install; sudo depmod; sudo modprobe wl

Give Ubuntu a few seconds after loading the “wl” kernel module, then eventually the Network Manager will start looking for wireless networks.

TL;DR: These patches are required for a working wl kernel module for the 3.10 and 3.11 kernel series.

Update (2014-04-22): Known to also work with Raring (14.04) that uses the 3.13 kernel.

19 Comments Post a comment
  1. Jest
    Oct 10 2013

    Thank you very much.

  2. Sisyph.
    Oct 12 2013

    Thanks a lot.

  3. Peter
    Oct 22 2013

    Thanks, much appreciated. Just the job.

  4. tomasz
    Nov 11 2013

    You’re big man. Works for me. Kernel 3.10.3, debian testing (jessie)

  5. bcmuser
    Nov 18 2013

    I was wondering if this patch will (likely) work for 3.12 kernels as well. I will try once the 3.12 version of the liquorix kernel package is released.

    • chris
      Nov 22 2013

      Thanks a lot. Works for me. Kernel 3.12 from with Linux mint 13 LTS.

  6. josif
    Nov 30 2013

    Mmm…mod is loaded but network manager shows nothing. Nor does lspci. Any ideas what to look for? Wireless was working fine before 3.11 upgrade (which, btw, is a great kernel upgrade otherwise)

  7. Dec 3 2013

    thanks… its works with kernel 3.11 !

  8. Geladriet
    Jan 28 2014

    I still get thousands of these:

    [ 535.529296] ERROR @wl_cfg80211_get_station : Wrong Mac address
    [ 545.454404] ERROR @wl_cfg80211_get_station : Wrong Mac address
    [ 545.454441] ERROR @wl_cfg80211_get_station : Wrong Mac address
    [ 547.523460] ERROR @wl_cfg80211_get_station : Wrong Mac address
    [ 547.523500] ERROR @wl_cfg80211_get_station : Wrong Mac address
    [ 553.522446] ERROR @wl_cfg80211_get_station : Wrong Mac address
    [ 553.522487] ERROR @wl_cfg80211_get_station : Wrong Mac address

    Damn you broadcom!!!

  9. Sergio
    Feb 9 2014

    Thanks! Works like a charm

  10. Feb 17 2014

    I am getting a null file for the patch — is it hosted anywhere else?

    • Feb 18 2014

      Something on your end, because Google cache and two separate locations get the file without a problem.

  11. pan
    Mar 3 2014

    Thanks! It works perfectly with Arch 3.11

  12. le_mac
    Mar 8 2014

    This worked great for my Lenovo G510 laptop with Broadcom Corporation BCM43142 802.11b/g/n [14e4:4365] wireless card!
    Fedora 20 3.13.5-202.fc20.x86_64

    finally.. thanks

  13. pratheek
    Mar 30 2014

    It works for BCM4313 also. Awesome work..

  14. Dmitry
    Apr 13 2014

    ubuntu 13.10, kernel 3.13.2-031302-generic x86 best working.

  15. tvorog
    Apr 20 2014

    after upgrade ubuntu 13.10 to 14.04 i’m lost wifi drivers((
    but your patch save my internet connectrion!!!
    thank’s ;)


Trackbacks & Pingbacks

  1. Error compile wireles driver from source : Wl-sta driver linux_kernel 3.10 & 3.11 | writingwolking
  2. broadcom wireless BCM43142 does not discover all wireless networks in range - Tech Forum Network

Share your thoughts, post a comment.


Note: HTML is allowed. Your email address will never be published.

Subscribe to comments

%d bloggers like this: