Original 0.2.0pre6_plus_fixes_7 tarball
[acx-mac80211.git] / README
blob12c33e81b4b3e275ee0e60ffc78816bfa89a670f
1 *******************************************************************************
2 *             Open-Source wireless driver for TI ACX100 chipset               *
3 *******************************************************************************
6 Let us first mention that this driver is supposed to support EVERY SINGLE CARD
7 with ACX100 chip (except for USB implementations, which are extremely rare
8 -- initial successful firmware loading support is in the driver now,
9 but it's far from working completely - feel free to work on this support).
10 If the driver doesn't work with your ACX100 card, then please notify us
11 immediately after you followed *EVERY ADVICE IN THIS FILE* (and elsewhere)
12 and are at your wits end as to what might still make the card fail.
14 Note that any Texas Instruments chips OTHER than the ACX100 (which is
15 also known as TNETW1100) are NOT supported by this driver (yet).
16 These chips are e.g. 802.11g capable, and they may be named TNETW1130/1230.
17 For now, you should take these unsupported cards back to the shop
18 where you bought them, mentioning completely missing unacceptable
19 driver support from Texas Instruments.
21 Also, due to similar card naming confusion (for further information, see
22 bottom), people keep thinking certain cards they own work with this
23 driver. Cards that are *NOT* based on ACX100 chipset (as opposed to
24 the stupidly similarly named ACX100 versions DWL-120+, DWL-520+ and DWL-650+)
25 are:
26 DWL-G120 (PRISM GT chipset)
27 DWL-G520 (Atheros AR5212A)
28 DWL-G650, version A1 (PRISM GT)
29 DWL-G650, version B1 (Atheros AR5211)
30 DWL-G650, version B2 (Atheros AR5001)
31 DWL-AG520 (Atheros AR5212)
32 DWL-AB650 (Atheros AR5211)
33 DWL-AG650 (Atheros AR5212)
34 DWL-G520+ (TNETW1130: not supported yet!)
35 DWL-G650+ (TNETW1130)
37 When looking at the DWL-G650 mess, I could puke again...
38 Again, these cards listed above will NOT work with this driver, you will
39 hopefully be able to find a different Linux driver supporting your card's
40 chipset...
41 Of course, all old DWL-120/520/650 cards also don't work with this
42 driver, since they used Prism2 (except for some rare samples of the
43 DWL-650, where D-Link ALSO used ACX100, confusingly).
44 Feel free to send us corrections/additions to this very confusing listing above.
46 --- STATUS AS OF 031101 ---
48 Currently this driver still is a relatively experimental release only.
49 We're still not totally sure about the status of WEP support.
50 Many situations should work, but it might still not work properly
51 or fail sometimes.
53 Also, SMP appears to be problematic; if you have SMP, then turn it off.
54 We will attempt to clean this up as soon as possible.
56 Furthermore, associating with some access points might still be problematic
57 due to strict 802.11b compliance checks in their firmware.
59 HostAP support has not been implemented yet, but it's definitely possible.
61 4x mode (aka "44Mbps") is NOT supported yet and will need several
62 driver changes.
64 Many other things haven't been tested (properly) yet.
66 Skillful testers and BSD driver writers welcome!!
67 (for FreeBSD development, please contact mochaspirit AT users DOT
68 sourceforge DOT net)
69 There is a free download of the 802.11b spec at
70 http://standards.ieee.org/getieee802/
72 --- REQUIREMENTS ---
74 Relatively recent Linux kernel 2.4.x (2.5.x/2.6.x experimental),
75 with CONFIG_NET_RADIO enabled ("Wireless LAN") and CONFIG_NET_WIRELESS,
76 for wireless extensions (iwconfig etc.). And Non-SMP. And of course you
77 need proper kernel header files / kernel source installed for the exact
78 kernel you're running!
80 Also, you need to have the package containing iwconfig, iwpriv & Co.
81 installed on your system (Debian: package wireless-tools).
83 Next, a firmware is needed.
84 We cannot ship this with our driver, so you will have to get it elsewhere.
85 There are two options:
86 a) you have a windows driver installed or have a zip file with all the
87    necessary windows files in it (for example D-Link installer)
88 b) you have a binary linux driver (not recommended, since these contain
89    much older firmware files)
91 Certain DWL-650+ and 520+ cards and Planet cards use a Maxim radio instead of
92 the usual RFMD, so these cards will not work with the limited proprietary
93 linux driver binary's firmware and so a windows firmware with proper
94 support for this radio type must be used.
96 Again, here are your options:
98 -- Firmware provided by Windows driver --
100 Easy solution:
102 wget ftp://ftp.dlink.com/Wireless/dwl520+/Driver/dwl520+_driver_302.zip
103 unzip dwl520+_driver_302.zip
104 cp Win2000/WLANGEN.BIN Win2000/RADIO0d.BIN Win2000/RADIO11.BIN firmware/
105 Ready to roll. :)
107 Longer background explanation (READ IN CASE OF PROBLEMS!):
109 The firmware used by the windows driver consists of several files normally
110 named WLANGEN.BIN, RADIO0d.BIN and RADIO11.BIN which can be found in
111 the c:\winnt\system32 directory, or in the install archive.
112 Place these files in the firmware directory, and you are ready to roll.
113 MAKE SURE THAT THE CASE SENSITIVITY OF THE FILENAME CHARACTERS IS EXACTLY
114 AS WRITTEN ABOVE!! Otherwise the driver will NOT find the image files...
116 Note that earlier versions of the windows driver shipped with individual radio
117 files (small firmware plus RFMD radio file plus Maxim radio file)
118 as well as combined versions (one bigger firmware, which is the old concept).
119 Here you have a choice, you can either copy the individual files over
120 (which will need to be renamed to the firmware names given above)
121 or use the combined file on its own. If you copy the combined file it must be
122 renamed to "WLANGEN.BIN".
124 The firmware files in the recent driver package are:
125 WLANGEN.BIN - Generic firmware
126 RADIO0d.BIN - Maxim radio module
127 RADIO11.BIN - RFMD radio module
128 RADIO15.BIN - UNKNOWN radio module, e.g. for DrayTek Vigor 520, found at
129 e.g. ftp://ftp.draytek.com.tw/VIGOR520/Driver/3.99.3.0/driver.zip
131 The firmware files in earlier packages are:
132 AIRPLUS.BIN  - Firmware with embedded RFMD module
133 APLUSMX.BIN  - Firmware with embedded Maxim module
134 APLUSGEN.BIN - Generic firmware
135 APLUSRFM.BIN - RFMD radio module
136 APLUSRMX.BIN - Maxim radio module
138 Other files:
139 SMCSN.BIN - combined(?) firmware for SMC2435W
141 -- Firmware from Linux binary driver --
143 Several drivers are available on the internet, and they all seem to
144 work. But since the firmware is embedded in the binary driver, it needs
145 to be extracted. Place the driver in the firmware directory and make
146 sure it is called acx100_pci.o. Then run 'make extract_firmware', and
147 you are set. Make sure that no radio modules (RADIO*.BIN) files are
148 placed in the firmware directory when using a linux firmware, otherwise
149 the driver will attempt to load and initialise the radio module for your
150 card again, with unpredictable results (FIXME: need to check against
151 firmware version on this one, to avoid such trouble; in other words:
152 which version was the last combined firmware version: please tell us!).
153 The linux driver already has the radio module embedded in the firmware.
154 The firmware version which this Linux driver contains is 1.5.0,
155 as printed during our driver initialisation.
158 You may tell us about your experiences with various firmware versions on
159 our Wiki page FirmwareExperiences.
161 --- "NORMAL" INSTALLATION ---
163 This is the usual way to get the driver running on Linux 2.4.x.
165 You have two choices:
167 The fast way:
168   Just run "make" in the main directory (make sure to have package
169   "make" installed on your system!), and your driver will be ready
170   in a second. It is located in src/acx100_pci.o .
172   In case the build fails, then please make sure that the symbolic link
173   /lib/modules/`uname -r`/build exists and points to the matching
174   kernel source directory. Now copy /boot/vmlinuz.version.h to
175   /lib/modules/`uname -r`/build/include/linux/version.h
177 The slow way:
178   Type "make config" in the main directory to cause some configuration
179   settings to be checked.
180   Then you type "make driver". This will compile a driver for
181   Linux 2.4.x (for 2.5 / 2.6 see below)
183 No install option has yet been provided (because the driver is still a bit
184 experimental anyway :)
186 To run the driver, you can use the script scripts/start_net (and adapt it).
187 Oh, and don't forget to have a proper DNS server in /etc/resolv.conf ...
188 Again, no system installation is provided, since the various Linux
189 distributions often differ in their exact network configuration methods.
190 Thus maybe simply adapt and use our scripts/start_net script. Or add
191 that script as a properly executed init script in /etc/[rc.d]/init.d/
193 Debugging/logging options can be changed in a pretty powerful way by setting
194 the module's "debug" parameter and/or its preinitialisation value in
195 acx100.c and/or via the iwpriv set_debug setting. A good default value
196 after having managed to get the driver to run would be 0xb
197 (L_STD|L_INIT|L_ASSOC debug channels).
198 Your hard disk will certainly thank you a lot for having saved it
199 from the horror of heaps of logs once you got the driver running...
200 To check out further module parameters and options, please use modinfo
201 and iwpriv.
203 The module itself can be loaded e.g. like:
204 insmod src/acx100_pci.o firmware_dir=firmware
206 NOTE that firmware_dir has to be given as an absolute path; a relative
207 path will cause trouble!!
209 If you want the driver to use eth0 device name instead of wlan0,
210 then e.g. load as:
211 insmod src/acx100_pci.o firmware_dir=firmware use_eth_name=1
213 For troubleshooting, see below.
215 --- LINUX 2.6 INSTALLATION ---
217 In order to use the acx100 driver with Linux 2.6 you'll need a complete 2.6
218 source tree and have to build the module "in-tree". You'll have to:
220 1. Create a directory drivers/net/wireless/acx100 in your 2.6 source tree.
221 2. Copy the files
222       - src/Makefile
223       - src/*.c
224       - include/*.h
225    from the acx100 sources into drivers/net/wireless/acx100 in your 2.6 tree.
226 3. Add a line reading "obj-m += acx100/" to the bottom of
227    drivers/net/wireless/Makefile .
228 4. Then build your kernel as usual, the acx100 driver will be built as module
229    (acx100_pci.ko). Make sure you have the required 2.6 module userspace
230    package (module-init-tools) and enjoy ;-)
232 --- USAGE HINTS ---
234 Card insertion driver autoloading? You need to configure PCI hotplug layer,
235 *NOT* pcmcia-cs layer!
237 Wireless traffic monitoring with Kismet? Set card type Orinoco in kismet.conf.
239 Wired-Wireless bridging? Driver would perhaps need to support WDS
240 (whatever that is). For now, proxy ARP should do:
241 http://www.hazard.maks.net/parprouted/
243 --- TROUBLESHOOTING / WORKAROUNDS ---
245 Don't forget to set the driver debug/log level (see above) to 0xffff in case
246 normal message logging is insufficient to resolve your card problem!
248 -- Driver build problems --
249 If the driver compile or loading keeps failing, then it might be caused
250 by a module version conflict of your current kernel, such as:
252 ./../src/acx100_pci.o: unresolved symbol unregister_netdev_Rdbdb76d4
254 Consider completely recompiling the kernel (make sure to keep any old
255 .config file with previous config settings!), then removing the WHOLE
256 /lib/modules/KERNELVERSION/ directory tree, then reinstalling this kernel and
257 rebooting. Hopefully the driver compiling works then.
259 -- Driver init failure --
260 In case of ACX100 CardBus, you need to make sure you're having
261 CardBus support (otherwise you'll have strange PCI init failures),
262 and it should be kernel CardBus support, not pcmcia-cs CardBus modules!
263 (yenta socket instead of e.g. i82365)
264 On SUSE: "kernel" type instead of "external".
265 Thinkpad notebook? Make sure your CardBus feature is enabled in the
266 configuration utility...
267 If your card gets recognized as "Anonymous Memory" (i.e. gets inserted,
268 but doesn't get recognized as a CardBus card), then try to use
269 further memory and port areas in /etc/pcmcia/config.opts (restart
270 pcmcia-cs). Also, try *restricting* the areas it probes instead: sometimes it
271 fails to detect a card if there are large amounts of ranges to be probed.
272 Please tell us if this managed to resolve some issue with a particular card!
273 Use tools like "cardctl info", "lspci -v", "dump_cis".
275 -- Driver locked up the box --
276 Umm... ouch!
277 First, use newest driver version.
278 Then please configure a logging console (e.g. /dev/tty8) in
279 /etc/syslog*.conf, restart syslogd, then do:
280 sleep 10 && insmod acx100_pci ......
281 Then change to the logging console (Ctrl-Alt-F8), wait 10 seconds
282 and write down the crash dump.
283 Then please file a bug report. Thanks!
285 -- Network failure --
286 First, make absolutely sure you're using correct settings for
287 association to the wireless network!
288 It's of no use to try to associate to a set of access points using
289 Ad-Hoc mode, or maybe the other way around (to use Managed mode to
290 associate with a peer card).
291 Further, the ESSID is CaSe SEnsITivE!
293 Then read the file containing the driver log (the file where
294 the KERN_WARNING channel gets written to, somewhere in /var/log),
295 as given in the syslog configuration file which is called /etc/sysklogd.conf
296 or similar.
297 Make sure that network association is working properly!
298 (all steps that get listed from STARTED, SCANNING, WAIT_AUTH,
299 AUTHENTICATED to ASSOCIATED finish successfully)
302 If you are still having trouble, then make sure that you didn't get an iwconfig
303 version incompatibility warning. This can mess up terribly many settings :-((
305 We tried to make the driver log as dumbed down as possible to make sure
306 even casual wireless users are able to follow the network association steps
307 towards the final successful association.
309 Usual power levels for a connection are (at least for my PheeNet WL-0022
310 CardBus, other people WILL have better or worse results!):
311 Signal level 86/100 (extremely good, at least to my PheeNet AP with DWL-900AP+ firmware; directly neighbouring the AP)
312 Signal level 29/100 (anything less: connection lost @22Mbps)
313 Signal level 26/100 (anything less: connection lost @11Mbps)
314 Signal level 21/100 (anything less: connection lost @1Mbps)
315 Noise level 0/100 (anything more can be problematic, > 10 is deadly)
316 Link Quality == reverse of Noise level
318 When trying to use NFS, use options 'rsize=1024,wsize=1024' in /etc/fstab .
321 If you still have trouble getting a connection, or if the connection is
322 problematic, then visit our Wiki HOWTO/troubleshooting pages for more
323 info.
325 And if that still doesn't give you the info you need,
326 then consider NOT posting a request on the Forum or writing to the mailing
327 lists, since we cannot track these properly.
328 Instead, post a Tracker item at one of Bugs, Support Requests, Feature
329 Requests. This way development will be much more organized, with proper
330 status and processing assigned to each request, and hopefully nothing
331 falling through the cracks.
333 --- BUGS / SHORTCOMINGS / PATCHES ---
335 - will not work on SMP multi-processor kernels yet
336            (some problems, maybe even crashes). Working to fix that.
337 - power management (suspend/resume) handlers are not finished yet
338 - no automatic rate adaptation yet
339            (setting rate to 22M will prevent communication with 11M peers)
340            We'll have to implement auto rate adaptation properly soon.
341 - many advanced features are not implemented yet
343 For current tasks, please read TODO (or grep driver for FIXME and TODO).
345 In case of bugs that didn't exist in previous versions,
346 PLEASE do regression testing via CVS:
347 http://www.winehq.org/site/docs/wine-devel/cvs-regression
348 (remember: WE are doing the driver, so it's YOUR responsibility to fix any
349 problems that might happen in between...)
351 If you manage to fix or implement something, then please immediately
352 send patches for inclusion to the acx100-devel@lists.sf.net mailing list.
354 ************************* !!!!!!!!!!!!!!!!!!!!!  *************************
355 NOTE that by sending us patches, you implicitly accept that we also publish
356 them in BSD licensed form eventually, since we want to keep this driver
357 functionality usable by BSD systems and we assume that you've read this note
358 about patch submission in this main README file that everybody is
359 supposed to read before making use of our project (and projects in general!).
360 If you don't want to accept this implicit licensing, then please make
361 sure to let us know which code parts are not supposed to be used by BSD
362 systems. Thanks!
363 ************************* !!!!!!!!!!!!!!!!!!!!!  *************************
365 --- AND FINALLY... ---
367 Let me mention that we REALLY dislike the way very stupid hardware vendors
368 name their cards containing DIFFERENT chipsets!!
370 One of these vendors is SpeedStream/Siemens: a card that uses the same
371 name "SS1021" is available in both Orinoco chip and ACX100 chip versions.
373 USRobotics also just started to enjoy these despicable acts:
374 the USR2210 usually has the ACX100, however newer versions with UNCHANGED
375 naming (e.g. at tigerdirect.com) contain a newer incompatible 802.11g
376 TI chipset.
378 But the worst offender is D-Link: they have "DWL-650" and "DWL-650+".
379 "DWL-650+" is simply an improved version of the "DWL-650", right?
380 WRONG!
381 The standard versions use Prism2.5, whereas the "+" versions use ACX100
382 chipset. Good luck in finding a (correct) driver!!
383 And it's even WORSE: I just found out that there is some newer
384 version of the "DWL-650" out that also contains the ACX100
385 (it uses the same hardware as the "+" versions).
386 Not to mention that D-Link now uses the DWL*650* naming for about 5 or 6
387 different products!
388 This BRAINDEAD STUPIDITY in device naming easily entitles D-Link
389 for the "Most Braindead Hardware Vendor 2003" award. And of course
390 they were also talking about developing another Linux driver for some time,
391 without any results (although I guess that's because they wanted to
392 develop it, but were not allowed to, unfortunately, so it's understandable).
394 IF you dare to release cards with a different incompatible chipset
395 that doesn't even have proper driver support for a popular alternative OS,
396 then AT LEAST change the card name in order to let people know and discern
397 which hardware to avoid like the plague, for heaven's sake!
398 This is such a <CENSORED>, I could <OUCH, CENSORED!>...
400 Also, we just learned that D-Link tech support can be very clueless, too:
401 one guy, after having been advised that his DWL-120+ uses an Atmel
402 chipset, spent considerable time trying to get this card to work with an
403 incompatible Linux driver (it's the DWL-120 which uses an Atmel chip -
404 the DWL-120+ is using an ACX100 in USB mode!).
405 This proves that D-Link really deserves my "Most Braindead Hardware
406 Vendor 2003" award, and it also shows that one should avoid D-Link like
407 the plague from now on (at least until they get rid of their stupid
408 product naming habits), since they don't seem to know or care about
409 their very own products.
411 Finally, let me mention that we also really dislike the way how
412 Texas Instruments handles Linux driver support. It's a really shameful
413 pity, with delays to be measured in years versus the Windows driver
414 support, and with poor and buggy binary driver support.
415 All in all our team would be very grateful to receive proper
416 development support and cooperation from TI in order to create
417 proper Linux drivers. That would be The Good Way to do it...
418 (although admittedly that would still only be the second-best way to do it,
419 with the best way being to have paid company developers work on a
420 well-working OSS driver, of course)
421 After all it's the hardware VENDOR that's earning money via OUR, the
422 customers', payment, so it should be the damn responsibility of the
423 hardware vendor to ensure good driver support (if by no other means
424 than providing sufficient specs to OSS developers), not the other way around!
425 Just imagine the weird looks of thousands and thousands of Linux users
426 when they discovered the lack of support for the product that they just
427 shelled out considerable amounts of money for...
429 Have fun!
431 The ACX100 OSS driver project team :-)
432 http://acx100.sourceforge.net