ath9k is a completely FOSS wireless driver for Atheros IEEE 802.11n WLAN based chipsets.
Subscribe to this page!
You should subscribe to this page so you can get e-mail updates on changes and news for ath9k automatically. You'll get an e-mail as soon as this page gets updated.
Our mailing list for this driver is:
Get the latest ath9k driver
Any distribution shipping a kernel >= 2.6.27 will have ath9k present. Below is a list of the minimal distribution requirements to either use ath9k from 2.6.27 or from compat-wireless.
- Ubuntu Intrepid (8.10)
- Fedora Core 10
- openSUSE 11.1
- Mandriva Linux 2009.0 (formally known as Mandrake Linux)
- ARCH Linux
- Gentoo Linux
- Red Flag Linux 7.0 (based on Fedora 10)
If you want to get the latest ath9k driver you can get it by using the wireless-testing git tree. Read our git-guide for that. Alternatively you can simply upgrade only your Linux wireless subsystem by using compat-wireless.
To enable ath9k, you must first enable mac80211:
Networking ---> Wireless ---> <M> Improved wireless configuration API <M> Generic IEEE 802.11 Networking Stack (mac80211)
You can then enable ath9k in the kernel configuration under
Device Drivers ---> [*] Network device support ---> Wireless LAN ---> <M> Atheros 802.11n wireless cards support
This is covered under the ath9k debugging section.
Enabling bluetooth coexistance
You can enable bluetooth coexistance on ath9k by using the btcoex_enable module parameter. This is not enable by default as some devices have had issues with it.
modprobe ath9k btcoex_enable=1
Products with ath9k cards
You can find all products int the market with ath9k cards on the ath9k products page.
AR9285 (>= 2.6.29)
AR9102 (AHB) (>= 2.6.30)
AR9103 (AHB) (>= 2.6.30)
Modes of operation
- Short GI (40 MHz only)
- WEP 64 / 127
- WPA1 / WPA2
- WPS client side (use wpa_gui-qt4 from wpa_supplicant for now)
- BT co-existence (with a module parameter)
- 64-bit support / big endian, small endian
- AHB and PCI bus
Things on our TODO list.
Being worked on
- Multiple Interface support.
Performance tuning, on MIPS routers currently CPU usage (softirq) is much higher than older MadWifi driver.
* Design a descriptor layer
- Must probably encompass struct ath_rx_status and struct ath_tx_status, making struct ar5416_desc a HW type. Again, a clean layer for accessing descriptors.
* Rate Control cleanup
- RC should be easily swappable with other algorithms, minstrel, for example. An easy hack would be to have an index conversion routine between MCS and internal. But the proper solution would be to fix ath9k's RC to use MCS indices internally.
* Cleanup HW capabilities
- Still too convoluted.
* Cleanup ChannelFlags
- Still a bit ugly.
* Naming Convention
- Decide on a consistent and uniform prefix - do we want ath9k_ or ath_ everywhere ?
After the above mentioned points are taken care of, ath9k.h would be small enough to be merged with core.h. Any help is greatly appreciated (hint, hint).
In the long run
- MIMO Power save
- WDS - Already part of mac80211, probably can be added after AP
Will not be supported
- WEP 152 - there are no plans to support this in mac80211
A little history on ath9k
When it went in
ath9k was announced to have been merged into Linux-2.6.27-rc3 by Linus on Tue, 12 Aug 2008 19:33:16 -0700 (PDT), and consisted of 58.8% of the entire rc3 patch.
Early distributions which picked it up
Reported bugs on ath9k
This is a collection of bug reports both unresolved and resolved to help users track issues and to find patches for fixes which have not yet been merged.
Most common known issues
Minimal kernel requirements
You want at least these kernels to use ath9k:
Please refer to Ubuntu kernel release to Mainline kernel release map to find out which package name you need as well as from what repository (called "pocket"). If you have no clue what was just described please read the Ubuntu Wireless documentation.
Hangs with PCI devices and SMP systems
This issue was due to a hardware limitation on our PCI devices whereby our device's FIFO queue got filled up and caused a loop. This issue is only present on our 11n PCI devices, its not present on our PCI-express devices nor our legacy 802.11abg devices.
The fix was to serialize read/writes – a spin_lock around each read and write. This fix is not performed for PCI devices or non-SMP systems. This fix is present in 2.6.29, 18.104.22.168 and 22.214.171.124.
DMA issues on 2.6.27
DMA issues were present on first release of 2.6.27, these issues were easily reproducible on MacBook Pros. This issue was fixed on 126.96.36.199.
Loss of connectivity after large file transfer on 2.6.28
This issue was fixed in 188.8.131.52, the issue was caused by the fact that ath9k was configured to ignore beacons and mac80211 expects them, after a large data transfer it is possible the beacons could have been missed and mac80211 detects a timeout of waiting for beacons or receiving data.