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 provide compatibility support since 2.6.22 as that is when mac80211 was introduced onto the stock kernel. This 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-2.6 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.


You need two things:

  • A kernel >= 2.6.22

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

Where to download

You can download this package here:

This package is updated daily. It reflects the latest on wireless-2.6.git 'everything' branch.

Building and installing


Extract the content of the package:

tar jxvf compat-wireless-2.6.tar.bz2


Build the latest Linux wireless subsystem:

cd compat-wireless-2.6


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


If you know what module you need you can simply load the module using modprobe. If you simply are not sure you can use:

sudo make load

Note that this will run make unload first, just in case you forgot. This unloads your old wireless subsystem drivers and loads the new shiny ones. For example if ipw3945 and its proprietary daemon are found it'll be stopped and the module unloaded and then iwl3945 will be loaded. If you are simply upgrading a mac80211 driver this will unload the old one and the old mac80211 drivers and load the new ones.


We'll add more as we go on testing them throughout the old supported kernels. Only tested drivers will be added.
































































Known issues

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


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. p54 just doesn't yet support ad-hoc, and AP mode. Should prism54 get any new updates we'll start packaging it here.

  • What about net/ieee80211/softmac/ and their drivers?

Documentation/feature-removal-schedule.txt is being updated to mark this for removal. Here is the relevant text:

What:  iee80211 softmac wireless networking component
When:  2.6.26 (or after removal of bcm43xx and port of zd1211rw to mac80211)
Files: net/ieee80211/softmac
Why:   No in-kernel drivers will depend on it any longer.
Who:   John W. Linville <>
  • Firmware:

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

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


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.

How about compatibility work for kernels older than 2.6.22 ?

Sure, feel free to send patches. The main work was designed to support kernels >= 2.6.22 as that was when mac80211 was introduced.


wireless-2.6 ChangeLog

See the wireless-2.6 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-2.6 everything branch 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.


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.


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-2.6 git tree, before running be sure to set your GIT_TREE variable. For example:

export GIT_TREE=/home/mcgrof/wireless-2.6/

scripts/   - Cleans the compat-wireless-2.6 tree
scripts/  - Updates compat-wireless-2.6 with your git tree
scripts/ - Does the above two


  • Compatibilty work for 2.6.18 –> 2.6.21

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

Please send patches against:


To: Luis R. Rodriguez <>
Subject: [PATCH] compat-2.6: fix foo

Patches for drivers

If you'd like to send patches for a driver though you can send it using our Submitting Patches guidelines.

This is a static dump of the wiki, taken after locking it in January 2015. The new wiki is at
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