Friday, September 25, 2009

Netgear WG311v2 Wireless Adapter & 64-bit Operating Systems

I was trying to make a Netgear WG311v2 wireless PCI adapter connect to our Apple MB763LL/A AirPort Extreme Dual-band Base Station router using WPA password protection. I am running Ubuntu 9.04 (Jaunty Jackalope) on a machine with two AMD Opteron 64-bit CPUs. Note the card works out of the box with the driver provided by ubuntu on unprotected networks as well as on networks with WEP password protection, but not with WPA password protection.

I spent a whole week on the idea of adding WPA capability with the result that VERSION 2 of the adapter JUST WILL NOT work with this option on machines with 64-bit processors, because nobody compiled drivers for the 64-bit architecture. This simple truth applies to ALL wireless adapters based on the TEXAS INSTRUMENTS ACX100/111 aka TNETW1450 chipsets, regardless of brand, and also applies to ALL Windows 64-bit operating system users.

The careful examiner will already notice this bitter truth on the adapter label shown on the Netgear support site. On the label of WG311v2, you will find 32-bit PCI. They mean it! By contrast, WG311v3 uses a Ralink chipset, for which 64-bit drivers are available.

Ubuntu 9.04 supports WG311v2 cards on the AMD 64-bit architecture, using the drivers that the Acx100 sourceforge project provides. This project develops Linux drivers for the acx100/111 chipset without help from manufacturers. In my situation, this meant that the card was immediately recognized after boot and the driver was loaded. I could configure the default wlan0 connection with a WPA key in NetworkManager (0.7.0.100). The spinning wheel in place of the network icon on the menu bar indicated repeated attempts to associate with the router. However, the connection was never successfully established.

I reckoned that perhaps NetworkManager did not set up the WPA password properly and delved into the use of WPA_supplicant for setting up a connection without using NetworkManager. This ubuntu geek tutorial was instructive. Still I could not associate the card with the router.

I decided that perhaps the driver module provided with the ubuntu distribution did not support WPA. I began to search for alternatives. Since Netgear claimed on their site that WPA was supported by their latest driver software (version 2.0.0.7), perhaps there was a way to use their driver.

I happened upon Ndiswrapper. This application wraps windows wireless adapter drivers into a Linux module. Because I could use a wired internet connection temporarily, I was able to install version 1.9 with ubuntu's Synaptic Package Manager. I found good instructions how to proceed on this ubuntu forum here. Most importantly, in order to load the new ndiswrapped acx module successfully, you need to blacklist the old module provided by ubuntu in /etc/modprobe.d/blacklist.conf. The name of the module to be blacklisted is "acx".

Ndiswrapper recognized the card correctly and installed the Netgear driver without complaint.  However, the command sudo modprobe ndiswrapper failed.

Why?

Because the Netgear driver was not compiled for a 64-bit architecture.

Remember the label on the card says "32-bit"! The constraint does not stem from the hardware, but from the unavailability of a compatible driver. I checked with all other adapter manufactures using this chipset. No luck!

So unless the next version of ubuntu's acx driver will support WPA, consider buying a new adapter card, making sure that the manufacturer provides drivers for a 64-bit architecture. Since most adapters are available in several versions, make sure to pick the correct one. Remember the difference between Netgear's WG311v2 and WG311v3, I noted above? You may have to check the label on the pci card.  Once you obtained an adapter with a 64-bit driver, you may use ndiswrapper, if ubuntu does not support the options you want out of the box.

If I am not mistaken, 64-bit Microsoft Windows users (be it XP_64, vista or windows 7) will run into this incompatibility-of-driver problem as well.

Addendum
  • The Sabrent PCI-G802 adapter works on Ubuntu 9.10 out of the box. Mine is based on the Ralink RT2561 chipset. If needed, the latest Windows 64-bit drivers are available for download on Ralink's software support site (01/14/10):