OSU Wireless on Linux

18 January 2006, 11:32 CST

So the OSU Wireless system “…does not [offically] support Linux” but they do give enough clues as to how to set up as to be helpful. By combining their config file with the instructions from How to setup WPA on FC3 and a few other scattered bits, I was able to get a Winbook mini-pci wireless card working on a dell laptop. For the sake of completeness, some of the instructions are nearly exactly the same from the two above articles.

The wpa_supplicant compile instructions need a little help to work with the OSU system. Before that, however, you need the correct driver for your particular card. The drivers that would have normally shipped with this card were not working correctly for some reason.

You can find out what kind of card you have by doing

% /sbin/lspci

and looking through the list to see what you have. To get the PCI ID, you need to do

% /sbin/lspci -n

and match up the first column from the two outputs to find the ID. In my case, I see:

% /sbin/lspci
...
02:03.0 Network controller: RaLink Ralink RT2500 802.11 Cardbus Reference Card (rev 01)
% /sbin/lspci -n
...
02:03.0 Class 0280: 1814:0201 (rev 01)

So after you have the driver unpacked somewhere, here’s what I ended up doing:

install ndiswrapper. No special config there, just

% make install
% /usr/sbin/ndiswrapper -i [Location of the XP driver .inf file, see above]
% /usr/sbin/ndiswrapper -m

Still following the directions provided by bärtil…

Reconfigure the network with

% system-config-network

. This is the easiest way I’ve found to add a new network device. You want

New -> Wireless Connection -> ndiswrapper (wlan0)
Use these settings:

Mode:Auto
Network name: (o)Specified: osuwireless
Channel:1
Rate:Auto
Key:[leave empty]
(o)Automatically obtain IP address settings with |dhcp^|

The next bit, compiling wpa_supplicant gets a little bit tricky, but it isn’t too bad. You need to add a file to the wpa_supplicant-x.y.z source directory called “.config” (the leading . is important) with these lines:

CONFIG_CTRL_IFACE=y
CONFIG_DRIVER_NDISWRAPPER=y
CONFIG_EAP_PEAP=y

Compile, and install:

% make
% cp wpa_supplicant wpa_passphrase wpa_cli /usr/local/bin

Now, you’ll need to setup the wpa_supplicant config file, as directed by the OIT document. Create/edit a file called

/etc/wpa_supplicant.conf

and add these lines to the configuration:

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
eapol_version=1
ap_scan=1
fast_reauth=1
# EAP-PEAP/MSCHAPv2 configuration for RADIUS servers that use the old peaplabel
# (e.g., osuwireless)
network={
   ssid="osuwireless"
   scan_ssid=1
   key_mgmt=WPA-EAP
   eap=PEAP
   identity="your-username"
   password="your-password"
   phase1="peaplabel=0"
   phase2="auth=MSCHAPV2"
   priority=1
}

The OSU instructions say to use ‘0’ for ctrl_interface_group. I disagree because you’re putting it into root’s group by using 0, and any problems or security flaws that application has can cause the system to be exposed, which is why I put it into the group ‘wheel’. I’m unsure of the effects of changing the group beyond this.

You will need to get your OSU Wireless username/password (not the same as your name.n username/password) to fill in the identity and password elements. The quotes surrounding the options in the .conf file should be there, don’t leave them out.

Once you get that bit finished, and you think everything is good to go, bring up the interface

% wpa_supplicant -c/etc/wpa_supplicant.conf -iwlan0 -d

You should get a screen full of information that has a couple of lines like

Starting AP scan (specific SSID)
Scan SSID – hexdump_ascii(len=11):
6f 73 75 77 69 72 65 6c 65 73 73 osuwireless

at this point, the screen will pause while it negoiates with the Access Point.

If you’ve gotten this far, chances are it is going to work. However, you can keep waiting to see what happens. It will go through a few more scrolls and pauses.

If you get error messages, try googling for the message and see what you come up with. Are you actually in range of an AP? Sometimes the error is because the interface was not configured correctly, maybe because the driver is the wrong one? If so, you’ll need to step back and work with the ndiswrapper to install a different driver.

If you’re satisfied, you can add a wpa_supplicant command to the ifup script, like so:

% echo /usr/local/bin/wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -wB >> /etc/sysconfig/network-scripts/ifup-wireless

Be sure you use two > marks, or you’ll overwrite the existing file, instead of appending it. Don’t do that.

One more step to be sure that you can take the interface up and down:

% echo killall wpa_supplicant >> /etc/sysconfig/network-scripts/ifdown-wireless
% chmod 755 /etc/sysconfig/network-scripts/ifdown-wireless

killall has a very different effect on Solaris machines…

If all is well, you can bring up the interface like so:

% /sbin/ifup wlan0

It will take a minute or so to negoiate.

You can make sure it worked by using

% /sbin/ifconfig wlan0

You should see a line (the 4th line or so) that says

UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

Happy surfing!


References:
http://ndiswrapper.sourceforge.net
http://hostap.epitest.fi/wpa_supplicant/
http://hostap.epitest.fi/cgi-bin/viewcvs.cgi/*checkout*/hostap/wpa_supplicant/README?rev=HEAD&content-type=text/plain
http://8help.osu.edu/2672.html
http://forums.fedoraforum.org/archive/index.php/t-25891.html
https://acctmgt.service.ohio-state.edu/Wireless.html

Leave a Reply