PDA

View Full Version : Fedora 19 Wifi Driver | BCM43142 | Dell 1704 | Vostro 2420



dg510
7th December 2013, 09:08 AM
ADMIN NOTE: This Guide has become obsolete with recent kernels (see Post #8).


This guide is intended to help users in building wifi driver for Fedora 19.

Base install of Fedora 19 on my laptop did not have any wifi driver. The Wireless device information is as follows,


$ sudo lspci -v -d 14e4:4365
07:00.0 Network controller: Broadcom Corporation BCM43142 802.11b/g/n (rev 01)
Subsystem: Dell Wireless 1704 802.11n + BT 4.0
Flags: bus master, fast devsel, latency 0, IRQ 19
Memory at f7c00000 (64-bit, non-prefetchable) [size=32K]
Capabilities: [40] Power Management version 3
Capabilities: [58] Vendor Specific Information: Len=78 <?>
Capabilities: [48] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [d0] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [13c] Virtual Channel
Capabilities: [160] Device Serial Number XX-XX-XX-XX-XX-XX-XX-XX
Capabilities: [16c] Power Budgeting <?>
Kernel driver in use: wl
The older guide for Fedora 17 (http://forums.fedoraforum.org/showthread.php?t=283824) didn't work, so a different solution is provided here.

NOTE: Since I am new here, I am not able to post many links, so I am going to specify <broadcom> instead of www.broadcom.com (http://www.broadcom.com)

Good starting point was to get the drivers from ubuntu repository as Ubuntu supports this broadcom chipset. But, as I was going through their README file, I found the link to the Broadcom driver page. It turns out, using the source from broadcom site is the easiest way to setup this driver.

<broadcom>/support/802.11/linux_sta.php

32-bit

<broadcom>/docs/linux_sta/hybrid-v35-nodebug-pcoem-6_30_223_141.tar.gz

64-bit

<broadcom>/docs/linux_sta/hybrid-v35_64-nodebug-pcoem-6_30_223_141.tar.gz

Steps to installing wireless driver (make sure you are logged in as root)

1. Installing build tools


# yum install kernel-devel-`uname -r`
# yum install gcc make
2. Extracting from source (I am using 64-bit version here)


# ls
hybrid-v35_64-nodebug-pcoem-6_30_223_141.tar.gz
# mkdir foo
# cd foo/
# tar xzf ../hybrid-v35_64-nodebug-pcoem-6_30_223_141.tar.gz
# ls
lib Makefile src
3. Building kernel module


# make
KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
make[1]: Entering directory `/usr/src/kernels/3.9.5-301.fc19.x86_64'
CFG80211 API is prefered for this kernel version
Using CFG80211 API
LD /tmp/wl/foo/built-in.o
CC [M] /tmp/wl/foo/src/shared/linux_osl.o
CC [M] /tmp/wl/foo/src/wl/sys/wl_linux.o
CC [M] /tmp/wl/foo/src/wl/sys/wl_iw.o
CC [M] /tmp/wl/foo/src/wl/sys/wl_cfg80211_hybrid.o
LD [M] /tmp/wl/foo/wl.o
Building modules, stage 2.
CFG80211 API is prefered for this kernel version
Using CFG80211 API
MODPOST 1 modules
WARNING: modpost: missing MODULE_LICENSE() in /tmp/wl/foo/wl.o
see include/linux/module.h for more information
WARNING: modpost: Found 1 section mismatch(es).
To see full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'
CC /tmp/wl/foo/wl.mod.o
LD [M] /tmp/wl/foo/wl.ko
make[1]: Leaving directory `/usr/src/kernels/3.9.5-301.fc19.x86_64'
4. Installation


# mkdir /lib/modules/`uname -r`/extra/wl/
# cp wl.ko /lib/modules/`uname -r`/extra/wl/
# depmod -a
# modprobe wl
After installation, network manager should show the wireless networks.

If you face any problems, you should refer to the readme file,

<broadcom>/docs/linux_sta/README.txt

laics1984
3rd July 2014, 05:52 AM
Can the same hybrid driver be used for fedora 20? I received this error while executing the command #make on F20


[root@localhost foo]# make
KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
make[1]: Entering directory `/usr/src/kernels/3.14.9-200.fc20.x86_64'
CFG80211 API is prefered for this kernel version
Using CFG80211 API
LD /home/josh/Downloads/foo/built-in.o
CC [M] /home/josh/Downloads/foo/src/shared/linux_osl.o
CC [M] /home/josh/Downloads/foo/src/wl/sys/wl_linux.o
/home/josh/Downloads/foo/src/wl/sys/wl_linux.c: In function ‘wl_tkip_printstats’:
/home/josh/Downloads/foo/src/wl/sys/wl_linux.c:3246:7: warning: passing argument 1 of ‘wl->tkipmodops->print_stats’ from incompatible pointer type [enabled by default]
wl->tkip_bcast_data[idx]);
^
/home/josh/Downloads/foo/src/wl/sys/wl_linux.c:3246:7: note: expected ‘struct seq_file *’ but argument is of type ‘char *’
/home/josh/Downloads/foo/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/josh/Downloads/foo/src/wl/sys/wl_linux.c:3249:4: note: expected ‘struct seq_file *’ but argument is of type ‘char *’
/home/josh/Downloads/foo/src/wl/sys/wl_linux.c: In function ‘wl_reg_proc_entry’:
/home/josh/Downloads/foo/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/josh/Downloads/foo/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/josh/Downloads/foo/src/wl/sys/wl_linux.c:3475:16: error: dereferencing pointer to incomplete type
wl->proc_entry->read_proc = wl_proc_read;
^
/home/josh/Downloads/foo/src/wl/sys/wl_linux.c:3476:16: error: dereferencing pointer to incomplete type
wl->proc_entry->write_proc = wl_proc_write;
^
/home/josh/Downloads/foo/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/josh/Downloads/foo/src/wl/sys/wl_linux.o] Error 1
make[1]: *** [_module_/home/josh/Downloads/foo] Error 2
make[1]: Leaving directory `/usr/src/kernels/3.14.9-200.fc20.x86_64'
make: *** [all] Error 2

dg510
3rd July 2014, 06:57 AM
/home/josh/Downloads/foo/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) {
^

Apparently, create_proc_entry() function was removed in kernel 3.10, so unless someone provides a patch to support kernels 3.10+, the driver is not going to build.

As mentioned in the link below,

http://stackoverflow.com/questions/22193934/how-can-i-implement-write-operation-to-proc-file-in-linux-kernel-3-10-and-later

laics1984
3rd July 2014, 07:56 AM
I am trying to get the wireless in fedora 20 to work. Do you have any workaround? Beside this solution? Particularly for this chipset BCM43142. Thanks.

dg510
3rd July 2014, 01:11 PM
NOTE: I can't add more than one link, so I have added them as a text. Please prepend http:// before it.


I am trying to get the wireless in fedora 20 to work. Do you have any workaround? Beside this solution? Particularly for this chipset BCM43142. Thanks.

You should try getting the driver through a different distribution. Particularly, ubuntu 14.04 (kernel 3.13+) seems to support BCM43142. As explained here,

askubuntu.com/questions/459654/ubuntu-14-04-drivers-for-broadcom-bcm43142

The binary package for trusty and source archives for the same can be found at the link below,

packages.ubuntu.com/trusty/bcmwl-kernel-source
packages.ubuntu.com/source/trusty/bcmwl

Download the source archives bcmwl_6.30.223.141+bdcom.orig.tar.gz and bcmwl_6.30.223.141+bdcom-0ubuntu2.diff.gz and apply the patch file on the original source. It may require some tinkering but should be doable. After that, you should try building it on fedora 20.

laics1984
4th July 2014, 04:30 AM
May I know what its mean by patching to the original source? Sorry cause i am new to installing driver and stuff on fedora. Thanks.

dg510
5th July 2014, 07:10 AM
May I know what its mean by patching to the original source? Sorry cause i am new to installing driver and stuff on fedora. Thanks.

Appropriately, someone has posted a small guide on diff and patch. I hope you find it useful. The following is the link to the guide,

http://jungels.net/articles/diff-patch-ten-minutes.html

leigh123linux
5th July 2014, 06:02 PM
May I know what its mean by patching to the original source? Sorry cause i am new to installing driver and stuff on fedora. Thanks.

I wouldn't bother with this obsolete guide, try this instead.


su -c 'yum localinstall --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm'
su -c 'yum install akmod-wl "kernel-devel-$(uname -r)"

laics1984
7th July 2014, 04:56 AM
I am able to get the wifi working. But it unable to detect any network, there is no network on the list. The networks are available as they are detected by other devices.

Is it because of driver issue?

flyingfsck
7th July 2014, 12:58 PM
Most probably.

laics1984
8th July 2014, 04:03 AM
The networks are back after multiple rebooting. Thanks all!