Saturday, July 31, 2010

Trouble setting up wireless for the network card type BCM4312 802.11b/g on Dell Inspiron-1525 running Fedora-13 ?

This piece of information is for all those who might face some issue in setting up of wireless network for Fedora release 13 (Goddard) on your "Dell Inspiron - 1525" laptop having BCM4312 802.11b/g card. The default driver which Fedora-13 provided for BCM4312 802.11b/g didn't work for me, thus I had look for a driver that would have served my purpose of going wireless. Following are the steps by which I could make wireless working for me, hope it helps you too...


So let's get started;
1. Check if you have wireless connection;
[root@Fedora-13 ~]# iwconfig
lo no wireless extensions.

eth0 no wireless extensions.

wlan0 IEEE 802.11bg Mode:Managed Access Point: Not-Associated
Tx-Power=0 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
pan0 no wireless extensions.


(Well, it shows wlan0 since it has the driver installed for wireless device, but for me unfortunately this did work when I tried to connect it with my wireless modem). Thus the workaround is to remove the driver installed and find an appropriate one and hook it up with the Broadcom network card.

2. Locate the Device ID's of Broadcom cards on your system by:
[root@Fedora-13 ~]# lspci -n | grep 14e4

3. Locate the installed driver;

[root@Fedora-13 ~]# lspci -v
0b:00.0 Network controller: Broadcom Corporation BCM4312 802.11b/g LP-PHY (rev 01)
Subsystem: Dell Wireless 1395 WLAN Mini-Card
Flags: bus master, fast devsel, latency 0, IRQ 17
Memory at fe7fc000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Capabilities: [58] Vendor Specific Information: Len=78
Capabilities: [e8] 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 41-d9-4d-ff-ff-a9-00-23
Capabilities: [16c] Power Budgeting
Kernel driver in use: b43-pci-bridge
Kernel modules: ssb

4. Note the Kernel module from above output and if you are interested to get the details;
[root@Fedora-13 ~]# modinfo ssb
filename: /lib/modules/2.6.33.3-85.fc13.i686/kernel/drivers/ssb/ssb.ko
license: GPL
description: Sonics Silicon Backplane driver
srcversion: B67624D9C93DCB668DC35D2
alias: pci:v000014E4d0000432Bsv*sd*bc*sc*i*
alias: pci:v000014E4d00004329sv*sd*bc*sc*i*
alias: pci:v000014E4d00004328sv*sd*bc*sc*i*
alias: pci:v000014E4d00004325sv*sd*bc*sc*i*
alias: pci:v000014E4d00004324sv*sd*bc*sc*i*
alias: pci:v000014E4d00004321sv*sd*bc*sc*i*
alias: pci:v000014E4d00004320sv*sd*bc*sc*i*
alias: pci:v000014E4d00004319sv*sd*bc*sc*i*
alias: pci:v000014E4d00004318sv*sd*bc*sc*i*
alias: pci:v000014E4d00004315sv*sd*bc*sc*i*
alias: pci:v000014E4d00004312sv*sd*bc*sc*i*
alias: pci:v000014E4d00004311sv*sd*bc*sc*i*
alias: pci:v000014E4d00004307sv*sd*bc*sc*i*
alias: pci:v000014E4d00004306sv*sd*bc*sc*i*
alias: pci:v000014E4d00004301sv*sd*bc*sc*i*
depends: mmc_core
vermagic: 2.6.33.3-85.fc13.i686 SMP mod_unload 686
5. Download the driver files:
Downloaded the file hybrid-portsrc-x86_32-v5.60.48.36.tar.gz from

6. Extract it under a folder like /home/bijit/Downloads/hybrid_wl;
[root@Fedora-13 hybrid_wl]# tar -xvzf hybrid-portsrc-x86_32-v5.60.48.36.tar.gz

7. Now, you can refer to the installation manual that comes with package which was downloaded. But,
let me continue with how that was done on my system...
To build the driver I did the following;

8. Check the version of the installed Kernel;

[root@Fedora-13 hybrid_wl]# uname -r
2.6.33.3-85.fc13.i686

9. To make sure if I have the all the tools available, tried the following command only to encounter the
error :-)

make: *** /lib/modules/"release"/build: No such file or directory. Stop.

10. So, I would require the Kernel-devel package since it would not have thrown the above
error and there would have been the directory (/lib/modules/2.6.33.3-85.fc13.i686/build)
created by that package.

11. Installed the following Development package for building kernel modules to match the kernel;
kernel-devel-2.6.33.3-85.fc13.i686

12. Now, check for the directory which was missing earlier;
[root@Fedora-13 hybrid_wl]# ll /lib/modules/2.6.33.3-85.fc13.i686/build
lrwxrwxrwx. 1 root root 46 May 13 06:58 /lib/modules/2.6.33.3-85.fc13.i686/build
-> ../../../usr/src/kernels/2.6.33.3-85.fc13.i686

13. Building the driver as a loadable kernel module (LKM);
[root@Fedora-13 hybrid_wl]# make clean
[root@Fedora-13 hybrid_wl]# make
(Well, here I had to install gcc with all/any of its dependencies. This was necessary since compilers were
missing on my system)

14. In the above steps, the build process completes to generate "wl.ko" file.

15. I need to remove the previous non-fuctional "ssb" drivers;
[root@Fedora-13 hybrid_wl]# lsmod | grep "b43\|ssb"
[root@Fedora-13 hybrid_wl]# rmmod ssb; rmmod b43

16. As a precaution blacklisted the drivers to prevent it from getting loaded in future;
[root@Fedora-13 hybrid_wl]# echo "blacklist ssb" >> /etc/modprobe.d/blacklist.conf;
[root@Fedora-13 hybrid_wl]# echo "blacklist b43" >> /etc/modprobe.d/blacklist.conf;

17. Insmod the driver that was built in the previous steps;
Since, no "wl" drivers were prior to this one on my system, i had to add a security module before using the "wl" module.
[root@Fedora-13 hybrid_wl]# modprobe lib80211
then;
[root@Fedora-13 hybrid_wl]# insmod wl.ko

Wireless driver (wl.co) is now operational. Needed to wait for couple of seconds since
the Network Manager would take few seconds to detect the presence of a new network
driver and show the surrounding wireless networks.

18. Make the driver Boot time loadable.
[root@Fedora-13 hybrid_wl]# cp wl.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless/

Lets generate modules.dep and map files
[root@Fedora-13 hybrid_wl]# depmod -a
[root@Fedora-13 hybrid_wl]# echo modeprobe wl >> /etc/rc.local

Note: I ignored the license warning that I received at the time of module insertion. I don't think its going to make any difference. Well, the whole setup also works for Fedora-10 instalations if you have network card is the one mentioned above...

My wireless network on Fedora-13 is working smoothly like any other wireless on any other devices :-)