Using the Linksys WPC54G (v2) and WPA with Ubuntu Gutsy
December 30th, 2007 by Dave
(Updated 20 Jan 2008–added “sudo ndiswrapper -m” step, and added a note about manual configuration)
(Updated again on 5 Mar 2008–clarified some steps in the instructions)
You can probably figure this out for yourself if you search the web diligently. In fact, here’s a nice overview. Here’s my method for getting my WPC54G wireless PC card working with WPA wireless security under Ubuntu Gutsy Gibbon (7.10). The computer I’m installing on is an old IBM T23.
It’s worth noting a few things up front. First, My WPC54G is labeled “Ver. 2″ on the back. Many Linksys adapters come in multiple versions, and different versions tend to use different chipsets internally, so instructions for getting one version to work may not work for a different version.
Second, in my case the WPC54G worked out of the box with Ubuntu 7.10, until I tried to use WPA for my wireless encryption. Once I turned that on, the notebook basically turned into a brick. The solution, it turns out, is to use the WPC54G via ndiswrapper. It’s not as hard as it sounds or looks.
Here’s what you need:
- The Ubuntu 7.10 live CD (we’ll install ndiswrapper from it)
- The Linksys setup CD that came with your wireless adapter (they appear to be in the root directory of my CD, anyway). I’ll list the individual files needed later.
You do not need an active internet connection in order to get this working, but hopefully you’ll have one after you finish!
Okay, here are the steps.
1) Remove the adapter from its slot.
2) Install ndiswrapper using the Synaptic Package Manager (it’ll install it from the Ubuntu Live CD, so make sure your CD is in the drive). You can start the Synaptic Package Manager from the main menubar (System/Administration/Synaptic Package Manager). You need to install two packages: ndiswrapper-common and ndiswrapper-utils-1.9 (you can use the Search button in the Synaptic Package Manager to find these–search on “ndis”).
3) Next, we need a place to put the driver files, so create a folder named “Linksys” (or whatever you want) under your home directory. To do this, click Places/Home Folder from the main menubar, and when the File Browser window appears, right-click somewhere in the window and select “Create Folder” from the popup menu that appears, and then type the desired folder name when the new folder appears.
4) Now we’ll copy the driver files from the Linksys installation CD for your adapter. Stick your Linksys installation CD in the drive. Copy the following files from the root directory of your CD to your newly-created “Linksys” folder:
FwRad16.bin
FwRad17.bin
LSTINDS.INF
tnet1130.sys
tnet1130x.sys
Before we go any further, we need to fix up a couple of things. First, rename tnet1130.sys to TNET1130.sys, and rename tnet1130x.sys to TNET1130X.sys. Then edit the LSTINDS.INF file and change all instances of “tnet1130″ (regardless of case) to “TNET1130″ (all uppercase), and likewise all instances of “tnet1130x” to “TNET1130X”.
5) Install the drivers using ndiswrapper. Open a terminal window and cd to the directory containing LSTINDS.INF. Then at a terminal prompt type
sudo ndiswrapper -i LSTINDS.INF
6) Now install ndiswrapper as a module. Type
sudo depmod -a
sudo modprobe ndiswrapper
7) Next we need to prevent the native driver for this device from loading. Type
sudo modprobe -r acx
(-r unloads the driver named acx). Then edit the /etc/modprobe.d/blacklist file:
sudo gedit /etc/modprobe.d/blacklist
and add “blacklist acx” (without the quotes) at the end of the file.
8) Now insert your wireless card. Then type
ndiswrapper -l
You should see output that looks like this:
lstinds : driver installed
device (104C:9066) present (alternate driver: acx)
If so, your card was detected and associated with the correct driver.
9) Now add an alias to associate your wireless network interface to ndiswrapper in /etc/modprobe.d/ndiswrapper. Type
sudo ndiswrapper -m
10) Set ndiswrapper to load automatically. Edit the /etc/modules file:
sudo gedit /etc/modules
and add “ndiswrapper” (without the quotes) at the end of the file.
11) Reboot. After the reboot completes, you should be able to left-click on the Network icon toward the right side of the main menubar and have it display a list of wireless networks. Click the radio button next to the wireless network you’d like to connect to. You’ll be prompted for the network wireless password. Enter it, and you should soon be connected!
If you open up the Network Manager and examine the settings for your wireless adapter now, you’ll see that it’s been set to enable roaming mode. This means that your IP address and will by dynamically assigned by the network it connects to. This is fine for most situations, but if you need to assign a static IP address to your PC, you’ll need to disable roaming mode and manually specify the network settings. My experience is that you will also need to undo step 10 above by removing the “ndiswrapper” line from /etc/modules.
This entry was posted on Sunday, December 30th, 2007 at 9:49 am and is filed under Make Room for Ubuntu. This post has 3,778 views. You can follow any responses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response. Pinging is currently not allowed.
January 20th, 2008 at 12:40 pm
Made it through Ndiswrapper, thank you and can make a connection manually. However, it won’t persist after reboot.
What should be in the /etc/network/interfaces file?
January 20th, 2008 at 3:25 pm
After consulting this how-to, I realized that I may have omitted a step–one that I didn’t realize was required. Try typing this at a command line:
sudo ndiswrapper -m
Supposedly, this adds an Alias to associate wlan0 to ndiswrapper in modprobe.d.
March 5th, 2008 at 12:20 pm
I found that the mixed case problem applied to tnet1130x as well as tnet1130, so I applied the same process:
renamed tnet1130x.sys to TNET1130X.sys and changed all locations to match in LSTINS.INF.
Also had a problem with the instructions:
sudo ndiswrapper -i LSTINDS.INF
since you suggest putting the flies in /home/yourusername/linksys, it should read:
sudo ndiswrapper -i /home/yourusername/linksys/LSTINDS.INF
Unfortunately if you didn’t make that correction, ndiswrapper does a partial installation and won’t accept retyping it correctly.
In that case you need to do a:
sudo ndiswrapper -r lstinds
Then retype correctly and install again. This wasn’t easy to figure out because the ndiswrapper man page in Ubuntu is pathetic. I guessed at the -r , and it happened to work!
Thanks however for puting these instructions up there — it worked for me!
March 5th, 2008 at 1:05 pm
Steve -
thanks for the corrections. Changing the name of tnet1130x.sys to uppercase was’t necessary for me, but it certainly doesn’t hurt to make that change, and I added it to the instructions. As for your other comment, my (poor) assumption when I wrote these instructions was that you’d already changed to the directory containing your driver files before trying to execute that command. I’ve now clarified that instruction.
Thanks again for your comments. Glad the instructions were helpful.
March 5th, 2008 at 8:19 pm
Wow, fast work Dave!
one more slight change and I think it will be perfect — the appearance of the tnet1130 references in the LSTINDS.INF file isn’t always to a .sys extension. So I actually just did a search on “tnet1130″ and made the changes to uppercase for all references. Therefore:
“Then edit the LSTINDS.INF file and change all instances of “tnet1130” to “TNET1130”, and all instances of “tnet1130x” to “TNET1130X”.
Thanks again!
March 5th, 2008 at 8:47 pm
Good point, Steve. I updated the instructions. Thanks!
March 8th, 2008 at 4:22 pm
Thank you so much…. I have been struggling for hours getting my Linksys WPC54G Ver2 running with WPA on Ubuntu 7.10. Followed instructions to the letter and worked perfectly
March 30th, 2008 at 10:34 am
I little comment. I’ve seen several posts in other forums using this and a few other tutes and I see this problem a lot: ndiswrapper reporting invalid driver.
This is a simple step but one I missed myself so I felt the need to post it here. Go back through LSTINDS.INF and triple check that you got all tnet1130 and tnet1130x instances changed to uppercase. Post 5 from Steve sums it up perfectly.
If you miss even one, you’ll get ‘LSTIND.INDS: Invalid Driver’.
Other than that, perfect! Many, many thanks Dave for the hard work. It saved me a ton of time and work!
bOnE