Home > Frugal > Books > Blog > Ics-Blog
Posted on 2009-08-09, by Tom
Let's finish what I started.. Short summary. My old DELL Inspiron 5150 has a Broadcom Corporation BCM4306 802.11b/g Wireless LAN controller HW installed. It does not really work that well with the Linux drivers that came with Ubuntu.. Sadly but true. I have tried to solve this problem for a long time without much success, but a few days ago I got so fed up with the poor performance of the WLAN so I gave it another go. And, success!
Basically I searched Google a bit and found a solution with the help of Dopefish Lives and an Ubuntu forum post. I almost followed Dopefish's instructions to the point, but not quite - so I will take the time to summarize exactly what I did.
The solution is to remove the standard Linux driver for the BCM4306 and instead use the NDIS driver.
  1. Use the Synaptic Package Manager and install the packages cabextract and ndiswrapper.
  2. Create the file /etc/modprobe.d/blacklist-bcm.conf with content b43
    blacklist b43legacy
  3. Download the driver to a temporary folder
    wget ftp://ftp.hp.com/pub/softpaq/sp33001-33500/sp33008.exe
  4. Extract the driver with cabextract sp33008.exe
  5. Install the driver with sudo ndiswrapper -i bcmwl5.inf and afterwards confirm with ndiswrapper -l
  6. Load ndiswrapper with sudo depmod -a followed by sudo modprobe ndiswrapper
  7. Make sure the interfaces are set up correctly in /etc/network/interfaces
    auto lo
    iface lo inetloopback
  8. Write the modprobe configuration with sudo ndiswrapper -m
  9. Append ndiswrapper to /etc/modules to make ndiswrapper load automatically at boot
This should be enough. But it was not for me.. I had problems loading those modules and found out that it is due to that Ubuntu loads the modules in the wrong order(?). If it doesn't for you, run lshw -C network and locate your BCM card. Look for driver=ndiswrapper+bcmwl5. It is probably not there..(more probably you find module=ssb)
To fix the load issue, add the following quick and dirty script. It will unload "all" modules, then load the ndiswrapper and then re-load them.
  1. Edit the ndiswrapper configuration script in /etc/modprobe.d
  2. Rename the script sudo mv ndiswrapper ndiswrapper.conf (support for scripts without .conf will disappear)
  3. Edit the file and append the following line
    install ndiswrapper modprobe -r b43 b44 b43legacy ssb --ignore-install ndiswrapper $CMDLINE_OPTS
  4. Reboot
Now I max out my 8Mbit/s internet connection also over WLAN.
Last modified on 2009-12-24 at 15:04:00