Please create an account to participate in the Slashdot moderation system

 



Forgot your password?
typodupeerror
×
Wireless Networking

Journal aarmenaa's Journal: On Linux Wireless (And Slashdot's Cool) 2

Early Friday morning I commented on a Slashdot article about the new version of Ubuntu being announced. Frankly, I'm impressed with the strides the Ubuntu people have made in making desktop Linux workable for the masses, and I said so. I also mentioned that the only complaint I could really come up with was that wireless networking was still not quite up to par for most people. I only mentioned this because I found such a complaint insignificant compared with what I was complaining about a year and a half ago. So props to the Ubuntu people then; they've made lots of progress.

But, it would seem that lots of people picked up on my wireless issues. In fact I was downright surprised to get no less than five responses either asking for more information on the issue, or giving me suggestions on how to get my stuff working. I didn't get anything working out of that, but I did learn a bit, so Slashdot has basically just renewed my faith in it's awesomeness. Anyways, I thought I'd lay out exactly what I've been working on the last month.

The Original Setup

Originally, I had a Toshiba Portege 3500 tablet PC that I picked up for free. It was broken, but turns out it just need a hard disk, an expense I couldn't pass up just to get a free tablet. It does not, however, have an internal CD-ROM. There was apparently a portable CD-ROM that connected through the PCMCIA slot at some point, but I've not been able to track one down. Of course, the darn thing won't boot anything through it's USB 2 ports. So, I also bought and adapter to connect the new laptop hard disk to my desktop computer, and installed an old copy of MS-DOS 6.22 on a 2 GB partition, copied my Windows XP CD to that partition. The cool thing is, I can now put the hard drive back in the laptop, boot to DOS, and then run an executable (i386/WINNT.EXE, if I remember correctly), and the installer will come up. It required a little bit of DOS knowledge I had long since neglected, such as setting up himem.sys and smartdrv (disk caching), but it worked.

Once I had Windows installed, it was all pretty much smooth sailing. Everything seemed to work fine, only I couldn't connect to my school's wireless network. It turns out that the wireless card in the laptop only supports WEP encryption, and my school wisely uses WPA encryption. So I bought a USB wireless card that uses the Ralink RT73 chipset, which was said to be Linux compatible, and had support for newer encryption standards. It worked great with SecureW2, the supplicant my school chose to handle encryption and authentication. It's roughly comparable to xsupplicant or maybe wpasupplicant on Linux.

Now, With New Linux Flavor!

Of course, I had to format the laptop when Windows started doing odd things, and using the same steps did not yield working results (damn Window's inconsistencies!), so I figured now was as good a time as any to play with Linux on it. I had been considering this since I bought the "Linux Compatible" wireless card anyways. I actually spent a good bit of time attempting to get the install working from DOS in the same manner I did for Windows. It turns out that while there are some tools that can help with this, I was not able to figure it out after a month of trying. So instead I hooked up the laptop hard drive to my desktop again, and installed Ubuntu on it on my desktop. I then moved the drive back to my laptop. This worked well enough; I had to rewrite some config files but it did work and I was very happy to note that it detected all my hardware beautifully.

Then I hooked in the USB dongle. It was detected, and immediately associated with my neighbor's unprotected access point. Nice! Working support, as advertised on the box! Ubuntu pops up telling me I should update my install before I get owned by a script kiddie, and I start the process of downloading and installing something like 120 updated packages. I go get something to eat and when I come back everything's done. I restart the laptop, and I've never been able to replicate my first success with Ubuntu's built-in driver again. Ever. Ever after reinstalling.

About That RT73 Driver

It turns out, of course, that the "rt73usb" driver is actually an old version of the open source driver project by Serialmonkey, which deals with support for man Ralink wireless chipsets. This included driver version in Ubuntu is known to be broken by the Ubuntu people. Of course new versions of this driver from CVS (the only way to get the driver) haven't worked properly since December 30, 2006. It's still an extremely beta driver. Unfortunately, I'm not very proficient with Linux yet, and haven't figured out how to pull old versions of the driver from CVS, and didn't really want to mess with compiling it, so I didn't. Instead, I went and got the manufacturer's driver for the stick. Reading through some information about it, it doesn't support the Linux Wireless Extensions (wext). This is an API that has become the standard for wireless management tools. Tools such as xsupplicant, wpasupplicant, and so on generally require either specific chipsets and drivers, or that your driver support wext in order for the magic to happen. The manufacturer instead expects you to use their configuration program, which supports WPA in various configurations, none of which are vigorous enough to connect to my school's network with. So that pretty much kills all the native Linux drivers, at least for my purposes.

What I ended up doing is blacklisting rt73usb, installing ndiswrapper, and using the same driver I used on my Windows setup. This seems to work pretty well, it will connect to unencrypted or WEP access points. I can't test WPA because I don't have an access point that supports it to test with, though. It will, however, hotplug beautifully. That's right, using a Windows driver though ndiswrapper to run a USB wireless adapter actually doesn't cause a monstrous rip in the space-time continuum, which both surprised and disappointed me.

Just for kicks, I upgraded to the 7.04 (feisty) beta, and attempted to do some work there. The Serialmonkey driver is not SMP-friendly, and apparently can possibly cause all sorts of issues. Ubuntu's kernels are all compiled with SMP enabled now. Of course, I ran into one of these issues where the computer would lock up anytime the stick was connected. Attempting to blacklist rt73usb in 7.04 just like I did in 6.10 didn't work, so I got pretty much nothing done. It does raise the question: has the driver been changed? Because I didn't used to have this problem. I read a launchpad page (which I can no longer find) that said they would not have this driver updated in time for shipping 7.04, so either they changed their mind or the newer kernel is bringing out flaws that were previously unexpressed.

The Sooper-Secure Wireless Network

My school provides a nice list of specifications that apparently aren't very complete. At least, I was using all kinds of things that aren't listed. They also provide a setup guide for Mac OS X, which proved to actually be more useful for me. The school doesn't give any instructions for Linux. In case they take those pages down or something, the specifications say this:

SSID:hornet
Authentication Method: 802.1x
Authentication Type: EAP-TTLS
Encryption Type: WPA
Key Style: TKIP
Certificate Authority: Thawte
Domain:(leave blank)

I also get a username and password. They left out the fact that the authentication is done through PAP, and the specific certificate they're using, which happens to the Thawte Premium Server CA, which I found located at /etc/ssl/certs/Thawte_Premium_Server_CA.pem. I know what cert they're using only because I was reading the output from xsupplicant and noticed it complaining that I hadn't specified that root CA.

Network-Manager Sure Is Nice

I fancied myself pretty swift when I figured out that I could just use ndiswrapper to get around my issues, and moved on actually configuring wpasupplicant (I tried it first). Of course, being the lazy person that I am, I really didn't want to have to research how to write the configuration myself, so I decided to install Network-Manager, a GNOME application that will configure all this stuff for you. How nice, except it seemed to break everything. My loopback interface quit coming up, my network interfaces seemed to go up and down randomly, and I couldn't scan for a list of access points anymore. Turns out I hadn't configred it correctly; it took posts by Knuckles and WaZiX to straighten my ass out. Doesn't matter anyways though, because Network-Manger currently doesn't support phase2 authentication (at least in the version Ubuntu is shipping), which I apparently need because my network does it's authentication though PAP.

Config File, We Meet Again

It took me quite a while to generate a configuration file for wpasupplicant, and even after hours of tweaking and walking back and forth between my school's network and my room (which is not in range of the AP), I still couldn't get it to do anything interesting. I thought maybe wpasupplicant didn't support my school's decidedly odd setup (I'm under the impression that WPA with TKIP is kinda unusual, as TKIP is usually a WEP thing) was messing things up. So I went googling and found xsupplicant instead. I wrote up a config file, and lo and behold, I got authenticated! But it still won't move any data back and forth, so I get no IP and no love. A bit more Googling tells me that you can apparently run both xsupplicant and wpasupplicant at the same time, and it may be required in order to get my setup fully working. To do this, you write your full xsupplicant config, and then just specify your SSID and WPA-EAP to wpasupplicant, and you're good to go. This would seem to be on the right track as I got "AUTHENTICATED" status in xsupplicant, but wpasupplicant keeps getting some error about failing a 4-way handshake when trying to set up the encryption. Going back to the same page, you apparently need to use a -W switch when running xsupplicant, so it will provide keying material to wpasupplicant (whatever the hell that means). Of course, I can't find this switch documented anywhere, it doesn't seem show up in my version of xsupplicant anyways. Either I need a newer version or an older version, but I can't tell which.

Where We End Up

So, basically where I'm at now is I don't know if I even have my config files set up correctly, and I can't find the command switch I need. I still don't understand why wpasupplicant isn't capable of anything on it's own, or why xsupplicant apparently needs wpasupplicant to handle WPA encryption. It may be that I just can't do what I want to do because I'm using ndiswrapper. I don't really know how well we can map those Windows drivers into Linux, but it seems to at least almost work. I'd love to try a native driver, but I'll probably have to wait for further development for that one.

I'm probably going to go talk to some people in Ubuntu's IRC channel at some point, someone in there probably can give a next step to try anyways. I hate doing this sort of thing through IRC, though. Chat rooms move entirely too quickly for me to track who I'm talking to currently, and they're not the best medium for long-winded explanations like this from long-winded people like me. They also don't transfer config files gracefully. But, apparently all the good help is hanging out there, not on the forums, so I'll give it a shot.

This discussion has been archived. No new comments can be posted.

On Linux Wireless (And Slashdot's Cool)

Comments Filter:

Happiness is twin floppies.

Working...