Getting a wireless card working in Fedora Core 3 using ndiswrapper
I’m posting this with the hope that someone in a similar situation might come across it on a Google search and find some helpful information.
This evening I managed to get a cheap ($10 after rebates at Fry’s) Buffalo WLI-CB-G54L wireless PCMCIA card working in my aging Sony Vaio PCG-F540 (Pentium III) laptop, which I just upgraded to Fedora Core 3. This card is based on the Texas Instruments ACX 111 chip, which lacks any sort of official Linux driver support from the manufacturer. Although there is an open-source project to create a native Linux driver for this device, that driver in its present state does not support WEP encryption, and I wasn’t about to run an unsecured wireless network. My only other option was to use the ndiswrapper package, which basically allows binary Windows XP wireless drivers to work in Linux. Amazingly enough, it ended up working.
There’s a pretty good install guide for ndiswrapper as part of the Wiki on their site. I basically followed the instructions there, but there are a few things worth mentioning.
First, it’s not necessary to install the Fedora 3 kernel sources as the install guide implies. Doing this is actually a pain in FC3 because they’ve gotten rid of the kernel-sources rpm; you now have to get the sources by installing the kernel SRPM (which is different) and going through a few additional steps (this is documented in the Fedora Core 3 Release Notes). The ndiswrapper source only needs the kernel module sources to be present, which you will find in /lib/modules on a stock FC3 install.
So I build ndiswrapper with the usual make, make install procedure, and then downloaded the card’s windows drivers from Buffalo’s site. Following the instructions on the Wiki, I installed those drivers using ndiswrapper -i, modprobe’d the ndiswrapper kernel module, and was able to see my AP with iwlist wlan0 scan.
At this point I encountered the first big problem, which was that when I tried to set the WEP key using iwconfig wlan key restricted [key], I ended up with a segfault that pretty much locked up the machine. Looking back through the Wiki, I suspected that the problem was that the FC3 kernel has a stack size limited to 4k. Windows drivers apparently often use much more than that. I couldn’t even find the right option to change that in the Fedora kernel config (CONFIG_4KSTACKS); evidently I’d have to compile a totally generic kernel in order to change that setting. Fortunately Linuxant, a software company that sells a commercial version of what ndiswrapper does has provided versions of the Fedora kernel that allow larger stack sizes. I downloaded and installed their kernel RPM, and no more segfault when turning on WEP.
The next step was to get the wireless card to connect to the AP using iwconfig wlan0 essid [my AP's ESSID]. That took a lot longer than it should have, because I forgot that my wireless AP was set up to only take connections from certain preregistered MAC addresses. So once I remembered that and added the new card’s MAC address to the list, I was able to establish a link to the AP.
The final step was to set up linux networking to use the wireless link. At first I tried writing my own /etc/sysconfig/network-scripts/ifcfg-wlan0 file, but I kept getting something wrong and it wouldn’t work. Every time I tried /sbin/ifup the card try to get a DHCP address, fail, reset, and no longer be connected to the AP.
A few more Google searches led me to try the built in network config tool, which lives at /usr/sbin/system-config-network-gui. I never used to pay much attention to those RedHat system config tools, but it really saved me in this case. First, though, I had to run ndiswrapper -m, which added a line to /etc/modprobe.conf that allowed the system-config tool to recognize the ndiswrapper process as a wlan device. From there I just set it up using the GUI, saved the configuration, and hit Activate. Actually that ended up crashing the machine on the first try, but after I restarted my net connection was up and running just like magic.
This all involved a bit more fussing around than I normally like to have to do to get a network connection going these days, but I’m glad it worked out eventually and hope that this post can point some others in the right direction.
2 Comments to “Getting a wireless card working in Fedora Core 3 using ndiswrapper”
Leave a Reply

This was great information and it helped me piece together everything that I had also read throughout the web during the past couple of weeks as I tweaked my system to get it on line. Thanks for taking the time to write it down and share it.
Works wonderful! Thanks for your nice work!,Wally