compat-wireless: turn on TESTMODE and MAC DEBUGFS, turn off BT
[wl12xx/compat-wireless.git] / README
2 Linux Wireless compatibility package
3 =====================================
5 This is a Linux wireless compatibility package which provides the latest
6 Linux wireless subsystem enhancements for kernels 2.6.24 and above.
7 It is technically possible to support kernels < 2.6.24 but more
8 work is required for that.
9 It also provides Linux bluetooth subsystem enhancements for kernels 2.6.27 and above.
11 With a local git repository you can update the compatibility package yourself. 
12 For more information on how to do this please refer the Developers section below.
14 Documentation
15 ------------
17 This package is also documented online and has more-up-to date
18 information online than on this README file. You should read the wiki page
19 and not rely on this README:
23 Subscribe to the wiki page to get updates on the documentation.
25 Where to get the latest
26 -----------------------
28 This package lets you build your own 'latest', all you need is a local git
29 repository. The process is documented in the Developers section of this document.
30 However since not many users are expected to keep a local git repository we 
31 provide daily snapshots of this package + the wireless and bluetooth subsystem
32 code. You can find the latest snapshot at:
34 linux-next.git version:
37 stable version:
40 Versions
41 --------
43 There are two different versions of this package available. 
44  * Version based on latest linux-next.git tree named compat-wireless-YYYY-MM-DD.tar.bz2
45  * Version based on linux-2.6-stable.git tree named compat-wireless-2.6.CC.DD.tar.bz2
47 Both versions should work for every kernel > 2.6.24. The differences are the
48 code they are containing. The version based on linux-next.git contains the
49 wireless and bluetooth subsystem out of linux-next.git and the stable version
50 the wireless subsystem out of the corresponding linux stable version.
52 Selecting your driver
53 ---------------------
55 If you know the driver you want you can select it with our
56 helper script:
58 ./scripts/driver-select
60 Run that script to see more information. 
61 Not all drivers are currently enabled via driver-select.
63 Building, and installing
64 ------------------------
66 Build: compile the latest linux wireless subsystem
68         make
70 Install:
72 We use the updates/ directory so your distribution's drivers are left intact.
74         sudo make install
76 Uninstall:
78 This nukes our changes to updates/ so you can go back to using your
79 distribution's supported drivers.
81         sudo make uninstall
83 Load:
85 Reboot unless you know what you are doing.
86 (Usually modprobe 'driver-name' is the way to go)
89 Bluetooth modules can be separately compiled and installed using below commands
90 Bluetooth drivers are also available via ./scripts/driver-select
92 Build:
93         make bt
95 Install:
96         sudo make btinstall
98 Uninstall:
99         sudo make btuninstall
101 Unload:
102         sudo make btunload
104 Load:
105         modprobe driver-name. If unsure, reboot.
107 Drivers
108 -------
110 This is the list of drivers the package currently provides. It adds
111 all new drivers or drivers which keep being updated which you might
112 be interested in.
114 Drivers list:
116 adm8211
117 ar9170usb
118 at76c50x-usb
119 ath5k
120 ath6kl
121 ath9k
122 ath9k_htc
123 b43
124 b43legacy
125 b44
126 carl9170
127 brcm80211
128 ipw2100
129 ipw2200
130 iwl3945
131 iwlagn
132 iwlcore
133 iwmc3200wifi
134 libertas
135 libertas_cs
136 libertas_sdio
137 libertas_spi
138 libertas_tf
139 libertas_tf_usb
140 libipw
141 mwl8k
142 orinoco_cs
143 orinoco_nortel
144 orinoco_pci
145 orinoco_plx
146 orinoco_tld
147 orinoco_usb
148 orinoco
149 p54common
150 p54pci
151 p54spi
152 p54usb
153 rt2400pci
154 rt2500pci
155 rt2500usb
156 rt2800pci
157 rt2800usb
158 rt61pci
159 rt73usb
160 rtl8180
161 rtl8187
162 rtlwifi
163 rtl8192ce
164 spectrum_cs
165 ssb
166 wl1251
167 wl12xx
168 zd1211rw
170 This package also provides more drivers which may be documented here
172 For a complete list see:
176 Non-wireless drivers
177 --------------------
179 Atheros Ethernet drivers:
181 atl1
182 atl1c
183 atl1e
184 atl2
186 To support b43 ssb is also provided, and since ssb is also provided
187 we provide b44 (the ethernet driver).
189 The new rfkill drivers also provided and backported.
191 Bluetooth drivers:
193 ath3k           
194 bcm203x
195 bluecard_cs
196 bluetooth
197 bnep
198 bpa10x
199 bt3c_cs
200 btmrvl
201 btmrvl_sdio
202 btsdio
203 btusb
204 btuart_cs
205 cmtp
206 dtl1_cs
207 hidp
208 hci_vhci
209 hci_uart
210 l2cap
211 rfcomm
212 sco
214 Firmware:
215 ---------
217 If your driver needs firmware please be sure to check the driver page
218 for that driver here:
222 Why?
223 ----
225 For users or developers stuck on older kernels that want to help test or 
226 patch wireless work. Additionally if you're on a recent kernel this lets
227 you get the latest and greatest linux-next git work without much effort.
228 This may mean new drivers for some users. Last but not least we hope this
229 will encourage vendors and developers to post patches upstream first
230 rather than forking or maintaining their own mac80211 releases with
231 their own patches for their own drivers.
233 Building for external kernels
234 ----------------------------------
236 If you have a kernel you do not have installed but yet want to build the
237 compat-wireless-2.6 drivers for it you can use this syntax:
239 make KLIB=/home/mcgrof/kernels/linux- KLIB_BUILD=/home/mcgrof/kernels/linux-
241 If you have a kernel installed, which is not your currently running kernel (e.g. via
242 distro updates; plus its corresponding kernel-dev package), you can use this syntax:
244 make  KLIB=/lib/modules/
246   and to install to your system's root path for the non-running kernel:
248 make  KLIB=/lib/modules/ KMODPATH_ARG='INSTALL_MOD_PATH=' install
250 Bugs
251 -----
253 If you've found a bug please report it to our linux-wireless mailing list:
257 Report the bug if you are working with the latest and greatest.
258 If your bug is compatibility-related then we should still try to fix
259 it within the compat.[ch] work.
261 ChangeLog
262 ---------
264 Here you see the list of changes to all wireless drivers, the wireless core and mac80211.
268 This views all the changes on wireless-testing.git.
270 License
271 -------
273 This work is a subset of the Linux kernel as such we keep the kernel's
274 Copyright practice. Some files have their own copyright and in those
275 cases the license is mentioned in the file. All additional work made
276 to building this package is licensed under the GPLv2.
278 Developers
279 ----------
281 Compatibility work goes into compat/compat.[ch]. If using those files do 
282 not suffice additional actual code changes can go into patches/*.patch.
284 An extended and more up to date version can be found at:
288 This section deals with development details of compat-wireless and the other
289 trees it uses. If you want to make your own compat-wireless tarballs, or if you
290 see something busted with compat-wireless or just want to add something new or
291 an enhancement this is the guide for you.
293 Git trees you will need
294 -----------------------
296 compat-wireless backports both the bluetooth and 802.11 subsystems down to older
297 kernels. To be able to synchronize backporting the latest and greatest the
298 linux-next.git tree is used as its main source for kernel updates. General Linux
299 kernel compatibility is addressed through a general kernel compatibility tree,
300 compat.git. compat-wireless then has its own tree for specific wireless
301 compatibility. You will then need to checkout three trees to start hacking on
302 compat-wireless:
304 git://
305 git://
306 git://
308 Linux next
309 ----------
311 The linux-next.git tree brings all subsystems being worked on for the next
312 kernel release into one tree. So if the current rc kernel is 2.6.33-rc5, this
313 means linux-next will have what people today are working on for the 2.6.34
314 kernel release.
316 compat.git
317 ----------
319 The compat git tree is a general kernel compatibility layer which can be shared
320 amongst different compatibility projects, or drivers. compat-wireless is just
321 one of the kernel compatibility projects using compat.git. compat.git builds a
322 general compatibility module, compat, and any additional modules to let you get
323 new general kernel updates from future kernels on your old kernels.
325 compat.git modules
326 ------------------
328 compat.git provides a few modules and headers to help with general kernel
329 compatibility.
331 compat
332 ------
334 Provides all exported symbols implemented in each respective kernel
335 compat-2.6.xy.c files. Upon module load it just initializes the Linux kernel's
336 ''power management Quality Of Service'' (aka '''pm-qos''') Interface interface
337 added as of the 2.6.24 kernel. No other things are initialized, the rest of the
338 compat module just acts as a library of exported symbols.
340 compat_firmware_class
341 ---------------------
343 Another module which compat.git provides is a backport of the firmware_class
344 module which got updated recently newer with a new request_firmware_nowait()
345 to allow better asynchronous firmware uploading. This was added as of the 2.6.33
346 kernel. The firmware_class module has been backported into a new module called
347 compat_firmware_class. A separate module has been defined instead of a direct
348 replacement for firmware_class since your system may have old drivers which use
349 the old request_firmware_nowait() and would bust if they used the new
350 request_firmware_nowait(). The compat_firmware_class module registers its own
351 sysfs subsystem and as such also gets udev events sent through a separate
352 subsystem. Because of this a new udev rules file is required and provided.
354 compat-wireless.git
355 -------------------
357 Anything that is not general kernel compatibility but instead specific to 802.11
358 or bluetooth goes into compat-wireless.git. After you've cloned all three trees,
359 linux-next.git, compat.git and compat-wireless.git you need to change into the
360 compat-wireless directory and tell compat-wireless where you linux-next and
361 compat.git trees are. You do this with environment variables GIT_TREE and
362 GIT_COMPAT_TREE. You can do for example:
364 export GIT_TREE=/home/user/wireless-testing/
365 export GIT_COMPAT_TREE=/home/users/compat.git/
367 Then you can update your local sources based on these linux-next.git and
368 compat.git trees:
370 scripts/   - Cleans the compat-wireless-2.6 tree
371 scripts/  - Updates compat-wireless-2.6 with your git tree
372 scripts/ - Does the above two
374 Adding new drivers
375 ------------------
377 Most new drivers are enabled for compilation. If see a driver you would like
378 enabled try it into the mix, test them and if they work enable them and send
379 the respective patches.
381 Sending patches
382 ---------------
384 Remember there are three trees. linux-next itself is a conglomeration of kernel
385 git trees itself, so patches for linux-next.git should be sent to each
386 respective subsystem for which the patches are targeted for. So for example for
387 802.11 you will want to send them to John Linville and cc linux-wireless, for
388 further guidelines on this see the Submitting Patches guidelines for 802.11.
390 As another example, for bluetooth you will want to send them to Marcel
391 Holtmann and cc the linux-bluetooth mailing list. If your patch touches on
392 others areas of the kernel refer to the MAINTAINERS file on the kernel.
394 For compat.git and compat-wireless.git please send patches against to:
396 To: Luis R. Rodriguez <>
397 CC:,
398 Subject: [PATCH] compat-2.6: fix foo
400 For patches for compat.git please use a subject like the following:
402 Subject: [PATCH] compat: fix foo
404 For compat-wireless.git please use a subject like the following:
406 Subject: [PATCH] compat-wireless: fix foo
408 Patches are preferred sent with a clear commit log entry, if unfamiliar with
409 how to send patches please refer to
413 TODO
414 -----
415  * Dialog (make menuconfig) option for this package
416  * Compatibility work for 2.6.18 --> 2.6.24