- Download latest Linux wireless drivers
- Compat-wireless release types
- Requirements for bleeding edge
- Linux wireless version table
- Where to download bleeding edge
- Directly downloading the tarball
- Archive of compat-wireless-2.6 tarballs
- Selecting your driver
- Building and installing
- Known issues
- Why was this work done?
- What's the difference between compat-wireless-2.6 and John Linville's tree?
- Getting compat-wireless on Ubuntu
- Building for external kernels
Download latest Linux wireless drivers
You can now download a package which lets you compile and install the latest advances on the Linux wireless subsystem and get some of our latest drivers without having to recompile your entire kernel. This package adds mac80211, mac80211 drivers, and any new FullMAC driver which has had fairly recent updates.
If you'd like to keep the wireless-testing.git repository local as well, please read out git-guide which explains how to achieve this. 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. Please keep in mind though that if you do this it is advised you start your compat-wireless-2.6 tree through the git tree that holds it. This way if changes are made to add support for a new driver of a new compatibility feature all you need to do is pull from the repository (git-pull). Please read Checking out compat-wireless-2.6.git tree section for details on how to do this.
Compat-wireless release types
We have a few types of compat-wireless releases. This page is dedicated to follow always the bleeding edge, which to us means following the wireless-testing tree. Please refer to these other links for the other compat-wireless releases.
compat-wireless-old – for kernels 2.6.22 up to 2.6.26
stable compat-wireless releases – based on stable kernels for kernels >= 2.6.27
Requirements for bleeding edge
You need two things:
A Kernel >= 2.6.27
- Your kernel headers installed
Please be very sure you have your kernel headers installed before reporting any sort of build issues with this package. This usually will mean having this symlink point to a valid directory with kernel headers in it:
The exception to this is if you are building the package targeting a kernel you are not running. Users doing this should read the Building for external kernels section.
Additionally, the kernel you're building for needs a valid ".config" file, if it isn't present compat will assume you have PCI, USB and PCMCIA built into your kernel and if not, fail building.
We recommend these the following userspace applications to be installed:
Linux wireless version table
The following is the latest release versions for code taken from wireless-testing.git and on compat-wireless.git. This is updated automatically every day. The version represents the git-describe output.
Where to download bleeding edge
You can get bleeding edge compat-wireless here:
This package is updated daily. It reflects the latest on wireless-testing.git tree.
Directly downloading the tarball
We have enabled anti-hotlinking to the compat-wireless-2.6.tar.bz2 tarball. This ensures users directed to this tarball from random tutorials online will hopefully read this page. Anti-hotlinking prevents users from accessing the tarball directly before seeing this page. In summary, you cannot directly (for example using wget) this tarball before having viewed this introductory page. If you try to do so you will be redirected here. You can, however, directly download a dated version of the tarball, for example compat-wireless-2008-03-25.tar.bz2.
You can find the latest dated tarball in the compat-wireless-2.6 download directory.
Archive of compat-wireless-2.6 tarballs
Selecting your driver
If you know what driver you want you can use driver-select:
Selecting your driver can reduce the amount of time to compile compat-wireless. If you want to restore compat-wireless to enable all drivers again you can use:
If you do not see your driver in the supported list it means care has not been taken to ensure it works with driver-select and you must just build compat-wireless as a whole.
Building and installing
Extract the content of the package:
tar jxvf compat-wireless-$(date -I).tar.bz2
Build the latest Linux wireless subsystem:
cd compat-wireless-$(date -I) make
We use the updates/ directory so your distribution's drivers are left intact. By default depmod will search this directory first, but if you find that it does not then check that your depmod.conf file lists the search order correctly with updates appearing first (before built-in).
sudo make install
This nukes our changes to updates/ so you can go back to using your distribution's supported drivers.
sudo make uninstall
Since you might be replacing your old mac80211 drivers you should first try to unload all existing mac80211 and related drivers. Note also that broadcom, zydas, and atheros devices have old legacy drivers which you need to be sure are removed first. We provide a mechanism to unload all old and legacy drivers first so you should run to be sure:
sudo make unload
Before loading modules you must first unload your old wireless subsystem modules. Read above how to do this. If you know what module you need you can simply load the module using modprobe. If you simply are not sure you can use, just reboot the box.
We tend to carry all new drivers or any drivers worth getting updates for. For a list of all current Linux wireless drivers see our Drivers page.
If MadWifi is present the build system will detect this and disable it. It does this by simply renaming ath_pci.ko to ath_pci.ko.ignore. This lets us disable the MadWifi driver without blacklisting it which could cause issues with users later. If you would like to enable MadWifi at a later time and disable ath5k you can run:
sudo athload madwifi
To revert back to ath5k you can run:
sudo athload ath5k
Why was this work done?
It was done 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 wireless-2.6 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.
If your driver needs firmware please be sure to check the driver page for that driver.
What's the difference between compat-wireless-2.6 and John Linville's tree?
This package is based on John's tree, we just add compatibility support for older kernels.
Getting compat-wireless on Ubuntu
With Ubuntu you have the option of either installing compat-wireless yourself or of installing the package that provides it built by the Ubuntu kernel team. The Ubuntu package that carries compat-wireless is called linux-backport-modules and it has more backported modules than just your wireless subsystem. Its updated whenever major updates are pushed out into the wireless-testing git tree.
# For Ubuntu 8.10 Intrepid users: sudo apt-get install linux-backports-modules-intrepid # For Ubuntu 9.04 Jaunty users: sudo apt-get install linux-backports-modules-jaunty
Please note that if you are installing linux-backports-modules-intrepid and you later decide to install compat-wireless by building it by yourself you are highly encouraged you first remove linux-backports-modules-intrepid first otherwise you can run into module dependency conflicts.
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-126.96.36.199 \ KLIB_BUILD=/home/mcgrof/kernels/linux-188.8.131.52
If you've found a bug please report it to our linux-wireless mailing list:
Report the bug because 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.
See the wireless-testing ChangeLog to see the list of latest changes to all wireless drivers, the wireless core and mac80211. Since this package is based on the wireless-testing.git latest means patches which John has accepted today!
See the compat-wireless-2.6 ChangeLog to view changes made necessary in order to keep advancing this package.
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.
Hacking on compat-wireless-2.6
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
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.
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 provides a few modules and headers to help with general kernel compatibility.
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 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.
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.
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, compat.git, 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.
Remember there are three trees. Patches for linux-next.git should be sent to each respective subsystem. 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. For bluetooth you will want to send them to Marcel Holtmann and cc the linux-bluetooth mailing list.
For compat.git and compat-wireless.git please send patches against to:
To: Luis R. Rodriguez <firstname.lastname@example.org> CC: email@example.com, firstname.lastname@example.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 our git guide.
- Dialog (make menuconfig) option for this package
The way compat-wireless releases are made, where they are kept are detailed in the compat-wireless admin page.