Skip to content

November 14, 2011

47

Wireless BCM4312 3.2 kernel

Broadcom Chipset BCM4312

Since there is an Ubuntu package ‘firmware-b43-lpphy-installer’ which is up to date and will work against the 3.0 kernel, my earlier posts are obsolete. If you are not running Ubuntu, then you will still need to reference my post.

The latest 3.2 Linux kernel however has a few ABI changes, most notably in the network stack which effects the Broadcom’s wl module. Most notably is: .ndo_set_multicast_list which was replaced with .ndo_set_rx_mode.


My specific chipset from lspci command:

Broadcom Corporation BCM4312 802.11b/g LP-PHY (rev 01)

Below is the error I get with v5_100_82_38 from Broadcom when compiling against Linux kernel 3.2:

[email protected]:~/Downloads/wl$ sudo make
KBUILD_NOPEDANTIC=1 make -C /lib/modules/3.2.0-030200rc1-generic/build M=`pwd`
make[1]: Entering directory `/usr/src/linux-headers-3.2.0-030200rc1-generic’
LD /home/bcurtis/Downloads/wl/built-in.o
CC [M] /home/bcurtis/Downloads/wl/src/shared/linux_osl.o
CC [M] /home/bcurtis/Downloads/wl/src/wl/sys/wl_linux.o
/home/bcurtis/Downloads/wl/src/wl/sys/wl_linux.c:326:2: error: unknown field ‘ndo_set_multicast_list’ specified in initializer
/home/bcurtis/Downloads/wl/src/wl/sys/wl_linux.c:326:2: warning: initialization from incompatible pointer type [enabled by default]
/home/bcurtis/Downloads/wl/src/wl/sys/wl_linux.c:326:2: warning: (near initialization for ‘wl_netdev_ops.ndo_validate_addr’) [enabled by default]
make[2]: *** [/home/bcurtis/Downloads/wl/src/wl/sys/wl_linux.o] Error 1
make[1]: *** [_module_/home/bcurtis/Downloads/wl] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.2.0-030200rc1-generic’
make: *** [all] Error 2

To get your wireless adapter working again:

  1. Download this patch: bc_wl_abiupdate.patch
  2. patch -p0 src/wl/sys/wl_linux.c < bc_wl_abiupdate.patch
  3. sudo 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.

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

47 Comments Post a comment
  1. Dec 2 2011

    Hello there,

    I’m very interested in the patch for the wl_linux.c file – but I get a 403 Forbidden.

    Can you assist?

    Thank you very much in advance.

    Reply
  2. arke
    Dec 3 2011

    The link/patch works for me, server hiccup? The patch does exactly what he describes in his post, rename .ndo_set_multicast_list to .ndo_set_rx_mode.

    You could do it like this:

    sed -i s/ndo_set_multicast_list/ndo_set_rx_mode/g wl_linux.c

    Reply
  3. Alex Rasmussen
    Dec 5 2011

    Works for me too, now.. Must have been a transient error.

    Reply
    • Dec 5 2011

      There was a permission problem with patch (and other text) files after doing a site-wide permission change.

      Sorry for the inconvenience.

  4. Gery
    Jan 26 2012

    Thanks!. The patch did the trick. Since I’m using suse tumbleweed I suppose I should keep an eye on the kernel changes to recompile the module.

    Reply
  5. frank
    Jan 30 2012

    hi, how come I get this error?

    patching file src/wl/sys/wl_linux.c
    Hunk #1 FAILED at 332.
    1 out of 1 hunk FAILED — saving rejects to file src/wl/sys/wl_linux.c.rej

    thanks!

    Reply
    • Jan 31 2012

      Easy way to find out is to try to compile it without the patch. If that fails with the error message described above, then you can manually search for the ‘.ndo_set_multicast_list’ and set it to ‘.ndo_set_rx_mode’ but this only applies to kernels >= 3.2

      Good luck! 🙂

    • Ghost
      May 5 2012

      Hi,

      The patch assumes its in the root directory of the Broadcom source. Put the patch file in the same directory as the make file then do step 2.

  6. Fandy
    Feb 24 2012

    Hello, i get problem wireless not work after update kernel ubuntu 11.10 to 3.2
    Can you help me? :((
    this is my wireless adapter

    Broadcom Corporation BCM4312 802.11b/g LP-PHY (rev 01)

    Reply
  7. joe
    Mar 6 2012

    thanks

    Reply
    • joe
      Mar 6 2012

      Can you help a bit more? My patched wl module is loaded (per lsmod), but network-manager isn’t recognizing anything. This is under gnome-shell and fallback/classic. ifconfig doesn’t list it either, and I’m not very good at enabling the wlan through bash. I’m running 11.10 on 3.2.0-18.

      Am I missing something? Thanks!

    • Apr 2 2012

      You’re not missing anything, if the module is loaded then you should see something in your dmesg like this:

      [ 5.160625] wl: module license ‘MIXED/Proprietary’ taints kernel.
      [ 5.160630] Disabling lock debugging due to kernel taint
      [ 5.177125] wl 0000:06:00.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19
      [ 5.177140] wl 0000:06:00.0: setting latency timer to 64

      if you do not see something like above, then I’m afraid you do not have same hardware. I hope that helps.

  8. Juha
    Apr 28 2012

    Is the patch also supposed to make bluetooth work? For me it didn’t. hcitool dev shows the device, but hcitool scan does not find other bluetooth devices. When I toggle Wifi/Bluetooth hardware switch, I get the lines below to syslog.

    Any ideas?

    —————————————————————————————————

    Apr 28 11:18:34 siika kernel: [ 334.803859] usb 6-1: New USB device found, idVendor=0a5c, idProduct=21e3
    Apr 28 11:18:34 siika kernel: [ 334.803873] usb 6-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    Apr 28 11:18:34 siika kernel: [ 334.803883] usb 6-1: Product: BCM20702A0
    Apr 28 11:18:34 siika kernel: [ 334.803890] usb 6-1: Manufacturer: Broadcom Corp
    Apr 28 11:18:34 siika kernel: [ 334.803897] usb 6-1: SerialNumber: 60D819DEA74C
    Apr 28 11:18:34 siika bluetoothd[1718]: HCI dev 0 registered
    Apr 28 11:18:34 siika bluetoothd[1718]: Listening for HCI events on hci0
    Apr 28 11:18:34 siika mtp-probe: checking bus 6, device 3: “/sys/devices/pci0000:00/0000:00:16.0/usb6/6-1”
    Apr 28 11:18:34 siika mtp-probe: bus: 6, device: 3 was not an MTP device
    Apr 28 11:18:34 siika bluetoothd[1718]: HCI dev 0 up
    Apr 28 11:18:34 siika bluetoothd[1718]: Proximity GATT Reporter Driver: Operation not permitted (1)
    Apr 28 11:18:34 siika bluetoothd[1718]: sap-dummy interface org.bluez.SimAccessTest init failed on path /org/bluez/test
    Apr 28 11:18:34 siika bluetoothd[1718]: Sap driver initialization failed.
    Apr 28 11:18:34 siika bluetoothd[1718]: sap-server: Operation not permitted (1)
    Apr 28 11:18:34 siika bluetoothd[1718]: Unable to load keys to adapter_ops: Function not implemented (38)
    Apr 28 11:18:34 siika bluetoothd[1718]: Adapter /org/bluez/1718/hci0 has been enabled

    Reply
    • Apr 30 2012

      The patch is only for broadcom wireless, your bluetooth issue is unrelated. You should investigate the “sap-server: Operation not permitted (1)” issue and why the Sap driver failed to initialize. Good luck!

  9. Juha
    Apr 30 2012

    I got the bluetooth problem solved by adding

    [General]

    Enable=Socket

    in /etc/bluetooth/audio.conf.

    Wifi has worked on my 3.2 laptop without the patch.

    Reply
  10. May 19 2012

    Hi !
    I’ve never really had problems, until the last update with kernel 2.6.43.5-2.fc15.x86_64 (fedora 15)
    Thank you dude. You solved my problem in 5 minuts 🙂
    That’s why I enjoy so much linux communities.
    Thanks again !

    Reply
  11. May 31 2012

    Hi! I don’t have this path in my notebook (/src/wl/sys), but I tried to search for wl_linux.c in nautilus, and it is in /proc/3051/cwd/src/wl/sys , but isn’t there that the patch need to be, right? Could you tell me where to paste the patch? Thanks!

    Reply
    • Jun 4 2012

      You have to download the driver first:
      http://www.broadcom.com/support/802.11/linux_sta.php

    • Jun 8 2012

      Oh, of course, thanks! So I did the patch and could install the driver.
      I was trying to do that because this driver is consuming too much battery. While I download some files powertop shows me that:

      discharge rate: 39.9 W
      wakeups/second: 646,3

      Power est. Usage Events Category Description
      5.53 W 144057 pkts/s Device Interface de rede: eth1 (wl)

      I think that recompiling the driver would decrease that. Do you have any suggestions? Thank you!

  12. Andrea Giardini
    Jun 28 2012

    Saved my life! 🙂 Thanks a lot!

    Reply
  13. Jun 29 2012

    It works for my brcm4313, thanks a lot.

    Reply
  14. Aug 14 2012

    Hi bret!
    I have debian sid kernel 3.2.0 amd46.

    When i try to ‘make’ the system reports me this error:
    “KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
    make: *** /lib/modules/3.2.0-2-amd64/build: FIle or Directory doesn’t exists. Stop.
    make: *** [all] Error 2”

    I google a little bit trying to find some answer, but found none.

    I have linux-source, linux-header, build-essential packages installed.

    Please help me out! thanks!

    Reply
  15. Manotethiha
    Sep 14 2012

    Thank you for your help. Best help ever had. Keep it going 🙂

    Reply
  16. Magda
    Sep 17 2012

    Great ! works 4 me very well. Tnx.

    Reply
  17. Don
    Dec 20 2012

    Thank you for your post…

    I am running backtrack 5 R3 on Vmware fusion on mac book pro. I have enabled B43 on backtrack. i have a kernel 3.2.6. I was able to download and install with the patch for 3.2 without errors. But i still get the message “Wireless extension is the only possible API for this kernel version. Using wireless extension API”. There was no error and the file wl.ko was installed.

    I use a BCM 4313 ..

    : /etc/init.d/networking start doesnt start my network

    Kindly advise please

    Reply
    • Dec 20 2012

      If the wl module loads, and you can see it in ‘dmesg’ and as a loaded module with ‘lsmod’ then I cannot help you. At this point, it has something to do with your setup and I have no experience with Mac nor VMware Fusion. Sorry!

  18. Don
    Dec 20 2012

    Below are the response i got ….

    [email protected]:~/Downloads/wl# tar xvf hybrid-portsrc_x86_64-v5_100_82_112.tar.gz
    Makefile
    lib/
    lib/wlc_hybrid.o_shipped
    lib/LICENSE.txt
    src/
    src/include/
    src/include/proto/
    src/include/proto/802.11.h
    src/include/proto/bcmeth.h
    src/include/proto/bcmevent.h
    src/include/proto/802.1d.h
    src/include/proto/ethernet.h
    src/include/proto/ieee80211_radiotap.h
    src/include/proto/wpa.h
    src/include/bcmutils.h
    src/include/packed_section_start.h
    src/include/pcicfg.h
    src/include/packed_section_end.h
    src/include/typedefs.h
    src/include/bcmendian.h
    src/include/bcmdefs.h
    src/include/epivers.h
    src/include/bcmwifi.h
    src/include/bcmcdc.h
    src/include/linux_osl.h
    src/include/linuxver.h
    src/include/wlioctl.h
    src/include/osl.h
    src/shared/
    src/shared/linux_osl.c
    src/wl/
    src/wl/sys/
    src/wl/sys/wlc_ethereal.h
    src/wl/sys/wl_export.h
    src/wl/sys/wl_iw.c
    src/wl/sys/wl_linux.h
    src/wl/sys/wl_dbg.h
    src/wl/sys/wl_cfg80211.c
    src/wl/sys/wl_cfg80211.h
    src/wl/sys/wlc_pub.h
    src/wl/sys/wl_linux.c
    src/wl/sys/wlc_key.h
    src/wl/sys/wlc_types.h
    src/wl/sys/wl_iw.h
    [email protected]:~/Downloads/wl# patch -p0 src/wl/sys/wl_linux.c < bc_wl_abiupdate.patch
    patching file src/wl/sys/wl_linux.c
    Hunk #1 succeeded at 388 (offset 56 lines).
    [email protected]:~/Downloads/wl# sudo make
    KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
    make[1]: Entering directory `/usr/src/linux-source-3.2.6'
    Wireless Extension is the only possible API for this kernel version
    Using Wireless Extension API
    LD /root/Downloads/wl/built-in.o
    CC [M] /root/Downloads/wl/src/shared/linux_osl.o
    CC [M] /root/Downloads/wl/src/wl/sys/wl_linux.o
    CC [M] /root/Downloads/wl/src/wl/sys/wl_iw.o
    CC [M] /root/Downloads/wl/src/wl/sys/wl_cfg80211.o
    LD [M] /root/Downloads/wl/wl.o
    Building modules, stage 2.
    Wireless Extension is the only possible API for this kernel version
    Using Wireless Extension API
    MODPOST 1 modules
    WARNING: modpost: missing MODULE_LICENSE() in /root/Downloads/wl/wl.o
    see include/linux/module.h for more information
    CC /root/Downloads/wl/wl.mod.o
    LD [M] /root/Downloads/wl/wl.ko
    make[1]: Leaving directory `/usr/src/linux-source-3.2.6'
    [email protected]:~/Downloads/wl# sudo make install
    install -D -m 755 wl.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless/wl.ko
    [email protected]:~/Downloads/wl# sudo depmod
    [email protected]:~/Downloads/wl# sudo modeprobe wl
    sudo: modeprobe: command not found
    [email protected]:~/Downloads/wl# sudo modeprob wl
    sudo: modeprob: command not found
    [email protected]:~/Downloads/wl# sudo modprobe wl

    Your help will be appreciated

    Reply
    • May 10 2013

      Wireless Extension is the only possible API for this kernel version
      Using Wireless Extension API
      MODPOST 1 modules
      WARNING: modpost: missing MODULE_LICENSE() in /root/Downloads/wl/wl.o
      see include/linux/module.h for more information

      You can ignore this according to broadcom readme.txt, what you want is wl.co file. More information please refer to http://www.broadcom.com/docs/linux_sta/README.txt

  19. Óscar
    Mar 12 2013

    Thank you.
    It works for me on my problmatic HPMini 110-1020LA

    Reply
  20. zare
    Mar 14 2013

    Thanks a lot it’s work for me DELL vostro 1015 BCRM 4322 😀

    Reply
  21. kapil
    Mar 27 2013

    error?

    patching file src/wl/sys/wl_linux.c
    Hunk #1 FAILED at 332.
    1 out of 1 hunk FAILED — saving rejects to file src/wl/sys/wl_linux.c.rej

    Reply
    • Mar 27 2013

      Did you verify that the driver from broadcom compiled first without applying the patch? It could be that they updated it.

  22. Natalia
    Apr 29 2013

    I can’t get it to work 🙁
    Linux mint 14, linux 3.5.0-17

    I do the modprobe ok but nothing happens

    Reply
    • May 3 2013

      Check your dmesg and lsmod output to see that the kernel module is loaded. Then have a peak at your interfaces with ‘ip a’, if you have a new interface… then that is your wireless. If that is not the case, then this module doesn’t support your hardware. Good luck!

  23. gaurav
    Jun 13 2013

    Hi, i did the patch and here’s the output :
    patch -p0 src/wl/sys/wl_linux.c < bc_wl_abiupdate.patch
    patching file src/wl/sys/wl_linux.c
    Hunk #1 succeeded at 388 (offset 56 lines).
    still getting the same error when i run make:

    KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
    make[1]: Entering directory `/usr/src/linux-source-3.2.6'

    WARNING: Symbol version dump /usr/src/linux-source-3.2.6/Module.symvers
    is missing; modules will have no dependencies and modversions.

    Wireless Extension is the only possible API for this kernel version
    Using Wireless Extension API
    CC [M] /root/src/wl/sys/wl_linux.o
    /root/src/wl/sys/wl_linux.c:388: error: unknown field ‘ndo_set_multicast_list’ specified in initializer
    /root/src/wl/sys/wl_linux.c:388: warning: initialization from incompatible pointer type
    make[2]: *** [/root/src/wl/sys/wl_linux.o] Error 1
    make[1]: *** [_module_/root] Error 2
    make[1]: Leaving directory `/usr/src/linux-source-3.2.6'
    make: *** [all] Error 2

    PLEASE HELP I FEEL LIKE THROWING MY LAPTOP OUT OF THE WINDOW :p, also I am a complete beginner don't know a thing

    Reply
    • Jun 13 2013

      Did you re-extract the original files before you issues the make command? The patch said it succeeded in modifying line 388 of wl_linux.c, to verify, you can open wl_linux.c yourself and go to line 388 to see for yourself. If, by whatever reason, .ndo_set_multicast_list is still there, just replace it with .ndo_set_rx_mode and you should be good to go.

  24. Les
    Sep 9 2013

    Am having a problem compiling the wl driver for newer kernels 3.9 and above. Works great with 3.8 though.

    Reply

Trackbacks & Pingbacks

  1. 在Fedroa 12安裝BCM4312 802.11 b/g無線網路卡驅動程式 « 喝茶也喝咖啡
  2. [LMDE] Placa BCM4313 en Kernel 3.2 « La Pertenencia
  3. Bluetooth not working
  4. Again: Broadcom Wireless BCM43224, Ubuntu | Sqizit
  5. StasyakOFF Blog » Blog Archive » Wi-Fi на BCM 4312/4313 в Mint/Ubuntu
  6. Linux Mint 13 的安装、配置及搭建Android源码编译环境 | 常映秋的实验室
  7. Broadcom Bluetooth device remains undetected (BCM2046, WIDCOMM ) - Tech Forum Network
  8. Broadcom Bluetooth device remains undetected (BCM2046, WIDCOMM ) - TecHub

Share your thoughts, post a comment.

(required)
(required)

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

Subscribe to comments