********************** Linux-wlan-ng FAQ ************************** For additions, corrections, and clarifications, send mail to solomon@linux-wlan.com with FAQ in the subject. ******************************************************************* Q: When will linux-wlan-ng be merged into the mainline kernel? Short answer: Never. First, the linux-netdev people will soundly reject this driver. I don't begrudge them for this; indeed in their position I'd do exactly the same. It's a sound engineering decision. linux-wlan-ng is obselete, and effort spent fixing it is better spent elsewhere. You can't even buy the hardware any longer. The original design for linux-wlan-ng was to separate the 802.11 stack from the actual hardware driver. This added a lot of complexity, but would greatly ease the pain of supporitng multiple hardware types. Unfortunately, the implementation was turned out to be somewhat flawed, and hardware manufaturers went away from the thick-mac model, leaving linux-wlan-ng overly complex for what it did. (Ironically, the linux kernel is adopting a similar separation model, but it is a long way off from being ready) So why not rewrite linux-wlan-ng to be more suitable, the enterprising reader may ask? The kernel already has two drivers for prism2 (cs/pci/plx) hardware -- hostap and orinoco. linux-wlan-ng basically has three features not present in kernel drivers: 1) USB support 2) nearly complete implemettion of the 802.11 MIB/MLME 3) Firmware-based AP support (3) requires an expensive license that isn't even available any longer, as the hostap mode works far better -- and is already supported by in-kernel drivers. (2) would need to be removed or completely rewritten in order to be merged, as it does not fit within existing kernel APIs, and it would be effectively merging new kernel APIs. (1) Is the only truly unique thing that linux-wlan-ng does that is generally needed any more. To merge it into the kernel, we'd need to strip out (2), which would necessitate a complete rewrite -- to the point where writing a new driver from scratch is easier. Basically, it would take far less effort to add USB support to the in-kernel drivers than it would to make linux-wlan-ng acceptable to be merged. In other words, the short answer is: Never. Q: It doesn't work/compile/sing/dance! First, make sure you're using the latest linux-wlan-ng release from http://www.linux-wlan-ng.org. New releases are infrequent, but tthey happen for a reason. If you are using the latest release, you may want to obtain the latest development sources via subversion: svn co svn://svn.shaftnet.org/linux-wlan-ng/trunk Questions and problems with the developement code should be sent to the development mailing list, at: linux-wlan-devel@lists.linux-wlan.com Q: What devices does the linux-wlan-ng driver support? Currently, the linux-wlan-ng driver supports the Intersil Prism2/2.5/3 chipsets. These chipsets are used in a wide variety of PCMCIA, PCI, and USB products. If it has a Prism chip in it, linux-wlan-ng should support it. Q: Will linux-wlan-ng support some feature or funkiness in the Linux distribution? Our development target always consists of stock kernels from kernel.org and stock pcmcia_cs. If a given distribution chooses to do something funky, we rely on users of that distribution to contribute patches to deal with their funkiness. The quickest way to get some action on this kind of item is to communicate with any users of the same distribution that you can find on the linux-wlan-[devel|user] lists about working up a patch. If it's reasonably sane and doesn't break things for our development environment or for other distributions, we'll be more than happy to roll that patch into the next release. Q: What does "resultcode=implementation_failure" mean? Complicated Answer: Each command that can be issued with wlanctl-ng returns a status called "resultcode". Resultcode is something that we picked up from the 802.11 MLME definition. In the standard, resultcode is an enumeration with a fixed set of values. To be able to report failures that a driver detects that are outside the context of the 802.11 standard set of resultcode values, we invented the "implementation_failure" value. Simple Answer: Go look in your kernel log for more detailed error information. Q: I'm trying to use the HostAP/orinoco/aironet/wvlan driver and it won't work! That has nothing to do with the linux-wlan-ng driver. Go ask those responsible for those drivers. Q: Can I get Debian packages of linux-wlan-ng? A: Packages of linux-wlan-ng are now available in the Debian stable tree. Q: Where do I find some RPMS for linux-wlan-ng? The ones on the ftp are dreadfully out of date! http://prism2.unixguru.raleigh.nc.us/ (Maintained by Tim Miller) Q: I installed the RPMs/compiled the driver and installed it and it won't work when I try to run 'ifup wlan0' or whatnot. First, ensure you're running the most up-to-date version of the driver. Many problems have been fixed in newer releases. 802.11 wireless networks are much more complex than wired ethernet networks. They require much more configuration than an ip address. If you are using pcmcia, edit the file /etc/pcmcia/wlan-ng.opts to set the network parameters. For PCI, PLX, or USB adapters, you need to edit /etc/wlan.conf. You also need to make sure you have the correct settings in /etc/modules.conf (alias wlan0 prism2_usb). Might we suggest you read the README file? Q: When I try to load the driver, I get a whole bunch of errors about unresolved symbols. The running kernel does not match the kernel the driver was compiled for. If you downloaded a RPM, make sure you downloaded the correct version for your kernel. This should not happen if you compiled the driver from source -- if it does, the kernel configuration you compiled against does not match the running kernel. Probably a screwed-up distro kernel. Q: I have a DWL-520 and it won't work! The DWL-520 claims to require a PCI 2.2 compliant motherboard. Only fairly new machines support this. Yes, the box lies. :) Check the documentation for your system and/or motherboard to see if it is PCI 2.2 compliant. NOTE: We have some reports of the DWL-520 working on PCI 2.1 motherboards; your mileage may vary. See the following URL: http://www.personaltelco.net/index.cgi/DlinkDwl520 NOTE: The Linksys WMP11 v2.7 is NOT prism-based, and thus not supported by this driver. The Actiontec PCI board is still known to be prism based; you may want to try that instead. Q: All I see is "Tx attempt prior to association, frame dropped" You are not associated with an access point. Double-check the settings in /etc/wlan.conf (USB, PCI, PLX) or /etc/pcmcia/wlan-ng.opts (for PCMCIA users). If all of these settings are correct (you did check with your admin, right?) make sure the access point doesn't have a MAC filter installed or has different WEP settings. If all of this is verified correct, and are using a PCMCIA card, try setting the "irq_mode=0" option. See the documentaiton in the pcmcia-cs sources. Q: I installed the modules, performed a 'wlanctl-ng wlan0 lnxreq_autojoin' command, and it still won't work! You did read the README, didn't you? You need to perform a "wlanctl-ng wlan0 lnxreq_ifstate ifstate=enable" in order to torn on the radio. The pcmcia scripts and the /etc/init.d/wlan script do this for you. Q: I have a XXX USB 802.11b device, will it work with this driver? Most 802.11b USB devices use the ATMEL AT76C503A chipset, which is not supported by the linux-wlan-ng project. However, there are some prism2.5-based USB adapters, most notably the Linksys WUSB v2.5. The other versions (1.0, 2.6, 3.0) are based on ATMEL chipsets. Another supported USB device is the Actiontec 802UI3. Q: My prism2.5-based USB adapter won't work! An excellent guide can be found at: http://www.fuw.edu.pl/~pliszka/hints/prism2.html Q: My prism2.5-based USB adapter won't come up if it's plugged in at boot! Thanks to buggy firmware, it is often necessary to perform a device reset on initialization. You can perform this by adding "options prism2_usb prism2_doreset=1" in your /etc/modules.conf Intersil has released Primary firmware 1.1.2, which seems to have resolved this problem, at least on our test machines. Q: My PC crashes when the USB device is plugged in! This is a result of the port reset necessitated by buggy firmware. You are probably using the 'usb-uhci' driver with an intel chipset. Unfortunately, the crashes happen deep within the USB core, so there's nothing the linux-wlan-ng driver can do. In the mean time, try using the 'uhci' host controller driver instead ("alias usb-controller uhci" in /etc/modules.conf), or plug the USB device into a hub. Linux kernel 2.4.19 is known to improve the situation somewhat, but the right way to fix it is to turn off the port reset (options prism2_usb prism2_doreset=0). The current firmware from Intersil alleviates the need to perform the reset. UPDATE: if you're using linux-wlan-ng 0.2.1-pre6 or newer and kernel < 2.4.22-pre, the 'uhci' driver will NOT work without a kernel patch! See: http://lists.linux-wlan.com/pipermail/linux-wlan-devel/2003-May/002369.html Q: How come I can't transmit when in monitor mode? You can't. It's a fundamental "feature" of the hardware. Q: How come the /proc/net/wireless info isn't updated when in monitor mode? The definition of "signal quality" refers to the quality of the link to the associated access point. When you're in monitor mode, you're not associated, so this information is by defintion irrelevant. And regardless, the hardware doesn't update the registers we poll to obtain this information while in monitor mode. Q: What do the various monitor mode options do? enable=[true/false] Turn it on and off. required. channel=[1-14] Sniff channel. required. prismheader=[true/false] Optionally preppend a special radio header on the packet. Defaults to off. keepwepflags=[true/false] If you had WEP configured correctly the card will perform WEP decoding. Defaults to off. stripfcs=[true/false] When true, the 802.11 FCS is not stripped from incoming packets. Defaults off. truncate=[number] Truncates the captured frame. Q: How come iwconfig/iwspy/[random other wireless tool] doesn't work? linux-wlan-ng only supports a subset of the wireless extensions; generally read-only things. However, you won't need any of those tools as wlan-ng comes with its own set of tools that closely mirror the 802.11 spec. Have a look through the documentation and supplied scripts. That said, if more complete (ie read/write) wireless extension support is really important to you, you're more than welcome to implement it and submit a patch. As of 0.1.16-pre1, the wireless extension plumbing has been re-written, and further support is much easier now. And many more bits are hooked up now than before. Q: How do I know exactly what prism variant is on my card? When you load the driver, you see a line which reads like: ident: nic h/w id=0x8008 1.0.0 1.0.0 is the hardware revision. Below is a (partial) list of IDs. 0x8003, 0x8008 : Prism2 PCMCIA 0x800b, 0x800c : Prism2.5 PCMCIA 0x8012, 0x8013 : Prism2.5 PCI 0x801a, 0x801b : Prism3 PCMCIA 0x8021, 0x8022 : Prism3 PCI 0x800f, 0x8010 : Prism2.5 USB (3863) 0x801e, 0x801f : Prism2.5 USB (3861B) 0x8025, 0x8026 : Prism3 USB Q: How do I know what firmware my card has? After the driver is loaded and brought into ifstate=enable, you will see the following lines in the kernel log: (eg dmesg |grep ident) ident: pri f/w: id=0x15 0.3.0 ident: sta f/w: id=0x1f 1.7.1 In this case, the card has primary firmware 0.3.0 and secondary firmware 1.7.1. Or, if you are using 0.2.1-pre17 or newer: 'cat /proc/net/p80211/wlan0/nsd' with the card running. Q: How can I update my firmware under Linux? Use the 'prism2dl' utility. While it does its utmost to ensure you don't fry your card, use it at your own risk. Even the Intersil-supplied tools fail occasionally. Q: Where can I download updated firmware for my Prism2/2.5/3-based card? As of linux-wlan-ng 0.2.1-pre21, the ram download firmware for all supported card types is bundled with the driver. These images cannot be flashed. A general FAQ on firmware updating is here: http://linux.junsun.net/intersil-prism It includes links to some sites with firmware images. We strongly recommend against flashing a new image, instead one should use the ram-download images that are loaded when the driver starts, much like the Windows drivers do. See the instructions below for getting this to work. Q: What's this about "ram downloading"? This means the driver loads up a firmware images directly into card RAM, instead of using the firmware stored in the card's flash ROM. This lets us ensure we are using the lastest available code without risking ruining the hardware due to a bad flashing. linux-wlan-ng will automatically perform a RAM download if you have the necessary firmware images. Q: Okay, I have new ram download firmware images, where do I put them? copy the *hex files into linux-wlan-ng-XXXX/src/prism2/ then build and install the driver per usual. Q: Can I use my 802.11b card as an AP under Linux? Yes, and in the true free software fashion, there are several ways: a) linux-wlan-ng supports AP operation by using special tertiary firmware on prism devices. This firmware is not generally available, however. Contact Intersil for licensing terms. b) The Prism2 HostAP driver uses the special HostAP mode of the prism chipsets. http://people.ssh.com/jkm/Prism2/ Q: I have a PCI adapter, and upon resuming from a suspend, the device is not responsive. Much like you need to run some commands to bring the card to life when the PC is first booted, you also need to perform similar steps when the card comes out of suspend. Run '/etc/init.d/wlan start' and all should be well. You'll need to be running 0.1.15-pre3 or newer for this to work properly. The prism2.5/3 chipsets do not support PCI power management, so this is the best we can realistically do. Q: I have a Linksys WMP11, and under moderate to heavy traffic, I get errors like "unknown port number" and "invalid frame type" Make sure you're using the latest firmware avaliable from Linksys's web site. According to the firmware release notes: "Changes were made to prevent erroneous data from being transferred over the PCI bus" Note that this problem has also beeen confirmed on the D-Link DWL-520. You will need firmware 1.3.5 or newer to resolve this. Q: I have a D-Link DWL-650/650+/520+ card, why doesn't it work with this driver? The DWL-650 comes in at least three flavors; older ones have grey antennae, with no revision number on the back. Second-generation has a black antenna and the back reads "H/W J3 F/W 1.x.x". Both of these will work. The third- generation, with a grey antenna, has "H/W A1, F/W x.x", and will NOT work; It has the same hardware as the "plus" series of cards. The "plus" series of cards from D-Link use the Texas Instruments ACX100/TNETW1100 chipset. TI has not been forthcoming with programming information. Politely ask TI and D-Link for Linux drivers and/or docs. We've been told that TI will be releasing binary-only Linux drivers sometime in December. In the mean time, return the card and buy one that works with Linux. Q: I have a Linksys WMP11 v2.7 card; why doesn't it work with this driver? Linksys, in their grand tradition, likes to introduce completely new cards but re-use the model number. The WMP11 v2.7 utilizes the Broadcomm chipset, and is not supported by linux-wlan-ng. Politely ask Linksys and/or Broadcomm for Linux drivers and/or docs. Q: What other resources are there for Wireless LANs under Linux? http://www.fuw.edu.pl/~pliszka/hints/wireless.html http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Linux.Wireless.drivers.html Q: I'm using RedHat 8.x+ (or Fedora Core), and I get this error when trying to ifup wlan0: Error for wireless request "Set Encode" (8B2A) : SET failed on device wlan0 ; Function not implemented. Error for wireless request "Set ESSID" (8B1A) : SET failed on device wlan0 ; Function not implemented. You can safely ignore this; it is there because linux-wlan-ng does not currently use the wireless extension commands for configuration. Q: When the prism2_cs module loads, I see the message "RequestIRQ: Resource in use" and the load fails! What's going on? Is your card a 16-bit PCMCIA card? If it is, you may need to recompile your kernel with ISA bus support enabled (CONFIG_ISA=y). The PCMCIA core uses ISA bus support to help determine what IRQs are available for the card. Without it, the PCMCIA core may not be able to select an IRQ. Q: After installing linux-wlan-ng on my RedHat 9 system, pcmcia no longer works! This is due to a bug in the RedHat 9 pcmcia startup scripts. On or about line 105 in /etc/init.d/pcmcia, remove all of the '.o' suffixes on the modprobe command lines. It should read something like this: if [ -d $PC ] ; then echo -n " modules" /sbin/modprobe pcmcia_core $CORE_OPTS /sbin/modprobe $PCIC $PCIC_OPTS /sbin/modprobe ds elif [ -d $KD ] ; then /sbin/modprobe pcmcia_core /sbin/modprobe $PCIC /sbin/modprobe ds else