Original 0.2.0pre8_plus_fixes_8 tarball
[acx-mac80211.git] / README
blob5594f40f92cf52fdcb290fa16d5eb133184e7c56
1 *******************************************************************************
2 *             Open-Source wireless driver for TI ACX1xx chipsets              *
3 *******************************************************************************
5 WARNING: this driver may still cause your box to lockup in very rare cases!
6 If this happens, then please report at/create a bug report!
8 RELIABILITY WARNING: The DWL-650+ seems to have a slightly too high
9 defect rate (see doc/general_info). Consider buying any card with FCC ID
10 O7J-GL242201 (0 defect reports) instead of the DWL-650+ (5+ defect/problem
11 reports). One might attribute this to the higher sales numbers of the
12 DWL-650+, but I'm not quite sure...
14 Please NEVER consider using the NDIS driver loader cludge instead of our driver.
15 For an incredible number of reasons against it, please see
16 http://acx100.sourceforge.net/ndis_cludge.html
17 If for some or another reason you're unhappy with the performance of our
18 current driver version, then either fix it if you're capable of doing that
19 or immediately think of returning to the shop or, if that is not possible,
20 of selling your very poorly supported Taxed Sinstruments based card in
21 exchange for a wireless card that is well-supported under Linux.
22 Buying the very problematic DriverLoader product instead in an attempt
23 to "fix" missing Linux driver support will send the entirely wrong message to
24 wireless card manufacturers, so please never choose to do that.
25 There are many commercial products very much worth buying; but this is
26 certainly not one of those...
28 Also, please take note that I learnt that TI is using and supporting
29 Linux for at least TNETW1230 driver SDKs and Linux QoS management (only
30 commercially available, I suppose?).
31 However somehow they're still too elitist to actually pass (parts of) that
32 Linux infrastructure back to the desperate end users looking for proper
33 TNETW1xxx driver support, even after continuous user requests.
34 Returning such completely improperly supported WLAN hardware to the shop
35 and mentioning unacceptable terms suddenly doesn't sound like such a
36 chore any more...
38 --- CARD COMPATIBILITY (aka "the real dirt") ---
40 Let us first mention that this driver is supposed to support EVERY SINGLE CARD
41 with ACX100 chip (except for USB and Compact Flash implementations,
42 which are both extremely rare -- USB support exists for both
43 2.4.x and 2.6.x, however it may be not completely "stable" yet). [040523]
44 If the driver doesn't work with your ACX100 card, then please notify us
45 immediately after you followed *EVERY ADVICE IN THIS FILE* (and elsewhere)
46 and are at your wits end as to what might still make the card fail
47 (and make sure to try previous versions of the driver as well!).
49 Other Texas Instruments chips which are e.g. 802.11g capable and may be named
50 TNETW1130/1230 (ACX111) only just started to actually be supported in a useful
51 way by this driver [040523].
53 Also, due to confusion about similar card naming (for further information, see
54 bottom), people keep thinking certain cards they own work with this driver.
55 Cards that are *NOT* based on ACX1xx chipset (as opposed to the stupidly
56 similarly named ACX1xx versions DWL-120+, DWL-520+ and DWL-650+, which *do*
57 have ACX1xx) are:
59 DWL-120 (PRISM2 chipset)
60 DWL-520 (PRISM2)
61 DWL-650 (PRISM2, minus few newer variants which D-Link messed up to have the
62          ACX100 instead)
63 DWL-G120 (PRISM GT)
64 DWL-G520 (Atheros AR5212A)
65 DWL-G650, version A1 (PRISM GT)
66 DWL-G650, version B1 (Atheros AR5211)
67 DWL-G650, version B2 (Atheros AR5001)
68 DWL-AG520 (Atheros AR5212)
69 DWL-AB650 (Atheros AR5211)
70 DWL-AG650 (Atheros AR5212)
72 When looking at the DWL-G650 mess, I could puke again...
73 Again, the cards mentioned in the listing above will NOT work with this driver
74 (yet?), in most cases you will need to be able to find a different Linux driver
75 supporting your card's chipset...
76 Feel free to send us corrections/additions to this very confusing listing above.
78 --- STATUS AS OF 040523 ---
80 Currently this driver for standard ACX100, ACX100 USB and ACX111 cards
81 still is a bit experimental.
82 We're still not totally sure about the status of WEP support.
83 Many situations should work, but it might still not work properly
84 or fail sometimes.
86 Also, SMP appears to be problematic (locking issues); if you have SMP,
87 then turn it off. We will attempt to clean this up as soon as possible.
89 Furthermore, associating with some access points might still be problematic
90 due to strict 802.11 compliance checks in their firmware.
92 Master mode support (aka HostAP) has not really been implemented yet,
93 but at least it can be configured now.
95 The non-standard 4x mode (aka "44Mbps") is not supported yet and will need
96 several driver changes.
98 Many other things haven't been tested (properly) yet.
100 Further testing versions can be downloaded from http://lisas.de/~andi/acx100/
102 A working FreeBSD driver that's derived from our driver can be found at
103 http://wlan.kewl.org and cvs.kewl.org (thanks, guys, for the cool work!).
104 There is a free download of the 802.11b spec at
105 http://standards.ieee.org/getieee802/
107 --- REQUIREMENTS ---
109 What to do or have (we will NOT remind you later about any requirements,
110 since this seeks to list all requirements in full):
111 * x86 box preferrably (other architectures such as Powerbooks may work since
112   they have been tested from time to time, but please report IMMEDIATELY if
113   they have any trouble, I'm very interested in that!)
114   Users who have other archs may need to remove certain compiler flags
115   in src/Makefile which are unsupported by their non-x86 compiler
116 * most likely a Bus Master capable PCI slot for PCI card versions, slave
117   PCI slot won't work (FIXME: is that true?)
118 * relatively recent Linux kernel 2.4.x (2.5.x/2.6.x experimental)
119         with CONFIG_NET_RADIO enabled ("Wireless LAN")
120         and CONFIG_NET_WIRELESS, for wireless extensions (iwconfig etc.).
121         And Non-SMP (no CONFIG_SMP).
122 * proper kernel header files / kernel source (packages) installed
123         for the exact (*EXACT*!!) kernel you're running! 
124 * a make package has to be installed
125 * a gcc package has to be installed
126 * The /bin/bash shell is required for the start_net/stop_net scripts
127 * module packages: modutils for Linux 2.4.x, module-init-tools for 2.5.x/2.6.x
128 * firmware image and radio image for your ACX1xx card
129 * the package containing iwconfig, iwpriv & Co. needs to be installed
130         on your system (on Debian: package wireless-tools)
131 * the Linux hotplug package is required for automatic setup of CardBus cards
132   and for proper ACX100 USB cards operation
134 What to NOT do:
135 * believe that this has much to do with PCMCIA. The ACX1xx cards are
136   CardBus cards, and thus PCI-based, NOT ISA-based (PCMCIA).
137   You probably need the pcmcia-cs package for certain CardBus functions,
138   though.
140 --- FIRMWARE INSTALLATION ---
142 NOTE: these firmware installation instructions might only apply
143 to standard ACX100 cards, not necessarily to ACX111 or ACX100 USB cards
144 (FIXME).
146 The firmware files are needed to drive the cards' onboard embedded
147 wireless baseband CPU.
148 We cannot ship this with our driver, so you will have to get it elsewhere.
149 There are three options:
150 a) run "make fetch_firmware"
151    This will run the shell script scripts/fetch_firmware, will DOWNLOAD
152    driver packages from ACX1xx vendors, extract them and copy required
153    firmware files to the firmware/ directory.
154    Once run, you are (hopefully!) finished with the firmware section.
155 b) you have a windows driver installed or have a zip file with all the
156    necessary windows files in it (for example D-Link installer).
157    This could be for ANY Windows version. All that matters here is that this
158    driver package contains relatively recent firmware image files.
159 c) you have a binary linux driver (not recommended, since these contain
160    much older firmware files)
162 Certain DWL-650+ and 520+ cards and Planet cards use a Maxim radio instead of
163 the usual RFMD, so these cards will not work with the limited proprietary
164 linux driver binary's firmware and so a windows firmware with proper
165 support for this radio type must be used.
167 FIXME: need to establish proper script support for the fact that the
168 ACX100 USB firmware should be copied to /usr/share/acx/ACX100_USB.bin
170 Again, here are your options:
172 -- Firmware provided by Windows driver --
174 Easy solution:
176 wget ftp://ftp.dlink.com/Wireless/dwl520+/Driver/dwl520+_drivers_307.zip
177 unzip dwl520+_drivers_307.zip
178 (these may be outdated, you might want to check for newer versions)
180 cp Win2000/WLANGEN.bin Win2000/WLANGEN.BIN Win2000/RADIO0d.BIN Win2000/RADIO11.BIN firmware/
181 mv firmware/WLANGEN.bin firmware/WLANGEN.BIN
182 Ready to roll. :)
184 Longer background explanation (READ IN CASE OF PROBLEMS!):
186 The firmware used by the windows driver consists of several files normally
187 named WLANGEN.BIN, RADIO0d.BIN and RADIO11.BIN which can be found in
188 the c:\winnt\system32 directory, or in the install archive.
189 Place these files in the firmware directory, and you are ready to roll.
190 MAKE SURE THAT THE CASE SeNsItIvItY OF THE FILENAME CHARACTERS IS EXACTLY
191 AS WRITTEN ABOVE!! Otherwise the driver will NOT find the image files...
193 Note that earlier versions of the windows driver shipped with both a new
194 firmware file plus its individual radio files (small firmware plus RFMD
195 radio file plus Maxim radio file) and old combined versions (one bigger
196 firmware *including* radio code, which is the old concept).
197 Here you have a choice, you can either copy the newer individual files over
198 (which will need to be renamed to the firmware names given above)
199 or use the old combined file on its own. If for some strange reason you decide
200 to use the old combined file it must be renamed to "WLANGEN.BIN".
201 Since our driver WILL attempt to load separate radio modules even with an
202 old combined firmware (we don't do a version check yet), adding separate
203 radio files to an old combined firmware WILL cause problems, so better
204 don't do that...
206 The firmware files in the recent driver package are:
207 WLANGEN.BIN - Generic firmware
208 RADIO0d.BIN - Maxim radio module
209 RADIO11.BIN - RFMD radio module
210 RADIO15.BIN - UNKNOWN radio module, e.g. for DrayTek Vigor 520, found at
211 e.g. ftp://ftp.draytek.com.tw/VIGOR520/Driver/3.99.3.0/driver.zip
213 The firmware files in earlier packages are:
214 AIRPLUS.BIN  - Firmware with embedded RFMD module
215 APLUSMX.BIN  - Firmware with embedded Maxim module
216 APLUSGEN.BIN - Generic firmware
217 APLUSRFM.BIN - RFMD radio module
218 APLUSRMX.BIN - Maxim radio module
220 Other files:
221 SMCSN.BIN - combined(?) firmware for SMC2435W
223 -- Firmware from Linux binary driver (not recommended - too old) --
225 Several drivers are available on the internet, and they all seem to
226 work. But since the firmware is embedded in the binary driver, it needs
227 to be extracted. Place the driver in the firmware directory and make
228 sure it is called acx_pci.o. Then run 'make extract_firmware', and
229 you are set. Make sure that no radio modules (RADIO*.BIN) files are
230 placed in the firmware directory when using a linux firmware, otherwise
231 the driver will attempt to load and initialise the radio module for your
232 card again, with unpredictable results (FIXME: need to check against
233 firmware version on this one, to avoid such trouble; in other words:
234 which version was the last combined firmware version: please tell us!).
235 The linux driver already has the radio module embedded in the firmware.
236 The firmware version which this Linux driver contains is 1.5.0,
237 as printed during our driver initialisation.
240 You may tell us about your experiences with various firmware versions,
241 then we'll add that info to doc/firmware_versions.txt.
243 --- "NORMAL" DRIVER INSTALLATION ---
245 This is the usual way to get the driver running on Linux 2.4.x.
247 You have two choices:
249 The fast way:
250   Just run "make" in the main directory, and your driver will be ready
251   in a second. It is located in src/acx_pci.o .
252   (NOTE: changed from acx100_pci.o!!)
254   In case the build fails, then please make sure that the symbolic link
255   /lib/modules/`uname -r`/build exists and points to the matching
256   kernel source directory. Now copy /boot/vmlinuz.version.h to
257   /lib/modules/`uname -r`/build/include/linux/version.h
259 The slow way:
260   Type "make config.mk" in the main directory to cause some configuration
261   settings to be checked.
262   Then you type "make driver". This will compile a driver for
263   Linux 2.4.x (for 2.5 / 2.6 see below)
265 To run the driver, you can use the script scripts/start_net (and adapt it).
266 Oh, and don't forget to have a proper DNS server in /etc/resolv.conf ...
267 Further system configuration can be found at SYSTEM CUSTOMIZATION below.
269 "make install" will copy the driver modules to the current kernel's
270 module directory and will run depmod. If successful, the system should
271 attempt to auto load the driver on card insert.
273 In order to get the driver to autoload properly (with a proper
274 firmware_dir), you could add e.g. to /etc/modprobe.d/acx_wlan
275 (or /etc/modprobe.conf):
276 options acx_pci firmware_dir=/absolute/path/to/firmware_files debug=0x0
277 options acx_usb firmware_dir=/absolute/path/to/firmware_files debug=0x0
278 and run update-modules (this will be added to "make install" soon).
280 Once you insert the card, the driver will then load automatically
281 without error (and will shut down the interface once you eject the card).
282 Note that the spinlocks inside the driver are still problematic,
283 so you should avoid ejecting the card in the middle of a data transfer
284 (OOPS may happen!). A completely safe way to eject is to ifconfig down
285 the interface, THEN eject the card.
287 Automatic networking configuration of such a setup can be achieved by
288 reading the guidelines at
289 http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/HOTPLUG.txt
290 However, this seems to still be a bit static.
291 A more mobile approach might be the ifplugd/waproamd programs
292 (see below; configuration dependent on stations in reach).
294 DON'T FORGET that debugging/logging options can be changed in a pretty
295 powerful way (see "DEBUGGING / LOGGING").
296 Your hard disk will certainly thank you a lot for having saved it from
297 the horror of heaps of logs once you got the driver running...
298 To check out further module parameters and options, please use modinfo
299 and iwpriv (see also doc/iwpriv.txt).
301 The module itself can be loaded manually e.g. like:
302 insmod src/acx_pci.o firmware_dir=firmware
304 NOTE that firmware_dir has to be given as an absolute path; a relative
305 path will cause trouble during card reinit operations!! (suspend/resume etc.)
307 If you want the driver to use eth0 device name instead of wlan0,
308 then load with an activated use_eth_name option, like:
309 insmod src/acx_pci.o firmware_dir=firmware use_eth_name=1
311 For troubleshooting, see below.
313 --- LINUX 2.6 DRIVER INSTALLATION ---
315 In order to use the acx100 driver with Linux 2.6 you'll need a complete 2.6
316 source tree.
318 In order to build the module outside of a 2.6 kernel tree, just use the
319 normal method as described for 2.4.x above (you'll most likely need to
320 compile it as root since it needs write access in your kernel source
321 directory).
323 If instead you want to build the module "in-tree" (i.e. not in a separate
324 acx100 module directory!), you'll have to:
326 > SOLUTION ONE
327 Run "make inject" to add the driver to an existing Linux 2.6.x source tree.
328 By default, the kernel source is assumed to be in /usr/src/linux/, while if
329 you want to specify another path, you should use the parameter KSRC, so
330 ¨make inject KSRC=[path to your kernel source].
332 > SOLUTION TWO (this may be outdated)
333 1. Create a directory drivers/net/wireless/acx in your 2.6 source tree.
334 2. Copy the files
335       - src/Makefile
336       - src/*.c
337       - include/*.h
338    from the acx100 sources into drivers/net/wireless/acx in your 2.6 tree.
339 3. uncomment line "#EXTRA_CFLAGS += -Idrivers/net/wireless/acx -DWLAN_HOSTIF=WLAN_PCI"
340    in Makefile you just copied. (line 142)
341 4. Add a line reading "obj-m += acx/" to the bottom of
342    drivers/net/wireless/Makefile .
343 5. Then build your kernel as usual, the acx100 driver will be built as module
344    (acx_pci.ko). Make sure you have the required 2.6 module userspace
345    package (module-init-tools) and enjoy ;-)
347 > SOLUTION THREE (only for version before 0.2.0pre8)
348 Other 2.6.x kernel patches can be found at http://luca.pca.it/projects/acx100/
350 --- USAGE HINTS ---
352 Want to use driver as BUILTIN kernel driver, but then driver fails to know
353 where the firmware files are? Use kernel boot parameter acx_firmware_dir=XXX.
355 Card insertion driver autoloading? You need to configure PCI hotplug layer,
356 *NOT* pcmcia-cs layer!
358 Need to change MAC address? Use ifconfig wlan0 hw ether 112233445566
359 Setting will only get updated when not associated: needs reinit of card parts.
360 And it doesn't work quite right yet, communication is distorted :-\
361 (maybe the card firmware even keeps the MAC address of the EEPROM or so...)
363 Wireless traffic monitoring with Kismet? Set card type Orinoco in kismet.conf
364 (in case of an older Kismet release which didn't know the acx100 type yet).
365 Oh, and also make sure to run "iwpriv wlan0 monitor 2 4" to enable.
367 Wired-Wireless bridging? Driver would perhaps need to support WDS
368 (whatever that is). For now, proxy ARP should do:
369 http://www.hazard.maks.net/parprouted/
371 --- DEBUGGING / LOGGING ---
373 Debug/log levels can be adapted by setting the module's "debug" load parameter
374 and/or via the "iwpriv set_debug" command and/or the default log value
375 (variable "debug") in src/acx100.c.
376 A good default value after having managed to get the driver to run would be
377 0xb (thus using L_STD|L_INIT|L_ASSOC debug channels, see include/acx100.h).
379 Example:
380 insmod src/acx_pci.o ... debug=0xffff
381 iwpriv wlan0 set_debug 0xffff
383 -- log file --
385 Log output of the driver gets written to the file which the
386 KERN_WARNING channel gets written to (somewhere in /var/log/).
387 The exact file name used for this log file is configured in the syslog
388 configuration file which is called /etc/sysklogd.conf or similar.
390 -- log console --
392 A log console (e.g. /dev/tty8) may be configured in /etc/syslog*.conf
393 (don't forget to restart syslogd).
394 Change to the logging console (Ctrl-Alt-F8) to view the kernel log messages
395 instantly (useful in case of driver crash debugging).
397 --- TROUBLESHOOTING / WORKAROUNDS ---
399 Don't forget to set the driver debug/log level (see above) to 0xffff in case
400 normal message logging is insufficient to resolve your card problem!
401 Also, cat /proc/driver/acx* might give some clues...
403 -- Driver build problems --
405 If the driver compile or loading keeps failing, then it might be caused
406 by a module version conflict of your current kernel, such as:
408 ./../src/acx_pci.o: unresolved symbol unregister_netdev_Rdbdb76d4
410 Consider completely recompiling the kernel (make sure to keep any old
411 .config file with previous config settings!), then removing the WHOLE
412 /lib/modules/KERNELVERSION/ directory tree, then reinstalling this kernel and
413 rebooting. Hopefully the driver compiling works then.
415 Also, I hope you haven't downloaded the driver via Windows CVS (since it
416 may insert bogus end-of-line chars).
417   
418 -- Driver init failure --
420 If you get "Invalid module format" during insmod, then it's probably a
421 gcc version difference (see syslog) and you should make sure to compile
422 the driver with the same gcc version that you used for compiling the kernel.
424 - CardBus specific -
425 You need to make sure you're having CardBus support (otherwise you'll have
426 strange PCI init failures), and it should be kernel CardBus support, not
427 pcmcia-cs CardBus modules! (yenta socket module instead of e.g. i82365 module)
428 On SUSE: "kernel" type instead of "external".
429 Thinkpad notebook? Make sure your CardBus feature is enabled in the
430 configuration utility...
431 If your card gets recognized as "Anonymous Memory" (i.e. gets inserted,
432 but doesn't get recognized as a CardBus card), then try to use
433 further memory and port areas in /etc/pcmcia/config.opts (restart
434 pcmcia-cs). Also, try *restricting* the areas it probes instead: sometimes it
435 fails to detect a card if there are large amounts of ranges to be probed.
436 And of course also trying the other CardBus slot in case you are lucky
437 enough to have 2 slots sometimes actually helped to fix IRQ problems...
438 With certain Toshiba notebooks you need to go into the system bios
439 and set the PCIC *not* to be "auto", set to the other option.
441 - General -
442 If the system detects your card, but the driver is unable to initialize the
443 card due to the card having IDs 0xffff etc., then play with Linux boot
444 parameters, specifically the "pci=XXXX" flags, and most specifically,
445 "pci=assign-busses", since this managed to fix it for several persons
446 (DWL-650+, Vigor520).
447 Please tell us if this managed to resolve some issue with a particular card!
448 Use tools like "cardctl info", "lspci -v", "dump_cis".
449 Also, make sure to shuffle cards in different PCI slots!! The ACX1xx probably
450 needs PCI bus mastering support, and some motherboards either don't support it
451 at all or not in certain crippled PCI slots.
452 And of course there are also cases where it is PCI interrupt sharing which
453 causes init trouble. A log message like "PCI: Sharing IRQ 3 with 00:01.1"
454 indicates that sharing is happening, which might cause trouble.
455 Using APM instead of ACPI has also been reported several times as fixing
456 init problems, so reconfigure your kernel to use the other one...
457 (kernel boot parameter "pci=noacpi" might be useful here, and it also
458 helped several times!)
459 Oh, and last but not least, always make sure to get the latest BIOS for your
460 computer - that also helped in some cases of broken power management code or
461 resource allocation!
463 -- Driver locked up the box --
464 Umm... ouch!
465 First, use newest driver version.
466 Then please configure a log console (see "DEBUGGING / LOGGING").
468 sleep 10 && insmod acx_pci ......
469 Then change to the log console, wait 10 seconds and write down the crash dump.
470 Then please file a bug report. Thanks!
472 This could also happen due to some PCI bus incompatibility (the ACX100
473 states a PCI2.2 requirement!!). If you happen to have a SB Live! card and
474 lose sound or have crashes when using the ACX100 card, then try
475 loading the ACX100 card driver BEFORE loading the SB Live! (this managed
476 to fix sound for one person)
477 Hmm, OTOH someone else reported that inserting the ACX100 card AFTER
478 bootup manages to fix it. So simply try swapping the sound/network
479 module init sequence.
480 Also, using an SB Live! with ACX100 may result in crashes and data corruption.
482 -- Wireless config failure --
484 If you get log messages like
485 Buffer for request 8B0B too small (0<564)
486 or other strange/erratic wireless config behaviour, then make damn sure that
487 your wireless-tools version is correct! There are tons of possibilities
488 for version conflicts!
490 -- Network failure --
491 First, make absolutely sure you're using correct settings for
492 association to the wireless network!
493 It's of no use to try to associate to a set of access points using
494 Ad-Hoc mode, or maybe the other way around (to use Managed mode to
495 associate with a card set to Peer).
496 Further, the ESSID is CaSe SEnsITivE!
498 Then read the file containing the driver log (see "DEBUGGING / LOGGING").
500 Make sure that network association is working properly!
501 (all steps that get listed from STARTED, SCANNING, WAIT_AUTH,
502 AUTHENTICATED to ASSOCIATED finish successfully)
503 Also make sure your peer AP has reliable Beacon period settings
504 (100ms is the standard value which our driver always detects during scan,
505 longer periods may cause trouble).
507 Also, check whether you actually use the newest or a working firmware version.
508 In some cases it's actually not this driver but the firmware which is
509 misbehaving...
511 If you connect to an AP with hidden ESSID ("") and you happen to have
512 several APs with hidden ESSID in your environment, then you need to also
513 specify the AP MAC address in order to make sure that the *single attempt*
514 we're making connects to the AP you want...
517 If you are still having trouble, then make sure that you didn't get an iwconfig
518 version incompatibility warning. This can mess up terribly many settings :-((
519 Get new wireless-tools then...
521 We tried to make the driver log as dumbed down as possible to make sure
522 even casual wireless users are able to follow the network association steps
523 towards the final successful association.
525 Usual power levels for a connection are (at least for my PheeNet WL-0022
526 CardBus, other people WILL have better or worse results!):
527 Signal level 86/100 (extremely good, at least to my PheeNet AP with DWL-900AP+
528                      firmware; directly neighbouring the AP)
529 Signal level 29/100 (anything less: connection lost @22Mbps)
530 Signal level 26/100 (anything less: connection lost @11Mbps)
531 Signal level 21/100 (anything less: connection lost @1Mbps)
532 Noise level 0/100 (anything more can be problematic, > 10 is deadly)
533 Link Quality == reverse of Noise level
535 Note that these signal levels are *NOT* expressed in dBm, instead it's a
536 percentage value (of course, since xx/100 is percentage) which as closely as
537 possible matches values of the current Windows driver.
538 I still hope that we'll be able to calibrate our driver eventually to show dBm
539 values :-\
540 Note that signal levels in Ad-Hoc mode are being displayed relative to the station
541 which answered during our initial scanning period, so the signal level source
542 (and thus the average level!!) might change with every new association.
544 Also try other channel values to reduce interference by cordless phones,
545 microwaves etc.
547 If you keep getting Tx errors, also try setting other values for
548 "iwconfig sens" (e.g. 92, useful values are between 30 to 100 and
549 between 160 and 200).
551 When trying to use NFS, use options 'rsize=1024,wsize=1024' in /etc/fstab .
554 If you experience complete traffic lockups after some random time,
555 then don't use hdparm -u1, since it may lockup/delay driver IRQ
556 operation for some yet unknown reason.
558 Some connection problems might also be caused by the Access Point using a
559 problematic antenna configuration setting (e.g. "internal" instead of
560 "external" or so).
562 If you still have trouble getting a connection, or if the connection is
563 problematic, then try
564 http://www.houseofcraig.net/acx100_howto.php
565 or visit our Wiki HOWTO/troubleshooting pages for more info.
567 And if that still doesn't give you the info you need,
568 then consider NOT posting a request on the Forum or writing to the mailing
569 lists, since we cannot track these properly.
570 Instead, post a Tracker item at one of Bugs, Support Requests, Feature
571 Requests. This way development will be much more organized, with proper
572 status and processing assigned to each request, and hopefully nothing
573 falling through the cracks. And please consider NOT posting anonymously,
574 since this severely degrades tracking quality.
576 ****************************************
577 A useful report would include:
578 - the acx_proc.txt file created via
579     "cat /proc/driver/acx* > /tmp/acx_proc.txt"
580 - in case you're experiencing connection issues or similar:
581     the output log files of the debug=XXXX parameter (see "DEBUGGING / LOGGING")
582 ****************************************
584 Thanks for listening!
586 --- BUGS / SHORTCOMINGS / PATCHES ---
588 - will not work on SMP multi-processor kernels yet
589            (some problems, maybe even crashes). Working to fix that.
590 - power management (suspend/resume) handlers are not finished yet
591 - no automatic rate adaptation yet
592            (setting rate to 22M will prevent communication with 11M peers)
593            We'll have to implement auto rate adaptation properly soon.
594 - many advanced features are not implemented yet
596 For current tasks, please read TODO (or grep driver for FIXME and TODO).
598 In case of bugs that didn't exist in previous versions,
599 PLEASE do regression testing via CVS:
600 http://www.winehq.org/site/docs/wine-devel/cvs-regression
601 (remember: WE are doing the driver, so it's YOUR responsibility to get any
602 problems fixed that might happen in between...;)
604 If you manage to fix or implement something, then please immediately
605 send patches for inclusion to the acx100-devel@lists.sf.net mailing list.
607 ************************* !!!!!!!!!!!!!!!!!!!!!  *************************
608 NOTE that by sending us patches, you implicitly accept that we also publish
609 them in BSD licensed form eventually, since we want to keep this driver
610 functionality usable by BSD systems and we assume that you've read this note
611 about patch submission in this main README file that everybody is
612 supposed to read before making use of our project (and projects in general!).
613 If you don't want to accept this implicit licensing, then please make
614 sure to let us know which code parts are not supposed to be used by BSD
615 systems. Thanks!
616 ************************* !!!!!!!!!!!!!!!!!!!!!  *************************
618 --- SYSTEM CUSTOMIZATION ---
620 Again, no automatic system installation is provided, since the various Linux
621 distributions often differ in their exact network configuration methods
622 and it's really not our job to care about maybe 5 to 10 different
623 distribution scripts (at least not now as long as our driver is
624 especially experimental).
625 Thus maybe simply adapt and use our scripts/start_net script. Or add
626 that script as a properly executed init script in /etc/[rc.d]/init.d/
627 (use e.g. /etc/init.d/skeleton as an example)
628 Then create e.g. runlevel 2 symlinks ("ln -s") from K* and S* scripts in e.g.
629 /etc/rc2.d/ to your init script in /etc/init.d/ and it should hopefully
630 get loaded automatically on system bootup.
632 module autoloading configuration (e.g. in /etc/modprobe.conf or
633 /etc/modules.conf) could be:
635 options acx_pci firmware_dir=/home/ivor/cvs/acx100-0_1a-rc1/firmware
636 alias wlan0 acx_pci
638 USING WAPROAMD
639 The waproamd is "a roaming daemon for wireless IEEE 802.11 NICs supporting
640 the Linux wireless extensions". 
641 1. install waproamd (http://0pointer.de/lennart/projects/waproamd/) [debian package available] so it will be started before you insert the pcmcia wlan card;
642 2. put your pcmcia card in;
643 4. waproamd shall make all work for you.
644 3. if driver was not loaded or loaded with errors do from console
645 Remove acx_driver if loaded with errors
646 "rmmod acx_pci"
647 Load acx_pci driver (change paths according to Your settings. The below is for acx100 module build in 2.6.x kernel tree. [This is a one line command]
648 "insmod /lib/modules/`uname -r`/kernel/drivers/net/wireless/acx100/acx_pci.ko use_eth_name=1 debug=0x01 firmware_dir=/lib/modules/acx100_fmwe/"
649 The waproamd daemon has to look for available access points and set the eth1 nic properly.
650 4. And finally try to use dhcp 
651 "dhclient eth1"
652 or set ifconfig manually. 
654 --- AND FINALLY... ---
656 Let me mention that we REALLY dislike the way very stupid hardware vendors
657 name their cards containing DIFFERENT chipsets!!
659 One of these vendors is SpeedStream/Siemens: a card that uses the same
660 name "SS1021" is available in both Orinoco chip and ACX100 chip versions.
662 USRobotics also just started to enjoy these despicable acts:
663 the USR2210 usually has the ACX100, however newer versions with UNCHANGED
664 naming (e.g. at tigerdirect.com) contain a newer incompatible 802.11g
665 TI chipset.
667 But the worst offender is D-Link: they have "DWL-650" and "DWL-650+".
668 "DWL-650+" is simply an improved version of the "DWL-650", right?
669 WRONG!
670 The standard versions use Prism2.5, whereas the "+" versions use ACX100
671 chipset. Good luck in finding a (correct) driver!!
672 And it's even WORSE: I just found out that there is some newer
673 version of the "DWL-650" out that also contains the ACX100
674 (it uses the same hardware as the "+" versions).
675 Not to mention that D-Link now uses the DWL*650* naming for about 6 or 7
676 different products!
677 This BRAINDEAD STUPIDITY in device naming easily entitles D-Link
678 for the "Most Braindead Hardware Vendor 2003" award. And of course
679 they were also talking about developing another Linux driver for some time,
680 without any results (although I guess that's because they wanted to
681 develop it, but were not allowed to, unfortunately, so it's understandable).
683 IF you dare to release cards with a different incompatible chipset
684 that doesn't even have proper driver support for a popular alternative OS,
685 then AT LEAST change the card name in order to let people know and discern
686 which hardware to avoid like the plague, for heaven's sake!
687 This is such a <CENSORED>, I could <OUCH, CENSORED!>...
689 Also, we just learned that D-Link tech support can be very clueless, too:
690 one guy, after having been advised that his DWL-120+ uses an Atmel
691 chipset, spent considerable time trying to get this card to work with an
692 incompatible Linux driver (it's the DWL-120 which uses an Atmel chip -
693 the DWL-120+ is using an ACX100 in USB mode!).
694 This proves that D-Link really deserves the award above,
695 and it also shows that one should avoid D-Link like the plague from now on
696 (at least until they get rid of their stupid product naming habits),
697 since they don't seem to know or care about their very own products.
699 Finally, let me mention that we also really dislike the way how
700 Texas Instruments handles Linux driver support. It's a really shameful
701 pity, with delays to be measured in years versus the Windows driver
702 support, and with poor and buggy binary driver support.
703 All in all our team would be very grateful to receive proper
704 development support and cooperation from TI in order to create
705 proper Linux drivers. That would be The Good Way to do it...
706 (although admittedly that would still only be the second-best way to do it,
707 with the best way being to have paid company developers work on a
708 well-working OSS driver, of course)
709 After all it's the hardware VENDOR that's earning money via OUR, the
710 customers', payment, so it should be the damn responsibility of the
711 hardware vendor to ensure good driver support (if by no other means
712 than providing sufficient specs to OSS developers), not the other way around!
713 Just imagine the weird looks of thousands and thousands of Linux users
714 when they discovered the lack of support for the product that they just
715 shelled out considerable amounts of money for...
717 Have fun!
719 The ACX100 OSS driver project team :-)
720 http://acx100.sourceforge.net