airo350 + wpa_supplicant + ndiswrapper
After struggling to get my PCMCIA airo350 wireless card to work with PEAP in NUS for years, I finally caved in and used ndiswrapper. I know, I know, kernel 2.6.17 and above is supposed to support it, but that is for cards with firmware version 5.30.17 "or later". My card is 5.60.x, which is too much later, I guess.
Grabbing the files from Windows XP
So, no choice but to use ndiswrapper. So I boot to Windows, and checked out the files used by the Aironet 350 device (driver properties -> files), and grabbed the files c:\windows\inf\netx500.inf and c:\windows\system32\drivers\pcx500.sys. Just FYI, pcx500mp.sys is for the Aironet 350 Mini-PCI card.
Installing the Windows drivers
Then I boot into Linux, and installed ndiswrapper(1.33), and wpa_supplicant (v0.5.7).
Next, I have to install the drivers. This was easy. First make sure the 2 files are in the same directory, then install the driver.
# install the driver
root $ /sbin/ndiswrapper -i /path/to/netx500.inf
# check the driver is installed
root $ /sbin/ndiswrapper -l
netx500 : driver installed
# insert the pcmcia card, then load ndiswrapper
root $ modprobe ndiswrapper
# check ndiswrapper is loaded
root $ lsmod
Module Size Used by
ndiswrapper 195284 0
root $ dmesg
[...]
ndiswrapper version 1.33 loaded
usbcore: registered new interface driver ndiswrapper
There's a problem. Ndiswrapper is not able to automatically create the PCMCIA configuration. I have to do this by manually. I wrote one using the configuration it has already generated (14B9:0350.5.conf) as a guide.
# save this as /path/to/ndiswrapper/netx500/14B9:929B.8.conf (e.g /etc/ndiswrapper/netx500/14B9\:929B.8.conf)
# the '8' in the filename is because CardBus is device type 8.
NdisVersion|0x50001
Environment|1
class_guid|4d36e972-e325-11ce-bfc1-08002be10318
NetworkAddress|XX:XX:XX:XX:XX:XX
driver_version|,07/01/2001,7.29.0.0
BusType|8
FormFactor|PCMCIA
InfrastructureMode|1
LowerRange|ethernet
MediaDisconnectDamper|10
NodeName|
PowerSaveMode|0
RadioName|PC3500
Service|PCX500
SSID1|
SupportedRates|0
UpperRange|ndis5
Now we have to link the Cardbus PCMCIA slot to this configuration. As Cardbus slots are detected as PCI devices, we can use lspci.
# this is the CardBus device we have to take note of
root $ lspci
[...]
01:0b.0 CardBus bridge: Toshiba America Info Systems ToPIC95 (rev 07)
# Get the manufacturer's device ID (xxxx:xxxx)
root $ lspci -n
[...]
01:0b.0 0607: 1179:060a (rev 07)
# create a symlink for the configuration to this device
# Note the capital letters
root $ cd /directory/of/14B9:929B.8.conf
root $ ln -s 14B9:929B.8.conf 1179\:060A.5.conf
root $ ls -al
1179:060A.5.conf -> 14B9:929B.8.conf
14B9:0340.5.conf
14B9:0350.5.conf
14B9:4800.5.conf
14B9:929B.8.conf
netx500.inf
pcx500.sys
The kernel might already have the opensource driver running. To prevent it from loading these modules (aka drivers) instead, we need to black list them in /etc/modprobe.conf
# blacklist the modules
blacklist airo_cs
blacklist airo
# alias the interface to eth1 (or wlan0 if that's your
alias eth1 ndiswrapper
So now we have installed and setup ndiswrapper for this PCMCIA card.
Starting the card
Restart the system!!! Okay, there's no need to do that, but I'm lazy...
Besides, I just upgraded a ton of other stuff too...
root $ modprobe ndiswrapper
root $ lsmod
Using WPA Supplicant
Since I'm using PEAP (yes, I know it's not secure. NUS doesn't care.... It's their newly installed "secure" wireless system.), I have to get wpa_supplicant to work too.
Hmm... I'm getting tired of typing. I'll just plonk my wpa_supplicant configuration here then... 
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
ap_scan=2 # seem to work only if set to 2
eapol_version=2
network={
disabled=0
priority=1
ssid="NUS"
scan_ssid=1
key_mgmt=IEEE8021X
eap=PEAP
phase2="auth=MSCHAPV2"
identity="user@nus.edu.sg"
password="password"
ca_cert="/path/to/ase1.pem"
}
network={
disabled=1
ssid="NUSOPEN"
scan_ssid=1
key_mgmt=NONE
priority=2
}
network={
disabled=1
key_mgmt=NONE
priority=-9999999
}
Okok... I won't leave you in the berth. Here's a howto on NUS PEAP configuration
- Printer-friendly version
- 746 reads



Comments
dream on..
and Happy Prosperous New Year!
Hello,
I'm having similar issues getting my PCMCIA Aironet 350 working with ndiswrapper under Ubuntu Edgy. I could use help understanding the following step:
save this as /path/to/ndiswrapper/netx500/14B9:929B.8.conf
Where did you get the information for this filename? It started out as 14B9:0350.5.conf. Where did you get 929B from? I get the idea that's important!
Thanks,
doctorcisco
Ndiswrapper only generates the configuration files (xxxx:xxxx.x.conf) files for PCI wireless cards. Hence you see those 14B9:xxxx.5.conf files in the directory after you installed.
The Aironet 350 PCMCIA card is not a PCI card, but the same driver can be used as long as the PCMCIA slot is a Cardbus slot. Cardbus slots are detected as PCI slots, of bus type 8. The normal PCI slots are of bus type 5, which is where the 5 in
xxxx:xxxx.5.confcomes from.Hence, in the .inf file, you can also find configuration for PCMCIA cards, marked as
PC3500.These snippnets in the
netx500.inffile gives the Aironet 350 PCMCIA-specific configuration. Using these, one can modify the automatically generated configuration files to create one specifically for an Aironet 350 PCMCIA card, which I saved as14B9:929B.8.conf.As ndiswrapper loads the configuration depending on the PCI device number, you need to create a link connecting the Cardbus device number to that configuration file. This is in the next part.
Hope that helps.
It does help, unfortunately not enough for my wireless card to work.
Rather than fill up your blog with my ssh output, I'll invite you to take a peek over at http://www.linuxquestions.org/questions/showthread.php?p=2668484#post266... . Any insight you could lend to getting this to work before I throw in the towel would be appreciated.
doc
Hi great work,
but i'm a novice and i've not understand some passage.
I have a ibm think pad t30 with aironet mini-pci 350, and i use backtrack 3.
So first question:
i've to install pcx500mp.sys with ndiswrapper right?
if i try i recive this error
bt XP # ndiswrapper -l
pcx500mp.sys : invalid driver
what can i do?
thank u
Hmm, it has been a year since I last did this. Anyway, what were your steps? What is your version of ndiswrapper?
Thank u for the answer
so i've a mini pci card, aironet 350.
i'm using backtrack alpha 3 as O.S. based on Slackware.
kernel is 2.6.21.5
ndiswrapper output is:
and the driver that i've used is the last one driver aviable on the cisco's site.
then i post u some output:
so can u tell me what kind of configuration i'd use for the mini pci?
i've followed your steps but it doesn't work 4 me...
thank u very much
Sorry, busy with work. Anyway, here are some things you can try
1) Are you still using Windows? If so, you might want to check if the card is usable with the same drivers under Windows.
2) If you still have Windows, you might want to upgrade the firmware. However, then your card *will not* work with the native Linux drivers. At least that was the case a year ago.
3) If these still doesn't work, can you post your configurations?
so i've installed windows and the driver that i'm tryng to install does work.
i've upgraded under windows the firmware at the last firmware aviable on cisco.com, now what do you suggest to do?
thank u
Can you retry the steps outlined in the post? If it does not work, please post your configuration files and related information... Sorry, can't be more specific as I don't have any reference configuration any more (upgraded my computer). Seeing your configuration will definitely jot my memory though.
Post new comment