Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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, 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.


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.

share|improve this question

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.

share|improve this answer

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

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 ?

share|improve this answer
Thanks for the suggestion. If I understand your bash script properly, it is always making sure the card is set to 11M on boot. Is that correct? While I'm sure this will work, I don't think it resolves why it works better set to 11M as opposed to 54M. 11M is not an odd value, it is the bit rate of 802.11b. The BCM4306 is a b/g card. That's why I mentioned in my post that it seems like it works better set to "b" speeds than "g" speeds. It looks like I cannot set it to just any value like 150M. 54M is the root cause of my issue, as when set to this the card performs the slowest. – amandion Jan 29 '12 at 16:08
My script is a work around. It determine cause I imagine one would need to examine the source code. – bodhi.zazen Jan 30 '12 at 2:04

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.