NOTE: this page is for archival only, see the note at the end of the page.

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. We started providing compatibility support since 2.6.22 (note outsanding bug for <= 2.6.22 though) 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. This package adds mac80211, mac80211 drivers, and any new FullMAC driver which has had fairly recent updates worth getting such as libertas, ipw2100 and ipw2200.

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.

Please note compat-wireless now consists of two packages, one for older kernels (<= 2.6.26 and one for newer kernels >= 2.6.27). Please be sure to download the appropriate one. It is also important to note that the compat-wireless package for older kernels is note updated as frequently as the one for the newer kernels.

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.

Requirements

You need two things:

  • A kernel >= 2.6.21 (limited support for 2.6.21)

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

/lib/modules/`uname -r`/build

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.

compat-wireless-old requirements

If you are using on:

  • 2.6.22

You can use 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.

If you are on:

  • 2.6.23
  • 2.6.24
  • 2.6.25
  • 2.6.26

You can use compat-wireless-old and if you want to have support for WMM or 802.11n then you will need enabled in your kernel:

  • CONFIG_NETDEVICES_MULTIQUEUE
  • CONFIG_NET_SCHED

If you do not have these enabled you will not get WMM or 802.11n support. Note that if you are on a kernel between 2.6.23..2.6.26 you should not have CONFIG_MAC80211_QOS enabled as part of your kenrnel as this was not part of your kernel, it was removed on 2.6.23 because the new CONFIG_NET_SCHED and CONFIG_NETDEVICES_MULTIQUEUE handled it for us. If you have compilation issues related to CONFIG_MAC80211_QOS please report this to our linux-wireless mailing list.

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.

wireless-testing.git: <<CurrentWirelessTesting>>

compat-wireless.git: <<CurrentCompatVersion>>

Where to download

You can compat-wireless for kernels >= 2.6.27 here:

http://wireless.kernel.org/download/compat-wireless-2.6/compat-wireless-2.6.tar.bz2

You can download compat-wireless-old for kernels <= 2.6.26 here (but still 2.6.22 or later):

http://wireless.kernel.org/download/compat-wireless-2.6/compat-wireless-old.tar.bz2

This package is updated daily. It reflects the latest on wireless-testing.git tree. Note that it is *strongly* recommended you use a kernel >= 2.6.27 as compat-wireless-old doesn't get as much attention as compat-wireless does.

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

wireless.kernel.org only hosts the latest dated compat-wireless-2.6 tarball but if you would like an older release please check the compat-wireless-2.6 archive, which is hosted by Orbit.

Building and installing

Extract:

Extract the content of the package:

tar jxvf compat-wireless-$(date -I).tar.bz2

Build:

Build the latest Linux wireless subsystem:

cd compat-wireless-$(date -I)
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

Unload:

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

Load:

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.

Drivers

Here is the list of all the drivers we support in this package.

Drivers

adm8211

at76_usb

ath9k

ath5k

b43

b43legacy

iwl3945

iwlagn

ipw2100

ipw2200

ub8xxx

libertas_cs

p54_pci

p54_usb

rndis_wlan

rt2400pci

rt2400pci

rt2500pci

rt2500usb

rt61pci

rt73usb

rtl8180

rtl8187

zd1211rw

Known issues

  • ath9k on older kernels

ath9k is currently only enabled on kernels >= 2.6.26. If a developer is interested in older kernels they'll have to add compatibility support for it.

  • Strange wireless device names:

Lets clarify device names first. Regularly you should only see two new device names:

  • wmaster0
  • wlan0

The wmaster0 device is what we call the master device. The master device is an internal master device used only by mac80211. It should be ignored by users. If possible we will try to hide it from users later.

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:

ATTRS{type}="1"

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. Right now nothing is using this though so you should be able to use the existing nl80211 userspace applications.

  • b43:

b43 and b43legacy now load. Since there was an old softmac broadcom driver we provide a load script for this driver. To load the new generation drivers (b43 and b43legacy) you can run:

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

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.

  • prism54, p54pci, p54usb?

We don't provide prism54 in this package because distributions already provide it. p54 is its replacement. prism54 works only with full MAC cards. p54 works with both full MAC and soft MAC cards. Should prism54 get any new updates we'll start packaging it here.

  • Firmware:

If your driver needs firmware please be sure to check the driver page for that driver here:

http://linuxwireless.org/en/users/Drivers

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.

Do I need this on Fedora?

As of Fedora 10 mac80211 is shipping mac80211 built into the kernel which means you cannot replace the mac80211 version for it as you will have a symbol conflict. This is being followed on Red Hat bugzilla:

The initial FC10 kernel release had mac80211 built-in to the FC10 kernel and not as a module which prevents users from using compat-wireless. This was reported as under a Fedora bug #470143, John later fixed this as of 2.6.27.4-83 FC10 kernel.

https://bugzilla.redhat.com/show_bug.cgi?id=470143

John Linville actually builds Fedora kernels whenever he makes any updates to wireless-testing.git and these kernels are based on wireless-testing.git so you should just have to upgrade your kernel. What you get from these kernels will be exactly what you will get out of this package. Therefore you really only need compat-wireless-2.6 package on Fedora if you are using a really old kernel and you can't upgrade for some reason. Note that yum update is reasonably useful, although it can be weeks behind. If you want to be sure to get the latest Fedora kernels which have wireless-testing.git code in you can get them here:

http://koji.fedoraproject.org/koji/userinfo?userID=388

These are the kernels that John builds for Fedora.

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-2.6.23.9 \
   KLIB_BUILD=/home/mcgrof/kernels/linux-2.6.23.9

Bugs

If you've found a bug please report it to our linux-wireless mailing list:

linux-wireless@vger.kernel.org

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.

/!\ Please always report not only the compat-wireless(-old) date/version, but also the contents of the file 'git-describe' in the tarball.

How about compatibility work for kernels older than 2.6.21 ?

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.

ChangeLog

wireless-testing ChangeLog

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!

compat-wireless ChangeLog

See the compat-wireless-2.6 ChangeLog to view changes made necessary in order to keep advancing this package.

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

Hacking on compat-wireless-2.6

Please try adding new drivers, test them and if they work enable them. You can then send patches. Compatibility work goes into compat/compat.[ch]. If using those files do not suffice additional actual code changes can go into compat/compat.diff.

If you have your own wireless-testing.git tree, before running admin-update.sh be sure to set your GIT_TREE variable. For example:

export GIT_TREE=/home/user/wireless-testing/

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

Hacking on compat-wireless-2.6-old

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.

TODO

  • Compatibilty work for 2.6.18 –> 2.6.20

RHEL5, Centos5, and Debian etch seems to be stuck on 2.6.18. Patches are welcomed.

  • Dialog (make menuconfig) option for this package

Patches for compatibility work

For kernels >= 2.6.27 please send patches against

git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/compat-wireless-2.6.git

To: Luis R. Rodriguez <mcgrof@winlab.rutgers.edu>
CC: linux-wireless@vger.kernel.org
Subject: [PATCH] compat-2.6: fix foo

For kernels <= 2.6.26 please send patches against

git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/compat-wireless-2.6-old.git

To: Luis R. Rodriguez <mcgrof@winlab.rutgers.edu>
CC: linux-wireless@vger.kernel.org
Subject: [PATCH] compat-2.6-old: fix foo

Checking out compat-wireless-2.6.git tree

If you have a local wireless-testing.git tree already you can just check out the compat-wireless-2.6.git tree yourself and make updates manually. To checkout the compat-wireless-2.6.git tree you do:

git-clone git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/compat-wireless-2.6.git

Every now and then you want to pull to get the latest updates:

cd compat-wireless-2.6/
git-pull

Checking out compat-wireless-2.6-old.git tree

To checkout the compat-wireless-2.6.git tree you do:

git-clone git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/compat-wireless-2.6-old.git

Note: you do not need a wireless-testing clone to use or hack on this tree.

Patches for drivers

If you'd like to send patches for a driver though you can send it using our Submitting Patches guidelines. Please note that some patches applied onto wireless-testing can be applied onto compat-wireless-old, they just need to be backported. Help with this is greatly appreciated.


This is a static dump of the wiki, taken after locking it in January 2015. The new wiki is at https://wireless.wiki.kernel.org/.
versions of this page: last, v123, v122, v121, v120, v119, v118, v117, v116, v115, v114, v113, v112, v111, v110, v109, v108, v107, v106, v105, v104, v103, v102, v101, v100, v99, v98, v97, v96, v95, v94, v93, v92, v91, v90, v89, v88, v87, v86, v85, v84, v83, v82, v81, v80, v79, v78, v77, v76, v75, v74, v73, v72, v71, v70, v69, v68, v67, v66, v65, v64, v63, v62, v61, v60, v59, v58, v57, v56, v55, v54, v53, v52, v51, v50, v49, v48, v47, v46, v45, v44, v43, v42, v41, v40, v39, v38, v37, v36, v35, v34, v33, v32, v31, v30, v29, v28, v27, v26, v25, v24, v23, v22, v21, v20, v19, v18, v17, v16, v15, v14, v13, v12, v11, v10, v9, v8, v7, v6, v5, v4, v3, v2, v1