| Linux Wireless compatibility package | |
| ===================================== | |
| This is a Linux wireless compatibility package which provides the latest | |
| Linux wireless subsystem enhancements for kernels 2.6.24 and above. | |
| It is technically possible to support kernels < 2.6.24 but more | |
| work is required for that. | |
| It also provides Linux bluetooth subsystem enhancements for kernels 2.6.27 and above. | |
| With a local git repository you can update the compatibility package yourself. | |
| For more information on how to do this please refer the Developers section below. | |
| Documentation | |
| ------------ | |
| This package is also documented online and has more-up-to date | |
| information online than on this README file. You should read the wiki page | |
| and not rely on this README: | |
| http://wireless.kernel.org/en/users/Download | |
| Subscribe to the wiki page to get updates on the documentation. | |
| Where to get the latest | |
| ----------------------- | |
| This package lets you build your own 'latest', all you need is a local git | |
| repository. The process is documented in the Developers section of this document. | |
| However since not many users are expected to keep a local git repository we | |
| provide daily snapshots of this package + the wireless and bluetooth subsystem | |
| code. You can find the latest snapshot at: | |
| linux-next.git version: | |
| http://wireless.kernel.org/en/users/Download | |
| stable version: | |
| http://wireless.kernel.org/en/users/Download/stable/ | |
| Versions | |
| -------- | |
| There are two different versions of this package available. | |
| * Version based on latest linux-next.git tree named compat-wireless-YYYY-MM-DD.tar.bz2 | |
| * Version based on linux-2.6-stable.git tree named compat-wireless-2.6.CC.DD.tar.bz2 | |
| Both versions should work for every kernel > 2.6.24. The differences are the | |
| code they are containing. The version based on linux-next.git contains the | |
| wireless and bluetooth subsystem out of linux-next.git and the stable version | |
| the wireless subsystem out of the corresponding linux stable version. | |
| Selecting your driver | |
| --------------------- | |
| If you know the driver you want you can select it with our | |
| helper script: | |
| ./scripts/driver-select | |
| Run that script to see more information. | |
| Not all drivers are currently enabled via driver-select. | |
| Building, and installing | |
| ------------------------ | |
| Build: compile the latest linux wireless subsystem | |
| make | |
| Install: | |
| We use the updates/ directory so your distribution's drivers are left intact. | |
| sudo make install | |
| Uninstall: | |
| This nukes our changes to updates/ so you can go back to using your | |
| distribution's supported drivers. | |
| sudo make uninstall | |
| Load: | |
| Reboot unless you know what you are doing. | |
| (Usually modprobe 'driver-name' is the way to go) | |
| Bluetooth modules can be separately compiled and installed using below commands | |
| Bluetooth drivers are also available via ./scripts/driver-select | |
| Build: | |
| make bt | |
| Install: | |
| sudo make btinstall | |
| Uninstall: | |
| sudo make btuninstall | |
| Unload: | |
| sudo make btunload | |
| Load: | |
| modprobe driver-name. If unsure, reboot. | |
| Drivers | |
| ------- | |
| This is the list of drivers the package currently provides. It adds | |
| all new drivers or drivers which keep being updated which you might | |
| be interested in. | |
| Drivers list: | |
| adm8211 | |
| ar9170usb | |
| at76c50x-usb | |
| ath5k | |
| ath6kl | |
| ath9k | |
| ath9k_htc | |
| b43 | |
| b43legacy | |
| b44 | |
| carl9170 | |
| brcm80211 | |
| ipw2100 | |
| ipw2200 | |
| iwl3945 | |
| iwlagn | |
| iwlcore | |
| iwmc3200wifi | |
| libertas | |
| libertas_cs | |
| libertas_sdio | |
| libertas_spi | |
| libertas_tf | |
| libertas_tf_usb | |
| libipw | |
| mwl8k | |
| orinoco_cs | |
| orinoco_nortel | |
| orinoco_pci | |
| orinoco_plx | |
| orinoco_tld | |
| orinoco_usb | |
| orinoco | |
| p54common | |
| p54pci | |
| p54spi | |
| p54usb | |
| rt2400pci | |
| rt2500pci | |
| rt2500usb | |
| rt2800pci | |
| rt2800usb | |
| rt61pci | |
| rt73usb | |
| rtl8180 | |
| rtl8187 | |
| rtlwifi | |
| rtl8192ce | |
| spectrum_cs | |
| ssb | |
| wl1251 | |
| wl12xx | |
| zd1211rw | |
| This package also provides more drivers which may be documented here | |
| For a complete list see: | |
| http://wireless.kernel.org/en/users/Download | |
| Non-wireless drivers | |
| -------------------- | |
| Atheros Ethernet drivers: | |
| atl1 | |
| atl1c | |
| atl1e | |
| atl2 | |
| To support b43 ssb is also provided, and since ssb is also provided | |
| we provide b44 (the ethernet driver). | |
| The new rfkill drivers also provided and backported. | |
| Bluetooth drivers: | |
| ath3k | |
| bcm203x | |
| bluecard_cs | |
| bluetooth | |
| bnep | |
| bpa10x | |
| bt3c_cs | |
| btmrvl | |
| btmrvl_sdio | |
| btsdio | |
| btusb | |
| btuart_cs | |
| cmtp | |
| dtl1_cs | |
| hidp | |
| hci_vhci | |
| hci_uart | |
| l2cap | |
| rfcomm | |
| sco | |
| Firmware: | |
| --------- | |
| If your driver needs firmware please be sure to check the driver page | |
| for that driver here: | |
| http://wireless.kernel.org/en/users/Drivers | |
| Why? | |
| ---- | |
| For users or developers stuck on older kernels that want to help test or | |
| patch wireless work. Additionally if you're on a recent kernel this lets | |
| you get the latest and greatest linux-next git work without much effort. | |
| This may mean new drivers for some users. Last but not least we hope this | |
| will encourage vendors and developers to post patches upstream first | |
| rather than forking or maintaining their own mac80211 releases with | |
| their own patches for their own drivers. | |
| Building for external kernels | |
| ---------------------------------- | |
| If you have a kernel you do not have installed but yet want to build the | |
| compat-wireless-2.6 drivers for it you can use this syntax: | |
| make KLIB=/home/mcgrof/kernels/linux-2.6.23.9 KLIB_BUILD=/home/mcgrof/kernels/linux-2.6.23.9 | |
| If you have a kernel installed, which is not your currently running kernel (e.g. via | |
| distro updates; plus its corresponding kernel-dev package), you can use this syntax: | |
| make KLIB=/lib/modules/2.6.30.6-53.fc11.x86_64 | |
| and to install to your system's root path for the non-running kernel: | |
| make KLIB=/lib/modules/2.6.30.6-53.fc11.x86_64 KMODPATH_ARG='INSTALL_MOD_PATH=' install | |
| Bugs | |
| ----- | |
| If you've found a bug please report it to our linux-wireless mailing list: | |
| linux-wireless@vger.kernel.org | |
| Report the bug if you are working with the latest and greatest. | |
| If your bug is compatibility-related then we should still try to fix | |
| it within the compat.[ch] work. | |
| ChangeLog | |
| --------- | |
| Here you see the list of changes to all wireless drivers, the wireless core and mac80211. | |
| http://git.kernel.org/?p=linux/kernel/git/linville/wireless-testing.git;a=log; | |
| This views all the changes on wireless-testing.git. | |
| License | |
| ------- | |
| This work is a subset of the Linux kernel as such we keep the kernel's | |
| Copyright practice. Some files have their own copyright and in those | |
| cases the license is mentioned in the file. All additional work made | |
| to building this package is licensed under the GPLv2. | |
| Developers | |
| ---------- | |
| Compatibility work goes into compat/compat.[ch]. If using those files do | |
| not suffice additional actual code changes can go into patches/*.patch. | |
| An extended and more up to date version can be found at: | |
| http://wireless.kernel.org/en/users/Download/hacking | |
| This section deals with development details of compat-wireless and the other | |
| trees it uses. If you want to make your own compat-wireless tarballs, or if you | |
| see something busted with compat-wireless or just want to add something new or | |
| an enhancement this is the guide for you. | |
| Git trees you will need | |
| ----------------------- | |
| compat-wireless backports both the bluetooth and 802.11 subsystems down to older | |
| kernels. To be able to synchronize backporting the latest and greatest the | |
| linux-next.git tree is used as its main source for kernel updates. General Linux | |
| kernel compatibility is addressed through a general kernel compatibility tree, | |
| compat.git. compat-wireless then has its own tree for specific wireless | |
| compatibility. You will then need to checkout three trees to start hacking on | |
| compat-wireless: | |
| git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git | |
| git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/compat.git | |
| git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/compat-wireless-2.6.git | |
| Linux next | |
| ---------- | |
| The linux-next.git tree brings all subsystems being worked on for the next | |
| kernel release into one tree. So if the current rc kernel is 2.6.33-rc5, this | |
| means linux-next will have what people today are working on for the 2.6.34 | |
| kernel release. | |
| compat.git | |
| ---------- | |
| The compat git tree is a general kernel compatibility layer which can be shared | |
| amongst different compatibility projects, or drivers. compat-wireless is just | |
| one of the kernel compatibility projects using compat.git. compat.git builds a | |
| general compatibility module, compat, and any additional modules to let you get | |
| new general kernel updates from future kernels on your old kernels. | |
| compat.git modules | |
| ------------------ | |
| compat.git provides a few modules and headers to help with general kernel | |
| compatibility. | |
| compat | |
| ------ | |
| Provides all exported symbols implemented in each respective kernel | |
| compat-2.6.xy.c files. Upon module load it just initializes the Linux kernel's | |
| ''power management Quality Of Service'' (aka '''pm-qos''') Interface interface | |
| added as of the 2.6.24 kernel. No other things are initialized, the rest of the | |
| compat module just acts as a library of exported symbols. | |
| compat_firmware_class | |
| --------------------- | |
| Another module which compat.git provides is a backport of the firmware_class | |
| module which got updated recently newer with a new request_firmware_nowait() | |
| to allow better asynchronous firmware uploading. This was added as of the 2.6.33 | |
| kernel. The firmware_class module has been backported into a new module called | |
| compat_firmware_class. A separate module has been defined instead of a direct | |
| replacement for firmware_class since your system may have old drivers which use | |
| the old request_firmware_nowait() and would bust if they used the new | |
| request_firmware_nowait(). The compat_firmware_class module registers its own | |
| sysfs subsystem and as such also gets udev events sent through a separate | |
| subsystem. Because of this a new udev rules file is required and provided. | |
| compat-wireless.git | |
| ------------------- | |
| Anything that is not general kernel compatibility but instead specific to 802.11 | |
| or bluetooth goes into compat-wireless.git. After you've cloned all three trees, | |
| linux-next.git, compat.git and compat-wireless.git you need to change into the | |
| compat-wireless directory and tell compat-wireless where you linux-next and | |
| compat.git trees are. You do this with environment variables GIT_TREE and | |
| GIT_COMPAT_TREE. You can do for example: | |
| export GIT_TREE=/home/user/wireless-testing/ | |
| export GIT_COMPAT_TREE=/home/users/compat.git/ | |
| Then you can update your local sources based on these linux-next.git and | |
| compat.git trees: | |
| scripts/admin-clean.sh - Cleans the compat-wireless-2.6 tree | |
| scripts/admin-update.sh - Updates compat-wireless-2.6 with your git tree | |
| scripts/admin-refresh.sh - Does the above two | |
| Adding new drivers | |
| ------------------ | |
| Most new drivers are enabled for compilation. If see a driver you would like | |
| enabled try it into the mix, test them and if they work enable them and send | |
| the respective patches. | |
| Sending patches | |
| --------------- | |
| Remember there are three trees. linux-next itself is a conglomeration of kernel | |
| git trees itself, so patches for linux-next.git should be sent to each | |
| respective subsystem for which the patches are targeted for. So for example for | |
| 802.11 you will want to send them to John Linville and cc linux-wireless, for | |
| further guidelines on this see the Submitting Patches guidelines for 802.11. | |
| http://wireless.kernel.org/en/developers/Documentation/SubmittingPatches | |
| As another example, for bluetooth you will want to send them to Marcel | |
| Holtmann and cc the linux-bluetooth mailing list. If your patch touches on | |
| others areas of the kernel refer to the MAINTAINERS file on the kernel. | |
| For compat.git and compat-wireless.git please send patches against to: | |
| To: Luis R. Rodriguez <mcgrof@kernel.org> | |
| CC: linux-wireless@vger.kernel.org, linux-bluetooth@vger.kernel.org | |
| Subject: [PATCH] compat-2.6: fix foo | |
| For patches for compat.git please use a subject like the following: | |
| Subject: [PATCH] compat: fix foo | |
| For compat-wireless.git please use a subject like the following: | |
| Subject: [PATCH] compat-wireless: fix foo | |
| Patches are preferred sent with a clear commit log entry, if unfamiliar with | |
| how to send patches please refer to | |
| http://wireless.kernel.org/en/developers/Documentation/git-guide. | |
| TODO | |
| ----- | |
| * Dialog (make menuconfig) option for this package | |
| * Compatibility work for 2.6.18 --> 2.6.24 | |