Enable Broadcom BCM43142 in OpenSuse 13.1

Hello everyone!

I’ve struggled to get my Broadcom wireless adapter working on my Dell inspirion laptop and finally managed to do so and it’s working :slight_smile:
I’ve placed all the patch files and procedure in my git repository for easy access, it’s located in https://github.com/akrasic/broadcom-wl

Since the Broadcom STA driver doesn’t compile under kernel 3.11 I’ve managed to get it working with patches found in Gentoo repository, and I’ve patched Makefile so wl.ko will be moved to a different directly than specified inside the original Makefile.

To get started you’d need git on your system to clone the repo:

git clone https://github.com/akrasic/broadcom-wl.git
cd broadcom-wl

Once you’re in the directly, you can follow the README instructions:

tar xzf hybrid-v35_64-nodebug-pcoem-6_30_223_141.tar.gz

patch -p1 < linux-recent.patch
patch -p1 < makefile.patch
patch -p1 < wlan.patch
patch -p1 < license.patch

make
make install

modprobe -r bcma
echo "blacklist bcma" > /etc/modprobe.d/broadcom.conf
echo "wl" > /etc/modules-load.d/wl.conf
depmod -a
modprobe wl

Please note:

  • wl.ko will be placed in /lib/modules/$(uname -r)/extra/wl/
  • Driver is kernel dependent, so this procedure would need to be repeated if new kernel is installed
  • Kernel 3.11 has been tested, haven’t ran this on any other kernel versions apart from current OS 13.1 kernel version 3.11.6-4

I’ve been testing this driver for several hours and it’s working without any problems, anybody with a Broadcom card can try it out and let me know the results if it’s working for them.

I’m thinking of possibly creating a RPM for the current version, so everything would be streamlined.

If anybody feels there should be any changes added or anything, don’t be shy and submit a pull request trough Github.

Thank you on your feedback, I appreciate it!

Hello,

I can confirm that this driver is working without problems as well on my OpenSuse 13.1 System (Lenovo G710 with bcm43142 wireless module). I used your files and step by step instructions to compile it and they were very helpful for me - thanks for your good documentation!

I had a small issue that you could improve in your README file.
The command

patch -p1 < makefile.patch

leads to the following output:

can't find file to patch at input line 3
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|--- Makefile   2013-08-01 08:52:22.000000000 +0200
|+++ Makefile.new       2014-01-17 02:10:17.071500195 +0100
--------------------------
File to patch:

Here you have to enter “Makefile” to get it patched.

The correct command to avoid this output would be

patch -p0 < makefile.patch

(or modifying makefile.patch with the a/ and b/ prefixes)

if you still need the drivers, you can download it from the link. Drivers for Kernel 3.11.6 is available here.

Also suggest you to check the packman repo in case you need drivers for any other kernel version.

Hi,

I tried to follow your instructions but at the point that I have to use “make” command I get stopped with this error:

KBUILD_NOPEDANTIC=1 make -C /lib/modules/uname -r/build M=pwd
make: *** /lib/modules/3.11.6-4-desktop/build: No such file or directory. Stop.
make: *** [all] Error 2

Although I have installed the packages of devel-basis pattern. My kernel version is 3.11.6-4 and my Linux knowledge is not too deep.

Would greatly appreciate your help.

Danial

You would need the devel-kernel pattern as well.

But why don’t you just install the available packages from the Packman repo?
Add the repo in YaST->Software Repositories->Add->Community Repositories.
Then install those 2 packages in YaST->Software Management: broadcom-wl and broadcom-wl-kmp-desktop.

Or download the RPMs from here:

Thanks a lot. The devel-kernel was missing. Now it’s solved :slight_smile:

Thank you very much! Kernel 3.11.10 here and everything is well!:good:

I just had to login with sudo su, not sudo, in the following commands:


make
make install

modprobe -r bcma
echo "blacklist bcma" > /etc/modprobe.d/broadcom.conf
echo "wl" > /etc/modules-load.d/wl.conf
depmod -a
modprobe wl

But I’m using NetworkManager, the wireless does not worked on ifup.

Hello,

Does your fix have anything to do with my problem failing to compile?

http://forums.opensuse.org/showthread.php/495060-Can-t-understand-the-errors-when-compiling-the-driver

My wireless drops randomly all the time. On Oss 12.3 I compiled the driver the problem got solved, but now on 1.31 it just can’t compile.

Hi Bone,

Grab this and tell me if it compiles cleanly for you and works (I do not have a Realtek) - if it does, I can make a spec file for it and put it up in the build service:
https://onedrive.live.com/redir?resid=E7C6C736855AA79D!107

On 03/11/2014 05:26 AM, Miuku wrote:
>
> Hi Bone,
>
> Grab this and tell me if it compiles cleanly for you and works (I do not
> have a Realtek) - if it does, I can make a spec file for it and put it
> up in the build service:
> https://onedrive.live.com/redir?resid=E7C6C736855AA79D!107

This seems obvious, but Realtek != Broadcom. In addition, the driver for the
RTL8188CE is already in the kernel!

I know, however he has a different issue so I replied to both of his comments on the matter since I didn’t know which one he’ll actually read.

Confirm to solve problem in OpenSuse 13.1. Thank you so much

**I have follow the above step,but my opensuse system is base i586,as you see below,what should I do next?
**
drfly@linux-ms36:~/broadcom-wl> make
KBUILD_NOPEDANTIC=1 make -C /lib/modules/uname -r/build M=pwd
make[1]: 进入目录“/usr/src/linux-3.11.10-7-obj/i386/pae”
CFG80211 API is prefered for this kernel version
Using CFG80211 API
LD [M] /home/drfly/broadcom-wl/wl.o
ld: Relocatable linking with relocations from format elf64-x86-64 (/home/drfly/broadcom-wl/lib/wlc_hybrid.o_shipped) to format elf32-i386 (/home/drfly/broadcom-wl/wl.o) is not supported
make[4]: *** [/home/drfly/broadcom-wl/wl.o] 错误 1
make[3]: *** [module/home/drfly/broadcom-wl] 错误 2
make[2]: *** [sub-make] 错误 2
make[1]: *** [all] 错误 2
make[1]: 离开目录“/usr/src/linux-3.11.10-7-obj/i386/pae”
make: *** [all] 错误 2

Apparently that download is only for 64bit systems. (it contains a pre-compiled wlc_hybrid.o_shipped as the driver is closed-source)
You would have to download the 32bit driver from broadcom’s homepage and apply the patches to that I guess.

But why don’t you just install the ready-made “broadcom-wl” packages from Packman?

You need “broadcom-wl” and one of the “broadcom-wl-kmp” packages depending on what kernel you use (apparently “broadcom-wl-kmp-pae”).