We started providing compatibility support since 2.6.22 as that is when mac80211 was introduced onto the stock kernel but we have now added initial support for older kernels, starting at 2.6.21.
You will need at least of these kernels:
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.
Later kernels got WMM supported redesigned for mac80211, when using compat-wireless old we will build our own WMM support for you without usage of the new kernel QOS features. This is exactly how WMM was handled in mac80211 on 2.6.22, but keep in mind 2.6.22 didn't come with any mac80211 drivers, it came just with mac80211 itself. Since you get a custom WMM support you also get 802.11n support, which requires WMM support.
Its worth noting compat-wireless-old currently does not get any attention from any developer as such its not getting further updates. Patches are always welcomed though.
You can get compat-wireless-old from:
Extract the content of the package:
tar jxvf compat-wireless-old.tar.bz2
Build the latest Linux wireless subsystem:
cd compat-wireless-old.tar.bz2 make
We use the updates/ directory so your distribution's drivers are left intact.
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.
Here is the list of all the drivers we support in this package.
On distribution releases with old udev rules you may end up with strange network device names, for example, wlan0_rename. You may also end up with master device names such as eth3, when this was actually intended to be named wmaster0. This happens because master interface has the same MAC address as the real interface, and it is created first. The old udev rule, which keys on the MAC addres, may rename it to device names like eth3, for example. Then the real interface is created, udev sees that it has already renamed an interface with that MAC and gives it the wlan0_rename name.
If you delete the generated rename rules, it should create the correct ones on the next boot. Alternately, you could add:
selector to your current rule. Debian puts these autogenerated udev rules in /etc/udev/rules.d/z25_persistent-net.rules. Other distributions may vary slightly.
Kernels ⇐ 2.6.22 now get nl80211 support, however, genl_multicast_group won't work. This compatibility cannot be extended to older kernels as the struct genl_family was extended on 2.6.23 to add the struct list_head mcast_groups. Without this you will not be able to use nl80211 events which uses this heavily. The compat-wireless-old release does not have nl80211 events though so you should not care about this.
sudo b43load b43
To revert back to bcm43xx you can run:
sudo b43load bcm43xx
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
If you have a kernel you do not have installed but yet want to build the compat-wireless-old drivers for it you can use this syntax:
make KLIB=/home/mcgrof/kernels/linux-18.104.22.168 \ KLIB_BUILD=/home/mcgrof/kernels/linux-22.214.171.124
If you've found a bug you are expected to fix it as this is not being actively developed. Patches are always welcomed of course.
Sure, feel free to send patches. The main work was designed to support kernels >= 2.6.22 as that was when mac80211 was introduced. Some drivers are available for 2.6.21 but not all drivers can work on that kernel due to an CRC-ITU-T algorithm dependency.
See the compat-wireless-old 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.
The old compat-wireless tree is used for kernels ⇐ 2.6.26. We don't have an automatic script to update it. It is updated manually, as such if you want it updated please send patches to linux-wireless mailing list and hack on it as you would with the kernel using git on its own tree.
RHEL5, Centos5, and Debian etch seems to be stuck on 2.6.18. Patches are welcomed.
For kernels >= 2.6.27 please send patches against
To: Luis R. Rodriguez <firstname.lastname@example.org> CC: email@example.com Subject: [PATCH] compat-wireless-old: fix foo
To checkout the compat-wireless-2.6.git tree you do:
Note: you do not need a wireless-testing clone to use or hack on this tree.