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 /etc/sysconfig/network-scripts/ifcfg-wlan0
:
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):
pcmcia
: 21 96
network
: 22 90
nfslock
: 23 86
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 ONBOOT=no
in /etc/sysconfig/network-scripts/ifcfg-eth0
.