I recently did a command line minimal installation of Ubuntu 11.10 on an old Compaq Presario 2500 laptop. This laptop has the Broadcom BCM4306 rev 02 Wi-Fi adapter.
I've installed the firmware-b43legacy-installer package and the adapter is working. It is using the b43legacy drivers:
filename: /lib/modules/3.0.0-14-generic/kernel/drivers/net/wireless/b43legacy/b43legacy.ko firmware: b43legacy/ucode4.fw firmware: b43legacy/ucode2.fw firmware: FW10 license: GPL author: Michael Buesch author: Stefano Brivio author: Martin Langer description: Broadcom B43legacy wireless driver srcversion: 0355EB47C162A7D873BD576 alias: ssb:v4243id0812rev04* alias: ssb:v4243id0812rev02* depends: mac80211,ssb,cfg80211 vermagic: 3.0.0-14-generic SMP mod_unload modversions 686 parm: pio:enable(1) / disable(0) PIO mode (int) parm: bad_frames_preempt:enable(1) / disable(0) Bad Frames Preemption (int) parm: fwpostfix:Postfix for the firmware files to load. (string) The issue that I'm having is with the transfer rates. When Ubuntu auto sets the rate to 54Mbps, I get very slow speeds. I tested on my LAN by using iperf.
I have a Windows laptop on my LAN via Wi-Fi that is running iperf in server mode. On the Ubuntu laptop, I run iperf in client mode and connect to the Windows laptop. iperf reports speeds just under 1Mbps (anywhere from 600Kbps to 700Kpbs).
I know my LAN itself is not the issue. I have an iperf app for my Android phone. When I enable the Wi-Fi for it and join the LAN, running it in client mode connecting to the same Windows laptop reports speeds of about 10Mbps. I also have a desktop PC with a wired connection to my router. When I run iperf on the desktop in server mode and run iperf on the Windows laptop in client mode, iperf reports speeds that are about 20Mbps.
Here's where it gets weird. I change the rate to 11Mbps on the BCM4306 on my Compaq:
sudo iwconfig wlan0 rate 11M
I rerun the iperf tests on the Compaq and now I am seeing speeds in the 2Mbps to 3Mbps range. Much better!
However this confuses me as I am certain that the BCM4306 does both 802.11b and g, yet it is acting as if it can only handle "b" speeds.
I would love it if I could get the BCM4306 to work properly at the 54Mbps rate. I tried installing the compat-wireless drivers from linuxwireless.org, but I ran into a whole other can of worms there that I'd rather not get into unless someone feels like it may be related to the drivers I am using.
Does anyone know how I can get my BCM4306 working properly at 54Mbps?
Thanks in advance.
EDIT:
I forgot to mention something. This Compaq has an Ethernet adapter as well. If I disable the BCM4306 and run the iperf test in client mode again to the Windows laptop while hard-wired to my router, I get speeds of 19Mbps. So all these iperf test tell me that it is isolated to the BCM4306 itself.
2 Answers
The reason why 11M works better than 54M is that at different rates the signal power (and the range) is different. The slower the better range.
Make a script in /etc/network/if-up.d , you can name it what you wish, call it BCM4306
# graphical gksu gedit /etc/network/if-up.d/BCM4306 # command line sudo -e /etc/network/if-up.d/BCM4306 Put the following code into it
#!/bin/sh -e # # Sets speed of interface to 54M if [ "$IFACE" = "eth1" ] ; then iwconfig wlan0 rate 11M fi Make it executable
sudo chmod a+x /etc/network/if-up.d/BCM4306 It should work when you reboot or restart your network.
Note: 11M is an odd value, have you tried 54M or 150M ?
2