| |
| 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 |
| |