BCM4306 slow speeds when set to 54Mbps

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

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like