Folks, I’ve been playing around with an ancient Cisco Aironet 350 Series PCMCIA 802.11b wireless card, and now have a useable setup using WPA encryption and Network Manager on Ubuntu 10.04.
This is not an ndiswrapper solution, but one using a driver developed at http://gna.org/projects/airo-wpa/
A couple of things to note
1) To get this alternative driver working, you will have to compile it
2) The driver doesn’t autoswitch between WPA and WEP encryption modes
Also you may have to work around a small bug – but possibly be able to help fix it?
Interested? Read on 
My card (AIR-PCM352) had been previously flashed using a Cisco utility in Windows XP, with the last available firmware for the device – version 5.60.22. You will have to do similar. I'm not sure if this flash operation can be done in Linux.
Checking the Current Driver
There is an included driver for this in Ubuntu 10.04, using the following files
Modinfo –n airo
/lib/modules/2.6.32-22-generic/kernel/drivers/net/wireless/airo.ko
Modinfo –n airo-cs
/lib/modules/2.6.32-22-generic/kernel/drivers/net/wireless/airo_cs.ko
If it is installed correctly you should be able to do a scan of local networks and it will tell you the encryption scheme in use. The following command should let you do that.
iwconfig
sudo iwlist eth0 scan
Note that it may be eth1 if you have another network adaptor in your computer. Ignore the wifi0 interface, it doesn’t do us much for the following trip.
---
BTW, The following location contains ‘files’ with information about the current configuration of the card.
/proc/drivers/aironet/eth0
e.g. /proc/drivers/aironet/eth0/Status – contains info like firmware version.
---
Now the interesting thing about the above driver is that it does show the reception of WPA encrypted access points and reportedly WPA2 – though I can’t test this here.
However, sadly that was all! I couldn’t get this version of the driver to work at all with WPA.
Boo. Maybe there is some voodoo that may make it work somewhere else, but I did check out the source from the kernel and couldn’t find much WPA goodness in it 
The airo-wpa Driver
I found that almost wholesome goodness in the source at the following URL
So grab yourself a copy of airo.c, airo_cs.c, Makefile and airo.h and place them in a directory ready for some modification and compiling work.
Patching
Now, these files will need a little bit of patching to play nicely with 10.04
In airo_cs.c there currently is (for rev 16) a line that contains
pcmcia_parse_tuple(link, &tuple, &parse)
Remove the link parameter, leaving this,
pcmcia_parse_tuple(&tuple, &parse)
Now the Makefile also needs a little modification
The line
obj-m := airo.o
change it to
obj-m := airo.o airo_cs.o
Compiling
From terminal in that directory, issue the following command to compile and create two new modules airo.ko and airo_cs.ko
make all
You will notice one warning for airo_cs.c about DEBUG something. Just ignore that. If you have other issues like errors then you can do the following command to clean up before another make attempt.
make clean
Installing
Firstly the inserted card should be stopped, and drivers removed.
The following command will tell you the socket number for your card (0 or 1)
sudo pccardctl ls
Run the following (with your socket number, mines 1) to stop the card and remove the old driver so we can replace files.
sudo pccardctl eject 1
modprobe –r –v airo_cs
Make a backup copy (somewhere outside the /lib directory) of the current airo.ko and airo_cs.ko files at
/lib/modules/2.6.32-22-generic/kernel/drivers/net/wireless
And replace them with the new ones you created.
Create a new file /etc/modprobe.d/install-airo.conf with the following line in it.
install airo /sbin/modprobe -–ignore-install airo wpa_enabled=1
Now restart your machine.
Testing
With some luck you should now find that Network Manager finds WPA networks and accepts passkeys to be entered. If so, you are almost good to go.
If not, then check that the interface eth1 is not mentioned in /etc/network/interfaces and that the last line in /etc/Network Manager/nm-settings.conf looks like
[ifupdown]
managed=true
You should not need to do anything to the setup of wpa_supplicant.
The Bug
However, it might not be that straightforward.
For me, although every other network machine in this house was able to be pinged by this machine, this did not include the internet router – unfortunately leading to no internet access!

I got repeated ‘bad mic on RX’ messages in the /var/log/syslog file when the ping command failed. Boo #2

The workaround was simple though. Either issue the following two commands from a terminal,
sudo pccardctl eject 1
sudo pccardctl insert 1
Or physically remove and reinsert the wireless card. Whatever, you should have full router and internet access after the card restarts.
And BTW I didn't code any of this! Refer back to the airo-wpa source website and pay your kudos to those guys!
And that’s it! Enjoy.