« Merry Christmas ... maybe | Main | Learning German »

January 07, 2007

Wireless networking in OpenSUSE 10.2

As I'm sure that everyone is aware by now, I've been using SUSE Linux 10.1 both here at home and at work. OpenSUSE 10.2 was released a few weeks ago, and I was excited about the new features that were included with 10.2. After installation I had one main problem: my wireless USB adapter wasn't working properly.

There is a built-in wireless module for my network card in the kernel. The rt2500usb module works out of the box, but it's very slow and doesn't display signal strength in the NetworkManager application. These problems are potential deal breakers for me. The slow speeds won't work because I can't take advantage of my fast Internet connection. I'm also a good distance from the wireless router, so I need to know what my signal strengths are at all times.

So, I decided to install my trusty fall-back measure ... the ndiswrapper utility. For those of you who don't know what this application is, I'll explain. Ndiswrapper is a wrapper for network adapters in Linux using standard Windows drivers. Since many wireless network vendors don't readily supply a module to use in Linux, this application can be used to make your wireless adapter work properly.

By using the ndiswrapper, it doesn't matter what wireless adapter I use. I don't have to ask myself "will this work with Linux" when I'm purchasing wireless networking hardware. All I need is ndiswrapper and a working Windows driver. I've used this method to achieve wireless access on my Linux boxes both here at home and at work successfully many many times over.

Then comes OpenSUSE 10.2.

Before this installation with OpenSUSE 10.2, I have never had a single issue with the ndiswrapper or Windows drivers in Linux. They just worked on the first try. For some reason, in OpenSUSE 10.2 the latest version of ndiswrapper (v1.33) doesn't work properly using and the current drivers for my wireless adapter, a WUSB54Gv4 (v20050503).

After installation, the NetworkManager application could see the wireless adapter and would show the wireless routers near me. But, no matter how many times I tried, I could never connect to my router. I tried many different things to get it running, but nothing worked. I couldn't get a connection to save my life.

I decided to revert to some older drivers and an older copy of ndiswrapper. I keep older backups of software and drivers on my usb flash drive as a precautionary measure, just in case if something like this ever happens. After some fiddling, I finally managed to get my wireless connection back up and running using the backup software and drivers.

So, be warned ... if you're using OpenSUSE 10.2 and the latest version of the ndiswrapper (v1.33) and driver for the WUSB54Gv4 (v20050503) with the NetworkManager, you may experience these same problems.

Now, to explain what I did to get everything working properly.

---------------------------------
Instructions for Installing NDISWRAPPER and WUSB54G in OpenSUSE 10.2
---------------------------------

1) First, Linux needs to unload the rt2500usb module that's included with the distribution. To do this, run the following command to unload the module from the system:

rmmod rt2500usb

Check to make sure that the module is no longer loaded in the system with this command:

lsmod | grep rt2500usb

If anything comes up with the second command, re-run the rmmod command until it is completely gone from the list. It should return absolutely nothing.

2) Once the module is unloaded, I need to make sure that it doesn't load again when the computer is rebooted. To do this, you need to add the following to the /etc/modprobe.d/blacklist file:

blacklist rt2500usb

This will tell OpenSUSE 10.2 to ignore this module on boot.

3) Next, you need to install the ndiswrapper module to the system. I'm assuming that you already have the file downloaded and untarred. As root, run the following commands in the ndiswrapper directory:

make uninstall (note: this command removes any previous installations of ndiswrapper)
make
make install

Note: Remain logged in as root through the rest of these instructions.

To make sure that ndiswrapper is running, type out the following command:

ndiswrapper -v

This will show what version of ndiswrapper that has been installed on your sytem. If you get nothing back from running this command, ndiswrapper isn't properly installed on your system.

4) Now, we need to install the Windows driver. Again, I'm assuming that you've already unzipped the exe and have navigated to the directory where the .inf file is located:

ndiswrapper -i xxxxxx.inf

Replace xxxxxx.inf with the proper .inf file that's in the driver directory. This will install the driver to the ndiswrapper. To make sure that it's properly installed, run the following command:

ndiswrapper -l

This will return information regarding the driver installed in ndiswrapper. If it's working, you should see something like the following:

rt2500usb driver installed, hardware present

IMPORTANT NOTE: You may see the following return when running this command:

rt2500usb driver installed, hardware (13B1:001A) present (alternate driver: conflict)

This means that there is more than one .conf file in the /etc/ndiswrapper directory. Sometimes when installing a Windows driver, it will put more than one .conf file in this directory. Make note of the hex number listed, in the example above it's 13B1:001A, and remove any .conf file that doesn't match this file in the /etc/ndiswrapper directory. This will resolve this error.

5) Now, we need to create an entry in Linux that will cause the ndiswrapper to auto-load on boot. Run the following command:

ndiswrapper -m

This will write the proper configuration information to the modprobe.conf file, making sure that ndiswrapper will load each and every single time to boot your machine.

6) Next, lets load the module into the system:

modprobe ndiswrapper

And verify that the module has been loaded:

lsmod | grep ndiswrapper

If you don't see anything return from this command, run the modprobe command again and check to see if you can see it listed. If not, you may have missed a step in the setup. Check your steps again to make sure that you didn't miss anything.

7) Once the driver is loaded in the ndiswrapper utility and we've loaded the module using modprobe, we need to make sure that the network card is using the ndiswrapper module. To change this, open YaST and go to "Network Devices". Under this section, you will find an option for "Network Card". Click on this and it will open the YaST configuration for network cards. Be sure to choose "NetworkManager" under the Setup Method, and click Next to continue.

When this module opens, you should see your wireless network card listed. In my case, it displays "Cisco-Linksys Wireless-G USB Network Adapter". Select this from the list and click on the "Edit" button below to continue.

Now you are in the configuration portion of the network card. At the bottom of the window, there is a button marked "Advanced". When you click on this button, a list of options appears. Select "Hardware Details" to continue.

This will put you in the Manual Network Card Configuration window. At this point, you should see a field called "Module Name". This should have the old rt2500usb module listed. Click in this field and type in "ndiswrapper" (without the quotes) and click "OK" to continue. Click "Next" in the next two windows to finish the configuration, and you'll be good to go.

8) Finally, lets restart the networking for safe measure to make sure that everything is working properly:

rcnetwork restart

You should see the NetworkManager disappear for a moment then come back up. Give the device a moment to detect the wireless access points around you, then select your wireless device from the list provided.

---------------------------------

NOTES:
For those who are curious, I'm using ndiswrapper version 1.26 which can be downloaded from the Sourceforge Web site.

For the Linksys WUSB54Gv4 wireless adapter driver, here is the driver info directly from the rt2500usb.inf file:

[Version]
DriverVer=04/13/2005, 2.00.02.0000
Signature="$Chicago$"
Compatible=1
Class=Net
ClassGUID={4d36e972-e325-11ce-bfc1-08002be10318}
Provider=%Provider%
CatalogFile=rt2500usb.CAT ;for WHQL certified


Side Note: I'm sorry to report that I don't know where to find this driver version at this point in time, as Linksys has removed access to it from their Web site. I've attempted to find another link somewhere on the net, but to no avail. If anyone knows where I can find this driver so I can link to it, please post a comment to this blog. :)

Update: After some research, I've found some older drivers on the DriverGuide.com site. You'll have to jump through a hundred hoops to sign up for the free account, but if you need an older driver, it'll probably be worth it. Just search through the Linksys drivers for WUSB54G and you should find what you're looking for.

~out...

Posted by ed at January 7, 2007 03:41 PM

Comments

Post a comment

Thanks for signing in, . Now you can comment. (sign out)

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)


Remember me?