Chances are that your distribution already contains the driver as a binary module. SuSE 8.2 had the rather old driver version 0.8, SuSE 9.0 comes with version 0.10.
If you want to update, you may either try one of these binaries:
or download the source code: the latest released version from the projects homepage under Latest File Releases or the latest cvs nightly tarball. Unpack them by
tar xzvf filename
You need kernel sources matching your running kernel. If you want to compile for a kernel different to the one running, edit the variable KERNEL_VERSION in Makefile
The file /lib/modules/$(KERNEL_VERSION)/build must point to the root directory of your kernel sources.
Your gcc version should match the one used to compile the kernel.
cd into the directory containing Makefile and call
makeThis should complete without errors.
find /lib/modules/`uname -r`/ -name "usbvnet[5r]*" -exec rm {} \;
Call
make installto install the Berlios driver.
Plugin your USB device and watch the syslog. If the hotplug package is installed and your USB device's ids are known to the driver, hotplug should load the correct driver. You'll see some lines like
usbdfu.c: USB Device Firmware Upgrade (DFU) handler v0.11beta4-ac1
at76c503.c: Generic Atmel at76c503/at76c505 routines v0.11beta4-ac1
at76c503-rfmd.c: Atmel at76c503 (RFMD) Wireless LAN Driver v0.11beta4-ac1
...
at76c503.c: $Id: at76c503.c,v 1.35 2003/07/30 06:31:51 jal2 Exp $ compiled Sep 2 2003 12:42:49
at76c503.c: firmware version 1.101.5 #84 (fcs_len 4)
at76c503.c: device's MAC 00:08:a1:42:9c:d9, regulatory domain ETSI (Europe - (Spain+France) (id 48)
at76c503.c: registered wlan0
If all you get is something like
usb.c: USB device ... (vend/prod xxx/yyy) is not claimed by any active driver.
grep for the USB ids (xxx,yyy) in the source C files. If you find the pair, manually load the corresponding driver (at76c503-rfmd, at76c503-rmfd-acc, at76c503-i3861, at76c503-i3863, at76c505-rfmd,at76c505-rfmd2958), e.g. by
modprobe -v at76c503-rfmd
If this works and you want your system to automatically load the modules, check your hotplug package's configuration.
If you cannot find your USB ids in the source files, try to add it in every of the source files (one after each other) at76c503-rfmd.c, at76c503-rmfd-acc.c, at76c503-i3861.c, at76c503-i3863.c, at76c505-rfmd.c, at76c505-rfmd2958.c. Compile and install and try again. If you've found a working variant, please post device name, USB ids, FCC id, driver name etc. to the user mailing list.
Configure your WLAN device according to your environment with iwconfig, e.g.
iwconfig wlan0 mode ad-hoc essid my_wlan
Do not use WEP or DHCP for the first try, if possible.
Open the network device to activate the device:
ifconfig wlan0 its_ip_address
Try to ping etc. your peer.
In order to automagically start and configure the device please refer to the distribution-specific documentation (hotplug, ifcfg scripts etc.).
at76c503-rfmd.c:151: error: initializer element is not constant
at76c503-rfmd.c:151: error: (near initialization for
`module_usbdfu.reset_delay')
This error is fixed in the cvs
tarball.
In file included from at76c503.c:86:
/usr/include/linux/module.h:21: linux/modversions.h: No such file or directory
Check where /lib/modules/`uname -r`/build points to. Must
be the root directory of your kernel sources.
/sbin/insmod /lib/modules/2.4.20-13.9/kernel/drivers/usb/at76c503.o
Using /lib/modules/2.4.20-13.9/kernel/drivers/usb/at76c503.o
Symbol version prefix ''
/lib/modules/2.4.20-13.9/kernel/drivers/usb/at76c503.o: unresolved symbol alloc_skb_Rsmp_60b64813
/lib/modules/2.4.20-13.9/kernel/drivers/usb/at76c503.o: unresolved symbol usb_alloc_urb_Rsmp_f2742fa6
Check that the kernel sources (including the configuration in
.config) match the running kernel. This problem comes up
regularly in the at76c503a-user
and
Atmel-WLAN-USB mailing lists, check their archives (here are
two discussions, one for
RedHat and another for
debian. RedHat keeps the configuration files for its kernel
versions in /boot, IMHO you may copy the config file into your
kernel root directory, rename it into .config and call
make oldconfigin the kernel root directory
The driver init messages show up, but you don't see the MAC address line in syslog:
If you've used uhci.o or usb-uhci.o as the USB host controller driver, try the other one, e.g. by
rmmod usb-uhci.o
modprobe -v uhci.o
and re-plug the device.
modprobe usbdfu debug=1Try again. If the last line in syslog is
usbdfu.c: scanning unclaimed devicestry to either use uhci.o or try an external hub.
at76c503.c: load_ext_fw_block failed: -32, i = 0
usbdevfs: USBDEVFS_CONTROL failed dev 2 rqt 128 rq 6 len 18 ret -84
no wireless extensions for wlan0Check that the wireless extensions are enabled in your kernel. (CONFIG_NET_RADIO=y). If they are you should have a /proc/net/wireless.
Configuration went fine, but you cannot reach the peer (e.g. by ping).
If you are either running in managed mode or your device is started after the peer, try this:
iwpriv wlan0 set_debug 0x180003
iwconfig wlan0 essid your_essid
This should produce more syslog messages describing the parameters
of the device, the results of scanning for a peer and the progress
of the start sequence. The successful end of the start sequence in
managed mode is
at76c503.c: wlan0: connected to BSSID xx:xx:xx:xx:xx:xx
and in ad-hoc mode (second peer):
at76c503.c: wlan0: state 6 -> 7 (CONNECTED)
If you cannot find your peer in the scan results (and it is
switched on) and you had to add your USB id yourself into the
source code, there is a chance that you've added it into
at76c503-rfmd.c, but it must be in
at76c503-rfmd-acc.c. You must use the cvs tarball to get
that module.
at76c503.c: wlan0 BSS table (curr=00000000, new=00000000):
at76c503.c: 0xf729b1c0: bssid xx:xx:xx:xx:xx:xx channel 12 ssid JOERGS_NW (4A4F455247535F4E57) capa x0011 rates 82 84 0B 16 rssi 34 link 6 noise 0
at76c503.c: wlan0: state 1 -> 6 (JOINING)
at76c503.c: wlan0 find_matching_bss: returned f729b1c0
at76c503.c: wlan0 join addr xx:xx:xx:xx:xx:xx ssid JOERGS_NW type 2 ch 12 timeout 2000
In this example the procedure find_matching_bss matched
the entry at address 0xf729b1c0 with the parameters and the driver
will try to join this BSS. If you see your BSS in the BSS table,
but find_matching_bss always returns address 00000000,
check your driver parameters (earlier in the syslog). Setting
debug=0x180003 shows the reason for skipping certain BSS.
at76c503.c: 0xf729b1c0: bssid xx:xx:xx:xx:xx:xx channel 12 ssid JOERGS_NW (4A4F455247535F4E57) capa x0011 rates 82 84 0B 16 rssi 34 link 6 noise 0
shows a peer with basic rates of 1 and 2 MBit/s, 5.5 and 11MBit/s
are optional.In all configurations:
Enabling debug in the driver didn't produce more syslog messages.
Please check your /etc/syslog.conf and ensure that kern.debug messages are included in the syslog.
Distribution-specific instructions and help pages are available for Debian/Knoppix (thanks to CE), SuSE, Mandrake 9.1, Mandrake 9.2 (latest two thanks to delboy711).
There are two mailing lists to ask for help, but please search their archives before posting and check if the problem is really related to the driver and not to some distribution specific configuration.
If you're going to post, please include: