Wednesday, March 8, 2006

How Can They Be Jamming Us If They Don't Know We're Coming?
The Sears Tower, a Router, a LinkSys WPC54G, and LVM.

It all started when I moved the router in my office to get a better signal in the lecture room. I put it on top of the monitor of the computer next to where I set, so that my Dell Inspiron 8600 laptop could load a web page from across the building. That worked just fine. Except....

Two days later, I noticed two people with an oscilloscope and radar dish going up and down the hallway. "I wonder what that is?" I thought. A few hours later, one of them rolled it up to my door, knocked, and asked "Do you have anything in here emitting a 2.6 GHz signal?" as if it were a perfectly natural thing to ask and the most people would know the answer off the top of their head.

I mentioned that I was running a wireless router, a piece of junk from Hawking Technology that has been nothing but trouble ever since I got it. The network connection has always been flaky. My visitor mentions that such things run on a 2.4 GHz frequency, and should not be a problem. Wanting to be helpful, I offered to unplug it for him, to verify whether or not it was the source of the rogue signal. Sure enough, it was.

As it happens, IIT broadcasts their online courses from a dish on top of my building to another antenna on top of the Sears Tower. The signal is at 2.6 GHz. My router was causing all kinds of interference, and they had spent the last two days trying to hunt it down. Wow... I'm responsible for a signal being jammed at the source! Last time I saw a signal jammed at the source, it was the fault of some people who went to Ceti Alpha 5 and got eels put down their ears. Fortunately, that didn't happen to me. But in any event, that router is an FCC violation and can no longer be used.

A true hacker is happy when equipment breaks, because it's an excuse to buy new equipment. I went to the office supply store and picked up a new LinkSys WRK54G wireless router with a bundled WPC54G v.4 PCMCIA card. I got the extra card because I had wanted to replace my Orinoco card for a long time now with something that supported the 802.11g protocol, and that could scan for available networks (for some reason, my Orinoco card can't do that).

LinkSys routers are pretty solid. I haven't even tested it yet, feeling pretty confident that when I get to the office I can plug it in and it will Just Work with a minimum of configuration. The network card, on the other hand, would require some tinkering. For some reason, most wireless network card manufacturers hate Linux users. Or perhaps they simply can't be bothered with us, because very few will actually release drivers for their cards.

My new card's model is INPROCOMM IPN2220. Doing a quick Google search, I discovered two choices: either use the freeware ndiswrapper utility, or else use the Linuxant driverloader, which costs $20 for a license. The ndiswrapper didn't work at all, so I took Linuxant up on their offer of a free 30-day evaluation license. The basic idea is that these utilities load the Windows drivers and make a compatibility interface for Linux.

With the Linuxant driver I had partial success... the card was recognized, but it wouldn't connect to my router. The installer said that Windows uses a 12k stack, but my kernel was compiled with a 4k stack, and warned that this could cause problems. So, I recompiled my kernel for 8k stacks to see if it changed anything.

It did.

The kernel wouldn't boot anymore.

The LVM (Linux Volume Manager) software that manages the partitions on the hard drive wouldn't run anymore. No hard drive manager means no using the hard drive. The computer is not very useful without one of those. Ironically enough, about an hour before this I had helped someone set up a wireless network over the phone. That's the problem with being a computer guru. If someone else's computer breaks, they can call you. But if your computer breaks, you don't have anyone to call.

The next morning, I tried a few different things to fix the computer. The backup kernel (always keep an older kernel as a backup!) worked just fine, but the new one didn't, so I tried recompiling and reinstalling a few times. This didn't work. I tried rebuilding the LVM program, and noticed that at the end of the build process it reran the ldconfig program. Aha! LVM needs the kernel modules, and when I changed them, it broke LVM! Rebooting confirmed the suspicion; the machine would boot now. Moral: if you recompile the LVM kernel modules (ds and md_mod), make sure you relink your LVM utilities.

Now I could focus on the original task: to get wireless working. Note, I'm using a Gentoo distribution. I tried iwlist scan and was able to get a list of the networks. I used iwconfig to set the essid, nickname, and WEP key. But dhcp still would not connect.

It seemed that everything was set properly, but it still would not find the access point. I tried using iwconfig eth0 ap XXXXXX (where the Xs are my router's address), and it connected! This is somewhat annoying... I would have expected the connection to happen automatically. But at least I have a working internet connection now.

There's still a bit of work to do. The Gentoo network script needs to be made to handle this automatically. When I plug in the card, it sets the nickname to be what the essid should be (I don't get why it's doing that), and at boot time it no longer starts the PCMCIA utilities (though it thinks it's doing it). But at least the computer works again, and maybe this writeup will help someone else in the same situation.


John said...

I bow down in reverence to your superior nerdiness.

Amy said...

Gosh you're smart!

Alex Rakoczy said...

The title to this article is genius.