Using the Atmel AT76C503A binary linux driver with the Netgear MA101

update: as of 14/08/2002 the GPLed driver seems more stable

This page has the steps I use to get my Netgear MA101 wireless usb device working under Linux. Currently there are two drivers available - both are from Atmel (the maker of the AT76C503A chip inside the MA101). The first is a (mostly binary) reference driver which works, and the second is a GPLed version of (supposedly) the same driver. Neither are production quality based on the experience of those that have used them, but the binary one is usable.

These instructions may be useful to owners of a number of similar Atmel AT76C503A based wireless usb devices, but then again, maybe not.

NOTE: use these instructions at your own risk. I make no guarantees that they will work, or that bad things won't happen to your data, software or hardware. I take no responsibility for the outcome of the use of these instructions.

These steps assume:

The steps:
  1. By default RedHat uses the usb-uhci.o module, but for me this results in kernel panics. edit /etc/modules.conf and change alias usb-controller usb-uhci to alias usb-controller uhci
  2. reboot (or as root, run: /sbin/modprobe -r usb-uhci ; /sbin/modprobe uhci)
  3. download the binary driver (not the GPL one)
  4. unzip the driver, go into the setup directory
  5. edit usb_src/vnetusba.h. Find the line: #define VNetVID 0x03eb and change the number to 0x0864. Find the line: #define VNetPID_3861 0x7603 and change the number to 0x4100 if you have a rev.a device. Change it to 0x4102 if you have rev.b.
  6. run: make usb
  7. ensure you are root, and run: make install
  8. run: /sbin/depmod -a (ignore any symbol errors)
  9. plug in your MA101
  10. run: dmesg to see the log entries which are written by the usb subsystem and the driver. Run this a couple of times if necessary. You should see something like:
    hub.c: USB new device connect on bus1/1, assigned device number 2
    usb.c: USB device 2 (vend/prod 0x864/0x4100) is not claimed by any active driver.
    usb.c: registered new driver vnetusba
    vnet_kernel.c: Reseting Usb Device
    
    vnet_kernel.c: Reset completed.
    Reg Domain
    vnet.c: Firmware Version : 0 90 0 44
    Multicast is enabled
    vnetusba.c: usb eth1 initialized and register
    
  11. take note of the alias of the device. From this line: vnetusba.c: usb eth1 initialized and register you can see my device is eth1.
  12. install the wireless tools from your RedHat CDs, or get the RPM from rpmfind.net. The rpm filename looks like wireless-tools*.rpm
  13. run: /sbin/iwconfig and you should see something like
    
    eth1      ATMEL USB503A  ESSID:"highbury"  Nickname:"highbury"
              Mode:Auto  Channel:13  Access Point: 00:30:AB:10:xx:xx
              Bit Rate:11Mb/s   Tx-Power=0 dBm
              Retry:on   RTS thr=2347 B   Fragment thr=2346 B
              Encryption key:off
              Link Quality:75  Signal level:60  Noise level:0
              Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
              Tx excessive retries:0  Invalid misc:0   Missed beacon:0
    
  14. At this point everything is probably working, and you can treat your device as a normal ethernet device. e.g. to give it an IP address: /sbin/ifconfig eth1 <device address> up, and if you don't already have a default gateway specified: /sbin/route add default gw <default gateway address>. If you want to use dhcp or to script these settings, have a look for an ethernet HOW-TO.

note: This driver is very sensitive. If you get the device working using these instructions and reboot your computer with the device plugged in, when linux loads you may get a kernel panic. The driver seems happiest when you plug the device in after linux has finished loading.

If you try out these instructions with a MA101 or any other device, let me know know how you get on.
jamienz<at>yahoo.com

back to the main page