My laptop is a first-generation Centrino machine. Perfectly acceptable speed-wise for pretty much anything that doesn’t involve 3D (and even then, a GeForceFX 5200 isn’t that dreadful), and comes with Intel 802.11b.
802.11b wireless has gone a bit out of date. It’s still perfectly acceptable, but I found myself whilst on holiday requiring a wireless stick I could stick in odd places where my laptop wouldn’t go, so I bought a Belkin F5D7051 “High-Speed Wireless G” USB stick out of the best priced place I could find. It comes with a little extension that’s perfect for sticking out of hotel windows to pick up public signals, so it was surprisingly useful.
Unfortunately, it’s based on a Broadcom chipset. And Broadcom chipsets are a real pain on Linux because Broadcom won’t make drivers for anything other than embedded systems. I dual-boot the machine with XP in any case, but I like to have a Linux partition around and I’d like it to have access to the Internet.
So if you want such a thing to be able to run on Linux, you have to use a piece of software called ndiswrapper. This is a bit of software that maps the Windows NDIS standard for network drivers on to the Linux networking subsystem, effectively using your Windows network driver on Linux. Unfortunately, for obvious reasons ndiswrapper can be a bit of a pain to work with on some cards and the Belkin F5D7051 is one of these cases.
It has taken me a long time to find a Linux distribution combination that gets it working. But with Kubuntu ‘Gutsy’ 7.10 and some helpful threads on the Ubuntu forums, I finally have it:

As you can see, it’s even working with WPA and Network Manager, pretty much perfectly. Since I’m always inclined towards tutorials, here’s how I did it.
I stumbled across an extremely helpful person on the Ubuntu forums who posted a bit of software that automates the compilation of ndiswrapper and a guide on how to use it. I’ve used ndiswrapper from the Ubuntu repositories before (as well as from the repositories of pretty much every major Linux distribution) and always run into trouble and never had the card working.
While it’s actually designed for Feisty (the previous version, 7.04), is covered in warnings and is not intended for my type of wireless card, the autodownloader and compiler for ndiswrapper within is still extremely useful. Of course, fetching ndiswrapper from the Ubuntu repo might just work for you, and if you want to give it a try just install it from there and skip to step 8.
- Connect to the Internet using a different method to your Broadcom card; by wire/Intel built-in wireless/whatever.
- Irritatingly, xterm is not included in the default configuration of kubuntu; this script requires it. To get it, open Adept Manager (K-menu, Utilities, Adept Manager), Synaptic, or your Ubuntu variant’s favourite package manager, search for ‘xterm’ and install it. You can also do so from the command line:
sudo apt-get install xterm
- Go to the forum thread.
- Download and start the “internet” (online) version of the script only, whilst in X and not as root, through a Konsole/xterm/gnome-terminal/favoured terminal emulator:
cd /tmp
wget http://blakecmartin.googlepages.com/bcm43xx-0.3.2-internet.tar.gz
tar xvfz bcm43xx-*.gz
cd bcm43*
./installer.py
- Now, the following window should appear:

- Select to “install ndiswrapper and Broadcom Windows driver”. If you have the BCM43xx it mentions here, this should work straight off. Else, you’ll just have to clean up after itself. It’ll sudo out, fetch the Linux kernel developer tools if you don’t already have them and then use them to download and compile ndiswrapper from source.
- For my Belkin, the Broadcom drivers it downloads and installs are the wrong ones. To remove the wrong one, go to your terminal and type:
sudo ndiswrapper -r bcmwl5
- The right ones are contained either on your original CD-ROM or downloaded off Belkin’s website; the XP drivers download as an .exe file.
- To extract the driver from the EXE file, navigate to the location where it is, right-click and select “Open With”. Open it in ark or your favoured archiver; ark will ask which type of file to treat it as, which should be “Archive Zip”. You can then extract the files needed to a temporary directory, which are bcm43xx.cat, bcmrndis.inf, f5d7051.dll, rndismpk.sys and usb8023k.sys.
- Unfortunately, these files extract all in capital letters, and this causes a failure because Linux’s file system is case sensitive. So you’ve got to rename them all before issuing the installation command to ndiswrapper.
mv BCM43XX.CAT bcm43xx.cat
mv BCMRNDIS.INF bcmrndis.inf
mv RNDISMPK.SYS rndismpk.sys
mv USB8023K.SYS usb8023k.sys
mv F5D7051.DLL f5d7051.dll
sudo ndiswrapper -i bcmrndis.inf
- Now go over to ndiswrapper’s directory and see if it’s working:
cd /etc/ndiswrapper/bcmrndis
ls
The directory listing should be:
050D:7051.F.conf bcm43xx.cat f5d7051.dll usb8023k.sys
1799:7051.F.conf bcmrndis.inf rndismpk.sys
- Ask ndiswrapper what drivers there are with a ‘ndiswrapper -l’ command, which should produce something like this:
bcmrndis : driver installed
device (050D:7051) present (alternate driver: rt2500usb)
- Unfortunately Linux’s driver for a Realtek chipset thinks this is one of theirs, as pointed out by the ‘alternate driver’ bit there – the other USB Belkin stick in the same category, the F5D7050, is based on the RT2500.
- So you need to tell Linux not to load the driver for the RT2500, which you do by editing the blacklist as root – ‘sudo kate /etc/modprobe.d/blacklist’ (replace kate with gedit for GNOME people, or whatever editor you prefer. I used vi) and add the following line to the end:
blacklist rt2500usb
- Reboot your machine so it loads the ndiswrapper module at the right point.
If all’s well, when you boot your NetworkManager will be scanning your Belkin stick as well. You can make sure, again, from the command line: if you type in ‘iwconfig’ and see listed amongst the networks listed ‘wlan0’, it’s working.
And they say Linux isn’t ready for the desktop. Unfortunately, they’re right, but in this case that’s Broadcom’s fault for not releasing the Linux drivers we know they actually have. Nevertheless, it’s still at the Windows 3.1 level of hardware configuration and when compared to Vista’s effective Windows Update driver search or Mac OS X’s “plug it in, it works” philosophy it’s getting a bit lacking. Still, if NetworkManager is any example hopefully it’ll improve over time.
Thanks go to Google for the information (and if you want to learn more, I highly recommend googling on F5D7051 Linux or similar and reading all the stuff that comes up) and I hope this is of some use to you.