This How-To describes how to get WiFi working with the Broadcom 1390 WLAN offered in many Dell and HP laptops using ndiswrapper. Many of us use ndiswrapper as an alternative to the native drivers (b43), as we feel the native drivers have no quite reached a point where they compare with ndiswrapper, usually this relates to only being able to use 802.11b connections (11Mbps) as opposed to 802.11g (54Mbps).
The how-to has been tested on an AMD64 install of the Hardy Heron Release Candidate (and I'm sure will soon be tested on an i386 install).
THIS HOW-TO IS FOR UBUNTU HARDY HERON (8.04) ONLY. The How-To is loosely based on Paperdiesel's How-To for earlier versions of Ubuntu which can be found
here. If you are not running Hardy, then this How-To will not work. You should refer to
paperdiesel's How-To.
DISCLAIMER It's important to note that many people struggle to get wireless working simply because they have unsuccessfully tried a variety of methods and left their system in a shambles. If you've been playing around with alternative methods there's a good chance you won't be able to get this to work until you reverse any previous changes you may have made. It's perhaps best to come straight to this How-To after a fresh install.
To check that you have the same card that this how-to is written for, run the following command:
Code:
lspci -nn | grep 14e4
and you should see something similar to the following:
Code:
05:00.0 Network controller [0280]: Broadcom Corporation BCM94311MCG wlan mini-PCI [14e4:4311] (rev 01)
The section in bold is the important part. If that part doesn't match then you will need a different driver to use with ndiswrapper. The how-to should still be valid however!
STEP 1: OBTAINING THE REQUIRED PACKAGES
Thankfully, Hardy includes a new enough version of ndiswrapper to remove the need for installing it from source. This saves a lot of trouble during the install process.
For the install process I find it best to create a separate working directory to get all this done in. You can use whatever directory you'd like so long as you're consistent, if you're unsure copy the way I've done it.
Most of the work from here on will be done from the command-line, so open up a terminal (Applications > Accessories > Terminal), and use it to create your working directory:
Code:
mkdir wireless-install
cd wireless-install
First we need to obtain the correct XP driver (Vista drivers WILL NOT WORK with ndiswrapper) for this chipset, and also install some extra packages. This is easy if you have access to the internet (via a wired connection or otherwise):
Code:
wget http://ftp.us.dell.com/network/R151519.EXE
NOTE: If lspci above showed that you had a different chipset, this driver won't work. You're welcome to try using a different driver, however ndiswrapper is a temperamental thing, so I can't guarantee it will work with just any driver. A google search for the number relating to your card, ie. 14e4:4315 or 14e4:4318, and ndiswrapper should return a driver you can use quite quickly.
Next install ndiswrapper. The latest version is available from the Hardy repositories which is a rather nice change for those of us who are used to the need to recompile ndiswrapper on every kernel change!
Code:
sudo apt-get update
sudo apt-get install ndiswrapper-common ndiswrapper-utils-1.9
If you have no internet access on your Ubuntu machine then you'll need to get the appropriate driver from
here and copy it to your working directory (~/wireless-install). The packages can be installed from your trusty Hardy LiveCD (a Gutsy, or any other, LiveCD WILL NOT WORK):
Code:
sudo apt-cdrom add
#When prompted, insert your Hardy CD and press enter
sudo apt-get update
sudo apt-get install ndiswrapper-common ndiswrapper-utils-1.9
NOTE: Hardy behaved oddly with this so I had to work around a bit to get the above to work, it wasn't as simple as it should be. If anyone else has this issue I'll edit the above to use my workaround and post a bug report (I'll probably do the second anyway).
STEP 2: PREVENTING THE NATIVE MODULES FROM INTERFERING WITH NDISWRAPPER
This process is not quite as simple as it has been in the past due to the different native modules and how they interact with each other. So firstly we're going to blacklist a few things by adding them to the /etc/modprobe.d/blacklist file:
NOTE: You can do this with a text editor, using "gksudo gedit /etc/modprobe.d/blacklist" for example. I just like to do it the fancy way! So if you copy and paste the line below, you can't go wrong!
Code:
echo blacklist b43 | sudo tee -a /etc/modprobe.d/blacklist
We also need to add a bootscript to load a couple of modules in an order that suits us. The reason being that the ssb module takes control of our card, thus preventing ndiswrapper from controlling it, however ssb is required by the b44 driver, which handles wired broadcom cards, so we can't just blacklist it. If you would like (and know how to), you can easily use a new script to do this, however the easiest way I find is to add it to /etc/rc.local. To do this we need to edit the file:
Code:
gksudo gedit /etc/rc.local
Feel free to replace gedit with the text editor of your choice (kate, mousepad, emacs, nano, vi, bluefish, etc), then add the following to lines to the end of the script, just before the "exit 0":
Code:
modprobe -r b44
modprobe -r ssb
modprobe ndiswrapper
modprobe b44
To give you an idea, my /etc/rc.local now looks like this:
Code:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
## Loading ndiswrapper and b44 in correct order
modprobe -r b44
modprobe -r ssb
modprobe ndiswrapper
modprobe b44
exit 0
STEP 3: INSTALLING THE DRIVER WITH NDISWRAPPER
Now we're going to use the driver we downloaded from the Dell website (note that it doesn't matter if your laptop is not a Dell, this driver should still work if you have the same chipset) to give ndiswrapper all it needs to access our card:
Code:
cd ~/wireless-install/
unzip -a R151519.EXE -d R151519/
cd R151519/DRIVER/
sudo ndiswrapper -i bcmwl5.inf
NOTE: Make sure you use the right case, in Linux driver and Driver very different to DRIVER.
And that's it! You should be just a reboot away from having a working wireless card:
Code:
sudo shutdown -r now
If you'd like to verify it's working properly without the need for a reboot, try the following series of commands:
NOTE: This is essentially what the script we added to /etc/rc.local does, only that script doesn't need to remove the b43 module as it is blacklisted and should not be loaded to start with.
Code:
sudo rmmod b43 b44 ssb
sudo modprobe ndiswrapper
sudo modprobe b44
If your laptop has a wifi-light it should light up after you modprobe ndiswrapper.
CLEANING UP
Once you're happy everything is working well, you can safely remove the working directory:
Code:
rm -r ~/wireless-install
Or you could keep it on hand for future reference!
TROUBLESHOOTING
If you have any trouble with the How-To or it doesn't work as expected please post in the thread. I check the thread quite often and I'm always happy to help. It's also possible there's something I've missed which I can then incorporate into the How-To for everyone else to benefit from. If you're posting seeking help, please include the outputs of the following commands:
Code:
lscpi -nn | grep 14e4
ndiswrapper -l
lsmod | grep b43
lsmod | grep ndiswrapper
ls -l /etc/rc.local
as well as anything else you think is relevant. Please include long code outputs in [code] tags (the # button in the advanced edit view) so they're easier to read.
UNINSTALLING
If for some reason you'd like to remove everything that this how-to has done, it's rather simple:
Undo the file changes we made:
Code:
gksudo gedit /etc/modprobe.d/blacklist
# Remove the line we added: "blacklist b43"
gksudo gedit /etc/rc.local
# Remove the four modprobe lines we added
Remove the driver we told ndiswrapper to use:
Code:
sudo modprobe -r ndiswrapper
sudo ndiswrapper -e bcmwl5
Remove ndiswrapper:
Code:
sudo apt-get remove ndiswrapper-common ndiswrapper-utils
Changelog:
21/04/08: Made minor clarifications to layout
22/04/08: Added Troubleshooting section
Bookmarks