This is an old revision of the document!
Table of Contents
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.
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:
$ wget http://wireless.kernel.org/download/compat-wireless-2.6/compat-wireless-$(date -I).tar.bz2
note: compat-wireless tar balls aren't released everyday, so you're probably better off going straight to http://wireless.kernel.org/download/compat-wireless-2.6/ and grabbing the latest available package
$ tar -jxf compat-wireless-$(date -I).tar.bz2
$ cd compat-wireless-$(date -I)
$ wget http://patches.aircrack-ng.org/mac80211.compat08082009.wl_frag+ack_v1.patch $ wget http://patches.aircrack-ng.org/channel-negative-one-maxim.patch
$ patch -p1 < mac80211.compat08082009.wl_frag+ack_v1.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, you will need to reload any modules you're currently using, as well as their dependencies, in order to make sure that there are no unresolved symbols (i.e. functions/macros/variables that are present in the new version but not in the old one). The best way to do this is to reboot. If you don't want to reboot, then simply rmmod all the wireless-related modules that are currently being used. For example, if you're using the b43 driver, then you would have to do :
# rmmod b43
# rmmod ssb
# modprobe b43
Another approach is to use the unload script provided by the authors of the compat-wireless package. Just run make unload when the installation finishes.
Broadcom firmware missing
Because of Broadcom's licensing, the firmware - which is essential for the card to run - cannot be freely distributed and is obtainable only by extracting their proprietary driver. See installing the firmware instructions here to learn the required steps.