SMC 2632W V.2 Wireless PCMCIA Card on GNU/Linux

Note: SMC recently released their official drivers for the SMC2632W version 2 card. They basically provide alternative versions of the fvnetr drivers described below. Unfortunately I haven't had good results using them, since my card would stop working after about half an hour of operation, and I had to restart the PCMCIA services to get the connection back. If you have had better results using these drivers and have suggestions on how to make them work correctly, I'd like to hear about it.

Introduction
I recently bought an SMC wireless PCMCIA card for my HP laptop computer running GNU/Linux. The SMC website offers the drivers for the SMC2632W card, which is based on the Intersil Prism2 chipset. After buying my card I realized it was actually a Version 2 card, for which no drivers are available on the website. After looking around a bit I found that the V.2 card is based on the Atmel AT76C502A chipset. Atmel has released an unsupported set of drivers for this chipset, that are available at this page. Minimal instructions on how to use this driver are available here, but following them did not work for me. The following is an account of the steps I had to take in order to get my card to work using those drivers.

Configuration
The following is the software configuration of my system:
  • OS: GNU/Linux kernel 2.4.2-2 on an i686
  • Distribution: RedHat 7.1
  • PCMCIA support: kernel-pcmcia-cs-3.1.24-2
  • Wireless tools: wireless-tools-21-1
Rafael Neve sent this information on how to use the drivers under SuSE Linux 8.0 (Kernel 2.4.6), on an HP Omnibook XE2 notebook. Igor Fedulov sent this information on how to to use the drivers under RedHat Linux 8.0 (Kernel 2.4.18) on an IBM ThinkPad A20m. Other people who submitted comments, hints, suggestions or questions are Derek Fox, Michael Tiernan, Oliver Schnuecker (who also provided a corrected source file), and Preston Kutzner.

Compiling the drivers
Unpacking the ZIP file with the Atmel drivers creates a setup directory with subdirectories for the PCMCIA, USB and PCI drivers. The subdirectory for the PCMCIA driver is called pcmcia_cs. According to the INSTALL file, all that is necessary is to run make all (to compile all drivers) or simply make pcmcia for the PCMCIA driver. Unfortunately, the default configuration of the source files compiles the drivers without support for Wireless Extensions. These extensions are required by the iwconfig program and similar tools, which in turn are used by the PCMCIA scripts to enable and configure the card. The result is that, with the supplied drivers, the card is recognized by the driver, but the card cannot communicate with the base station.

In order to enable the Wireless Extensions, I had to apply the following modifications to the source code:

  1. Add the line #include <linux/compatmac.h> at the top of file pcmcia_cs/fastvnet_cs.c. Adding it after the four #includes at the top of the file should work fine.
  2. Add the line #define HAS_WIRELESS_EXTENSIONS 1 to the file pcmcia_cs/vnet.h. Again, adding it at the top of the file, right after the #define MAX_SSID_LENGTH, should be fine.

You can now enter make pcmcia, and the drivers will be built and installed. The installation script moves the following object files to the /lib/modules/2.4.2-2/pcmcia directory: fastvnet_cs.o, fvnet4_cs.o, fvnetr_cs.o, fvnetrD_cs.o and fvnetrE_cs.o. The one you need is fvnetr_cs, but leaving the other ones in place does not hurt. The installation script also runs depmod -a to create the module dependencies for the new drivers.

Configuration

The installation script adds the following lines to the /etc/pcmcia/config file:

card "ATMEL 11 Mbps Wireless PCMCIA Card"
  version "ATMEL", "AT76C502"
  bind "fastvnet_cs"

card "ATMEL 11 Mbps Wireless RFMD PCMCIA Card"
  version "ATMEL", "AT76C502AR"
  bind "fvnetr_cs"

card "ATMEL 11 Mbps Wireless 504 PCMCIA Card"
  version "ATMEL", "AT76C504"
  bind "fvnet4_cs"

card "ATMEL 11 Mbps Wireless RFMD Revision D PCMCIA Card"
  version "ATMEL", "AT76C502AR_D"
  bind "fvnetrD_cs"

card "ATMEL 11 Mbps Wireless RFMD Revision E PCMCIA Card"
  version "ATMEL", "AT76C502AR_E"
  bind "fvnetrE_cs"
You should manually add a similar entry for the SMC card:
card "SMC 2632W V2 11Mbps 802.11b WLAN Card"
   manfid 0x01bf, 0xb301
   bind "fvnetr_cs"
The two hex numbers in the manfid section should be correct for this card; you can check them by running /sbin/cardctl ident after plugging the card in. Once you have made these changes, restart the PCMCIA services: /etc/rc.d/init.d/pcmcia restart. Check the system log /var/log/messages for any unexpected message. This is what appears on my system after the card is inserted:
Jul 16 23:21:07 praho cardmgr[486]: initializing socket 1
Jul 16 23:21:07 praho cardmgr[486]: socket 1: SMC 2632W 11Mbps 802.11b WLAN Card
Jul 16 23:21:07 praho cardmgr[486]: executing: 'modprobe fvnetr_cs'
Jul 16 23:21:08 praho cardmgr[486]: executing: './network start eth0'
Jul 16 23:21:08 praho /etc/hotplug/net.agent: register event not handled
Jul 16 23:21:08 praho pumpd[1329]: starting at (uptime 0 days, 0:33:29) Tue Jul 16 23:21:08 2002  
Jul 16 23:21:11 praho pumpd[1329]: configured interface eth0


Checking

The best way to check that everything went fine is to run /sbin/ifconfig -a and look at the configured interfaces. If you see an entry for eth0 (eth1 in case your OS already configured another network device) and the hardware address (HWaddr) is correct, it means that the driver succesfully recognized and initialized your card. If the device also has a valid IP address, you're all set. If the card fails to obtain an IP address, you can try to do that manually using /sbin/pump -i eth0.

The Atmel installation script also installs a text-based tool (lvnet) to configure the card. Finally, the /proc/net/wireless should show some minimal information about the wireless connection.

Feedback

If you have additional comments or suggestions on this issue, please email them to me and I will include them in this page. Note that I won't be able to provide support to people who have trouble using this card, but I'll be glad to add more useful information to this page.


Alberto Riva
Last modified: Sat Mar 1 10:24:49 EST 2003