ATUWI - The FreeBSD USB WLAN driver project **** What it is A FreeBSD driver for Atmel based USB WLAN adapters. The aim of the project is to get all Atmel at76c503a compatible USB WLAN adapters to work on FreeBSD. **** Current driver features - Support for Intersil, RFMD, RFMD2958 radio parts. - Supports boards based on both the AT76c503 and the AT76c505 chipset. - Support for the SMC 2662W v.4 adapter. - Support for Ad-hoc networks. - Support for Infrastructure mode (currently in infrastructure mode only 'open system' authentication is implemented). - Setting the channel / SSID / WEP mode / WEP key / mac-addr via ifconfig. - Automatic scanning and associating with a wireless network. - bpf support for both DLT_EN10MB, DLT_IEEE802_11 and DLT_AIRONET_HEADER. - Also compiles on FreeBSD 5.2 and later now. **** Currently supported devices At this moment the following USB devices are supported by the driver : Vendor ID Product ID Radio type Firmware file 0x03eb (Atmel) 0x7605 (BW002) RFMD rfmd 0x0d5c (SMC) 0xa002 (2662W-AR) RFMD rfmd 0x077b (Linksys) 0x2219 (WUSB11) RFMD rfmd 0x04a5 (Acer Peripherals) 0x9001 (AWL400) RFMD rfmd 0x03eb (Atmel) 0x7613 (WL-1330) RFMD2958 rfmd2958 0x1915 (Linksys) 0x2233 (WUSB11-V28) RFMD2958 rfmd2958 0x12fd (Aincomm) 0x1001 (AWU2000B) RFMD2958 rfmd2958 0x03eb (Atmel) 0x7614 (2662W-V4) RFMD2958 rfmd2958-smc 0x03eb (Atmel) 0x7603 (DWL-120) Intersil intersil 0x04a5 (AcerP) 0x9000 (AWL-300) Intersil intersi Other devices might also work, please let me know if you find a device with different USB ID's. **** Known BUGS and limitations - 'shared key' authentication is not yet implemented. - There is no timeout when we're associated and connected to a network. Once the driver is associated with an AP it assumes the connection will stay forever. - Nothing is done with the reg-domain of the device. Right now setting an unsupported channel will not return any error, but the device will simply refuse to work. - Only 'auto rate fallback' is supported at this moment. There is no way to force the driver to use a specified transmit-rate. - The firmware doesn't have a real promiscuous mode. We only receive things addressed to us and to the broadcast address. **** Compiling the driver To use this driver you need FreeBSD 5.1-RELEASE or later with the kernel sources installed. First, unpack the driver into your source tree. (You may want to create backups of your source tree before you begin.) # cd /usr/src/sys # tar -xvzf /the/path/to/atuwi-0.6.tar.gz This should extract the following files : conf/files-atuwi-2004-01-11.diff dev/usb/atuwi_intersil_fw.h dev/usb/atuwi_rfmd2958-smc_fw.h dev/usb/atuwi_rfmd2958_fw.h dev/usb/atuwi_rfmd_fw.h dev/usb/if_atuwi.c dev/usb/if_atuwireg.h dev/usb/uhci-waitintr-2004-10-22.diff dev/usb-reset-2004-01-08.diff modules/atuwi/CHANGELOG modules/atuwi/Makefile modules/atuwi/atuwi-compile modules/atuwi/atuwi-README.txt Since version 0.5 of the atuwi driver, the driver comes with a script that automatically compiles the driver. To start the compile-script, go into the directory where your kernel sources are installed (normally /usr/src/sys ) and simply type the following : # ./modules/atuwi/atuwi-compile If the compile script finished successfully you can skip the next chapter and continue with the chapter "Testing the driver". **** Compiling the driver manually If the atuwi-compile script failed, or if you like to compile the driver step by step by hand, please follow the following steps : The atuwi-driver uses a system called 'DFU' to upload firmware into the USB adapter. After the firmware has been uploaded, the adapter has to be resetted. The current USB stack doesn't have the ability to do this in a nice way, so I have added this functionality and provided a patch. Patching your USB code and recompiling it can be done as follows: # cd /usr/src/sys/dev # patch