Thursday 21 September 2006

Using the bcm43xx driver with SuSE 10.1 and Dell Inspiron 5100

As of Kernel 2.6.17rc a native, reverse engineered, driver is available for bcm43xx range of wireless cards. I have had my bcm4306 rev 02 (Dell Truemobile 1300) card working in my Inspiron 5100 using ndiswrapper for some time but wanted to get the native driver working to play with tools such as kismet.

You'll need the following files:

Kernel.
Novell have not provided a kernel later than 2.6.16 so I had to find a more up to date one. I eventually settled on the 2.6.18rc7 one from the factory distributioncalled kernel-default-2.6.18_rc7_git1-2.i586.rpm. I can't store a copy here because community server does not seem to handle files that big.

Wireless tools.
The wireless tools provided with SuSE 10.1 do not seem to configure the new wireless driver correctly to I again used the rpm from the factory distribution.

bcm43xx-fwcutter-004.
This tool is required to extract firware from the windows driver to make the card work with Linux. You can find the file from the makers siteor use this local copy. I have a precompiled version here too.
A windows driver.
I had been using thedell driver with ndiswrapper with no problems but it would not work with bcm43xx giving me IRQ errors. I eventually found this onewhich worked great for me.

Proceedure.
1. Install the new kernel using a command similar to 'rpm -ivh kernel-default-2.6.18_rc7_git1-2.i586.rpm'. Reboot into the new kernel but be aware that if you were using ndiswrapper it will no longer work because the new kernel will prefer to use bcm43xx instead.

2. Install the new wireless tools. Because Yast2 and a few other pieces of software require the previous version of wireless tools you will get a dependency error on libiw.so.28. I used the following commands to get around this:
'rpm -Uvh –nodeps wireless-tools-29pre10-5.i586.rpm'
'ln -s /usr/lib/libiw.so /usr/lib/libiw.so.28'

3. Install the fwcutter tool from source or by copying the precomiled binary. Installing from source is the standard:
'./configure'
'make'
'make install'

4. Extract the firmware from the wl_apsta.o file using a command similar to:
'bcm43xx-fwcutter -w /lib/firmware wl_apsta.a'
This should place a load of bcm43xx* files into /lib/firmware.
5. Use Yast2 to configure your wireless card and reboot.
You should see output similar to the followig:

ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 00:90:4B:12:5F:FA
inet addr:192.168.0.51 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::290:4bff:fe12:5ffa/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:30401 errors:0 dropped:220 overruns:0 frame:0
TX packets:61069 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3078309 (2.9 Mb) TX bytes:87433000 (83.3 Mb)
Interrupt:11 Base address:0xc000

iwconfig wlan0
wlan0 IEEE 802.11b/g ESSID:"thefoleyhouse" Nickname:"Broadcom 4306"
Mode:Managed Frequency=2.412 GHz Access Point: 00:15:E9:E1:C9:15
Bit Rate=11 Mb/s Tx-Power=15 dBm
RTS thr:off Fragment thr:off
Encryption key:XXXX-XXXX-XX Security mode:open
Link Quality=100/100 Signal level=2/3 Noise level=187/100
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

lsmod |grep bcm43xx
bcm43xx 427776 0
firmware_class 14208 2 pcmcia,bcm43xx
ieee80211softmac 36992 1 bcm43xx
ieee80211 34760 2 bcm43xx,ieee80211softmac

No comments:

Post a Comment