Using the Xterasys 802.11g XN 2422G under Linux with NdisWrapper

I was happy to learn that the Xterasys card uses the TI ACX111 chipset, which is already supported by NdisWrapper. (There is also experimental support using the ACX100 project’s native Linux driver.) In fact, for Debian systems, it merely entails adding a single line to /etc/apt/sources.list. Once that’s complete, apt-get update and apt-get install ndiswrapper ndiswrapper-source to get started. The latter will get you the sources you need to patch your kernel with for a recompile and stick it in /usr/src.

Now, cd /usr/src && tar -zxvf ndiswrapper-soruce.tar.gz, as root. That will unpack the ndiswrapper kernel patches into Debian’s magic kernel patch directory, which is automatically utilized by make-kpkg. If you have already built your kernel using make-kpkg, simply run make-kpkg modules-image in your kernel source directory to build the NdisWrapper kernel module package, which you can then install with dpkg. (If you are about to build a new kernel, make sure you include modules-image in your arguments to make-kpkg.) Afterwards, on my system, I had to run depmod -ae to update the module map files.

Fetch the Windows XP drivers for your chipset. I found that the DWLG650 drivers from D-Link Systems listed on the chipset compatibility page did not work particularly great. Instead, I used Xterasys’ own driver for the card, but do not download it from their Web site. Their latest version is horribly broken. Assuming your card has FCC ID MQ4WG2K4, get the driver for the card. (Mirrored here.) Rename the file to something nice, like xterasys.zip. unzip the driver someplace, like /tmp. Be aware there are spaces in the uncompressed driver tree. Now, install the driver. (The other driver for FCC ID MQ4WG2K4, Driver & Utility Ver. 7.0.1.33, is highly unusable — don’t download it.)

rachael:~# ndiswrapper -i /tmp/xn2422g2522g MQ4W(P)G2K4/Driver/winxp/TNET1130.INF
Installing tnet1130
rachael:~# ndiswrapper -l
Installed ndis drivers:
tnet1130         present

After that, modprobe away.

rachael:~# modprobe ndiswrapper
rachael:~# dmesg
...
ndiswrapper version 0.8 loaded
ndiswrapper adding tnet1130.sys
PCI: Enabling device 0000:06:00.0 (0000 -> 0002)
PCI: Setting latency timer of device 0000:06:00.0 to 64
wlan0: ndiswrapper ethernet device 00:e0:98:bd:65:18 using driver tnet1130.sys

It seems the TI ACX111 based chipset starts to probe as soon as the driver comes up. When I ran iwconfig wlan0 it had already associated with my AP. If you are not so lucky, you can run iwconfig wlan0 essid 'youressid' to associate with your AP.

If you are using WEP encryption, you must first modify /etc/ndiswrapper/tnet1130/104C:9066.conf and change the value for PrivacyMode|0 to 1. You will need to unload the ndiswrapper module and reload it for this change to take effect. Afterward, hex keys should work fine, but text based keys are a no-go. Using hex keys with iwconfig is simple.

iwconfig wlan0 key aaaa-abcd-ef12-bbbb-7890-0000-00

The above should kick you into encrypted mode immediately.

With my DI-524, at least, I could not associate with WEP enabled until I reenabled Open System as the security policy. Oddly enough, I cannot associate without using the correct WEP key, so it is behaving as if I had enabled Shared Key, which is the desired effect anyway.

To see if your AP is around, you can always perform a quick scan.

rachael:~# iwlist wlan0 scan

Enjoy!

Updated, April 14th, 2006. I changed the links to the Xterasys driver, as their current version is horribly broken and the connection drops continuously for no obvious reason. I have mirror the earlier version of the driver as it is not listed on their site anymore, though the original link is still good.