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:
21 http://wireless.kernel.org/en/users/Download
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:
35 http://wireless.kernel.org/en/users/Download
37 stable version:
38 http://wireless.kernel.org/en/users/Download/stable/
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 spectrum_cs
163 ssb
164 wl1251
165 wl12xx
166 zd1211rw
168 This package also provides more drivers which may be documented here
170 For a complete list see:
172 http://wireless.kernel.org/en/users/Download
174 Non-wireless drivers
175 --------------------
177 Atheros Ethernet drivers:
179 atl1
180 atl1c
181 atl1e
182 atl2
184 To support b43 ssb is also provided, and since ssb is also provided
185 we provide b44 (the ethernet driver).
187 The new rfkill drivers also provided and backported.
189 Bluetooth drivers:
191 ath3k
192 bcm203x
193 bluecard_cs
194 bluetooth
195 bnep
196 bpa10x
197 bt3c_cs
198 btmrvl
199 btmrvl_sdio
200 btsdio
201 btusb
202 btuart_cs
203 cmtp
204 dtl1_cs
205 hidp
206 hci_vhci
207 hci_uart
208 l2cap
209 rfcomm
210 sco
212 Firmware:
213 ---------
215 If your driver needs firmware please be sure to check the driver page
216 for that driver here:
218 http://wireless.kernel.org/en/users/Drivers
220 Why?
221 ----
223 For users or developers stuck on older kernels that want to help test or
224 patch wireless work. Additionally if you're on a recent kernel this lets
225 you get the latest and greatest linux-next git work without much effort.
226 This may mean new drivers for some users. Last but not least we hope this
227 will encourage vendors and developers to post patches upstream first
228 rather than forking or maintaining their own mac80211 releases with
229 their own patches for their own drivers.
231 Building for external kernels
232 ----------------------------------
234 If you have a kernel you do not have installed but yet want to build the
235 compat-wireless-2.6 drivers for it you can use this syntax:
237 make KLIB=/home/mcgrof/kernels/linux-2.6.23.9 KLIB_BUILD=/home/mcgrof/kernels/linux-2.6.23.9
239 If you have a kernel installed, which is not your currently running kernel (e.g. via
240 distro updates; plus its corresponding kernel-dev package), you can use this syntax:
242 make KLIB=/lib/modules/2.6.30.6-53.fc11.x86_64
244 and to install to your system's root path for the non-running kernel:
246 make KLIB=/lib/modules/2.6.30.6-53.fc11.x86_64 KMODPATH_ARG='INSTALL_MOD_PATH=' install
248 Bugs
249 -----
251 If you've found a bug please report it to our linux-wireless mailing list:
253 linux-wireless@vger.kernel.org
255 Report the bug if you are working with the latest and greatest.
256 If your bug is compatibility-related then we should still try to fix
257 it within the compat.[ch] work.
259 ChangeLog
260 ---------
262 Here you see the list of changes to all wireless drivers, the wireless core and mac80211.
264 http://git.kernel.org/?p=linux/kernel/git/linville/wireless-testing.git;a=log;
266 This views all the changes on wireless-testing.git.
268 License
269 -------
271 This work is a subset of the Linux kernel as such we keep the kernel's
272 Copyright practice. Some files have their own copyright and in those
273 cases the license is mentioned in the file. All additional work made
274 to building this package is licensed under the GPLv2.
276 Developers
277 ----------
279 Compatibility work goes into compat/compat.[ch]. If using those files do
280 not suffice additional actual code changes can go into patches/*.patch.
282 An extended and more up to date version can be found at:
284 http://wireless.kernel.org/en/users/Download/hacking
286 This section deals with development details of compat-wireless and the other
287 trees it uses. If you want to make your own compat-wireless tarballs, or if you
288 see something busted with compat-wireless or just want to add something new or
289 an enhancement this is the guide for you.
291 Git trees you will need
292 -----------------------
294 compat-wireless backports both the bluetooth and 802.11 subsystems down to older
295 kernels. To be able to synchronize backporting the latest and greatest the
296 linux-next.git tree is used as its main source for kernel updates. General Linux
297 kernel compatibility is addressed through a general kernel compatibility tree,
298 compat.git. compat-wireless then has its own tree for specific wireless
299 compatibility. You will then need to checkout three trees to start hacking on
300 compat-wireless:
302 git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
303 git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/compat.git
304 git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/compat-wireless-2.6.git
306 Linux next
307 ----------
309 The linux-next.git tree brings all subsystems being worked on for the next
310 kernel release into one tree. So if the current rc kernel is 2.6.33-rc5, this
311 means linux-next will have what people today are working on for the 2.6.34
312 kernel release.
314 compat.git
315 ----------
317 The compat git tree is a general kernel compatibility layer which can be shared
318 amongst different compatibility projects, or drivers. compat-wireless is just
319 one of the kernel compatibility projects using compat.git. compat.git builds a
320 general compatibility module, compat, and any additional modules to let you get
321 new general kernel updates from future kernels on your old kernels.
323 compat.git modules
324 ------------------
326 compat.git provides a few modules and headers to help with general kernel
327 compatibility.
329 compat
330 ------
332 Provides all exported symbols implemented in each respective kernel
333 compat-2.6.xy.c files. Upon module load it just initializes the Linux kernel's
334 ''power management Quality Of Service'' (aka '''pm-qos''') Interface interface
335 added as of the 2.6.24 kernel. No other things are initialized, the rest of the
336 compat module just acts as a library of exported symbols.
338 compat_firmware_class
339 ---------------------
341 Another module which compat.git provides is a backport of the firmware_class
342 module which got updated recently newer with a new request_firmware_nowait()
343 to allow better asynchronous firmware uploading. This was added as of the 2.6.33
344 kernel. The firmware_class module has been backported into a new module called
345 compat_firmware_class. A separate module has been defined instead of a direct
346 replacement for firmware_class since your system may have old drivers which use
347 the old request_firmware_nowait() and would bust if they used the new
348 request_firmware_nowait(). The compat_firmware_class module registers its own
349 sysfs subsystem and as such also gets udev events sent through a separate
350 subsystem. Because of this a new udev rules file is required and provided.
352 compat-wireless.git
353 -------------------
355 Anything that is not general kernel compatibility but instead specific to 802.11
356 or bluetooth goes into compat-wireless.git. After you've cloned all three trees,
357 linux-next.git, compat.git and compat-wireless.git you need to change into the
358 compat-wireless directory and tell compat-wireless where you linux-next and
359 compat.git trees are. You do this with environment variables GIT_TREE and
360 GIT_COMPAT_TREE. You can do for example:
362 export GIT_TREE=/home/user/wireless-testing/
363 export GIT_COMPAT_TREE=/home/users/compat.git/
365 Then you can update your local sources based on these linux-next.git and
366 compat.git trees:
368 scripts/admin-clean.sh - Cleans the compat-wireless-2.6 tree
369 scripts/admin-update.sh - Updates compat-wireless-2.6 with your git tree
370 scripts/admin-refresh.sh - Does the above two
372 Adding new drivers
373 ------------------
375 Most new drivers are enabled for compilation. If see a driver you would like
376 enabled try it into the mix, test them and if they work enable them and send
377 the respective patches.
379 Sending patches
380 ---------------
382 Remember there are three trees. linux-next itself is a conglomeration of kernel
383 git trees itself, so patches for linux-next.git should be sent to each
384 respective subsystem for which the patches are targeted for. So for example for
385 802.11 you will want to send them to John Linville and cc linux-wireless, for
386 further guidelines on this see the Submitting Patches guidelines for 802.11.
387 http://wireless.kernel.org/en/developers/Documentation/SubmittingPatches
388 As another example, for bluetooth you will want to send them to Marcel
389 Holtmann and cc the linux-bluetooth mailing list. If your patch touches on
390 others areas of the kernel refer to the MAINTAINERS file on the kernel.
392 For compat.git and compat-wireless.git please send patches against to:
394 To: Luis R. Rodriguez <mcgrof@kernel.org>
395 CC: linux-wireless@vger.kernel.org, linux-bluetooth@vger.kernel.org
396 Subject: [PATCH] compat-2.6: fix foo
398 For patches for compat.git please use a subject like the following:
400 Subject: [PATCH] compat: fix foo
402 For compat-wireless.git please use a subject like the following:
404 Subject: [PATCH] compat-wireless: fix foo
406 Patches are preferred sent with a clear commit log entry, if unfamiliar with
407 how to send patches please refer to
408 http://wireless.kernel.org/en/developers/Documentation/git-guide.
411 TODO
412 -----
413 * Dialog (make menuconfig) option for this package
414 * Compatibility work for 2.6.18 --> 2.6.24