Wireless BCM4312 3.2 kernel
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:
- Download this patch: bc_wl_abiupdate.patch
patch -p0 src/wl/sys/wl_linux.c < bc_wl_abiupdate.patch
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.
Trackbacks & Pingbacks
- 在Fedroa 12安裝BCM4312 802.11 b/g無線網路卡驅動程式 « 喝茶也喝咖啡
- [LMDE] Placa BCM4313 en Kernel 3.2 « La Pertenencia
- Bluetooth not working
- Again: Broadcom Wireless BCM43224, Ubuntu | Sqizit
- StasyakOFF Blog » Blog Archive » Wi-Fi на BCM 4312/4313 в Mint/Ubuntu
- Linux Mint 13 的安装、配置及搭建Android源码编译环境 | 常映秋的实验室
- Broadcom Bluetooth device remains undetected (BCM2046, WIDCOMM ) - Tech Forum Network
- Broadcom Bluetooth device remains undetected (BCM2046, WIDCOMM ) - TecHub
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.
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
Works for me too, now.. Must have been a transient error.
There was a permission problem with patch (and other text) files after doing a site-wide permission change.
Sorry for the inconvenience.
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.
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!
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! 🙂
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.
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)
thanks
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!
You’re not missing anything, if the module is loaded then you should see something in your dmesg like this:
if you do not see something like above, then I’m afraid you do not have same hardware. I hope that helps.
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
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!
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.
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 !
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!
You have to download the driver first:
http://www.broadcom.com/support/802.11/linux_sta.php
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!
Saved my life! 🙂 Thanks a lot!
It works for my brcm4313, thanks a lot.
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!
Thank you for your help. Best help ever had. Keep it going 🙂
Great ! works 4 me very well. Tnx.
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
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!
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
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
Thank you.
It works for me on my problmatic HPMini 110-1020LA
Thanks a lot it’s work for me DELL vostro 1015 BCRM 4322 😀
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
Did you verify that the driver from broadcom compiled first without applying the patch? It could be that they updated it.
I can’t get it to work 🙁
Linux mint 14, linux 3.5.0-17
I do the modprobe ok but nothing happens
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!
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
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.
Am having a problem compiling the wl driver for newer kernels 3.9 and above. Works great with 3.8 though.
What errors do you get?
Just for you… 😉