This is an old revision of the document!
Table of Contents
UPDATE: compat-wireless is now known as compat-drivers
Compat-wireless is a package which contains the development and stable versions (pulled from the kernel's git repository) of the in-kernel wireless drivers and the mac80211 wireless stack. New packages are released pretty much every day.
This package is mentioned quite often on the forums and the IRC channel because using it is very convenient. You can think of it (in fact, you should) as a sized-down version of the kernel tree, a one that contains only the sources of the wireless drivers and the wireless stack. Therefore, you can apply any wireless-related patches to it and recompile them without having to recompile the whole kernel.
Additionally, the development versions of the drivers have one particular advantage : they're being constantly improved. It is not uncommon to see that they support more hardware, have better performance, or simply contain fixes to various bugs - in contrast to their stable versions. However, you should always remember that development versions may be incomplete or contain even more bugs than the stable ones.
We distinguish two versions of compat-wireless, development (bleeding edge) and stable. The development version may include more drivers, supported hardware and bug-fixes but may not be as stable as the 'stable' version which implies its nature. With minor exceptions, both versions will suffice in your bid to enable aircrack-ng support for your card/driver. For the majority of the users the stable version is the preferred one to use
In order to install this package, you need to have a few things :
- Kernel 2.6.24 or higher
- The kernel headers for the kernel you're currently running
- Basic development tools
Installing the package
If you meet the requirements of the package, you can try installing it.
Kernels 2.6.24 or higher
The installation process is as follows:
Download the latest available package from http://wireless.kernel.org/en/users/Download/stable/
$ tar xvjf compat-wireless-3.6-rc6-1.tar.bz2
note: the exact filename of the tarball depends on which version you have downloaded, substitute the example filename with the one corresponding to the file you downloaded
$ cd compat-wireless-3.6-rc6-1
$ wget http://patches.aircrack-ng.org/mac80211.compat08082009.wl_frag+ack_v1.patch $ patch -p1 < mac80211.compat08082009.wl_frag+ack_v1.patch
note: the next two steps are only required for compat-wireless versions before v3.3-rc1-2
$ wget http://patches.aircrack-ng.org/channel-negative-one-maxim.patch $ patch -p1 < channel-negative-one-maxim.patch
( apply any additional patches that you may need)
Before compiling, take a look at “driver-select” down the page
$ sudo make install
$ sudo make wlunload
$ sudo modprobe driver-name
Reboot, if you're unsure.
Kernels 2.6.22 - 2.6.24
If you're using an ancient kernel, currently lower than 2.6.24, you won't have much success enabling aircrack-ng. There used to be a package called compat-wireless-old which is no longer supported. You could try and dig in to Orbit's archives for older releases, be warned, the likelihood of you succeeding is very slim. Your best bet to enable compat-wireless, thus aircrack-ng, is to install a supported kernel version. An other convenient option is to utilize linux Live CD with preconfigured settings for easy aircrack-ng operation.
Uninstalling the package
Should you be in any way dissatisfied with the new drivers, you can uninstall them very easily and return to your default wireless kernel drivers:
$ cd compat-wireless-$(date -I) $ sudo make uninstall $ sudo make wlunload
Then reboot or sudo modprobe your-desired-driver to complete the process.
compat-wireless offers one very useful script, called driver-select, which allows you to save time when compiling your preferred driver. Currently not all drivers are available via driver-select but the most common ones are. Its useful if you install compat-wireless frequently or if you have one card on your computer. Enter the compat-wireless directory and issue:
to see all of the available drivers and options. An example of installing singular module would be
./scripts/driver-select ath9k followed by "sudo make && sudo make install"
Refer to the linux-wireless driver-select page for more details.
If you encounter compilation problems, please make sure you've got kernel headers installed and that the system knows where to look for them. Generally, there should be a symlink under
which points to the directory containing the kernel headers.
Every now and then, you may stumble upon errors during compilation and the process may end because of them. Its not necessarily your fault. Sometimes, the compat-wireless tar balls do come out with compile errors built in, which are usually resolved in the next few releases. Should this happens to you, simply download an older version from the previous days and try again. If your problem persists and you're stuck, share your difficulties with the community in this forum thread
Module loading problems
Firstly, make sure that the compat-wireless package was compiled with GCC whose minor version is the same as the minor version of the GCC with which the kernel was compiled. For example, if you compiled your kernel with GCC 4.3.2, but you compiled compat-wireless with GCC 4.4.1, you might run into “Invalid module format” problems. These will also occur if you've built the package for a different kernel than the one you're currently running.
Secondly, as shown above, it is imperative to unload ALL wireless modules before you attempt to load your newly compiled ones. While in the compat-wireless directory
sudo make wlunload
will make sure all of the wireless modules are unloaded, which will pave the way for your new driver take its place. Reboot if you're unsure.