Just in case someone else runs into the same problems I did — and in case I need it later — here’s what I did when trying to get my laptop with Redhat Linux 9 and a Linksys WPC54G wireless card working together.
First I tried the Linuxant drivers, but luckily they didn’t work — they aren’t free (as in beer). Then I went on to try the NdisWrapper NDIS API implementation, and even though I had to build the tools and modules myself because of a kernel version mismatch, they ended up working perfectly without too much hassle.
To build the tools and install the XP driver (NdisWrapper works by emulating the NDIS API for the non-free Windows drivers):
make install ndiswrapper -i WPC54G/lsbcmnds.inf
Next up is creating an interface configuration file in
MODE=Managed ESSID=wifi.mfd-consult.dk KEY=<26 hex characters for the 128 bit WEP key specific to my AP> DEVICE=wlan0 ONBOOT=yes BOOTPROTO=dhcp USERCTL=no PEERDNS=no TYPE=Wireless
Then came the tricky part: The WPC54G is a PCMCIA card, but on my Redhat Linux 9 installation, the networking is set to start up before the PCMCIA interface is initialized. To overcome this problem, I changed the
chkconfig parameters for three of the startup scripts (the NFS script failed to work properly if not started after the network):
After that, I issued the following commands to reset the sequence:
chkconfig pcmcia reset chkconfig network reset chkconfig nfslock reset
The only thing missing was to make sure the PCMCIA and NdisWrapper drivers were loaded on startup, by simulating a card insert event — if necessary — and forcing the drivers to load:
rmmod ndiswrapper 2>/dev/null cardctl status | grep "no card" > /dev/null && cardctl insert modprobe ndiswrapper
That’s it, running
/etc/init.d/network restart should bring up the wireless interface, after which I could turn off the ethernet connection by setting