ath9k
ath9k is a completely FOSS wireless driver for Atheros IEEE 802.11n WLAN based chipsets.
Contents
- ath9k
- Subscribe to this page!
- Mailing list
- Get the latest ath9k driver
- Enabling ath9k
- Enabling bluetooth coexistance
- Enabling debug
- Legend
- supported chipsets
- APs with Atheros 11n
- Products in the retail market containing Atheros 11n solutions
- TODO
- A little history on ath9k
- Reported bugs on ath9k
- Most common known issues
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.
Mailing list
Our mailing list for this driver is:
https://lists.ath9k.org/mailman/listinfo/ath9k-devel
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.
Enabling ath9k
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
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
Enabling debug
If you have issues with ath9k you can enable debug in ath9k. You will first need to enable the Kconfig option (CONFIG_ATH9K_DEBUG):
Device Drivers ---> [*] Network device support ---> Wireless LAN ---> <M> Atheros 802.11n wireless cards support [*] Atheros ath9k debugging
Then you can use the module parameter debug. We cover below the different available debug levels you can use.
enum ATH_DEBUG { ATH_DBG_RESET = 0x00000001, ATH_DBG_QUEUE = 0x00000002, ATH_DBG_EEPROM = 0x00000004, ATH_DBG_CALIBRATE = 0x00000008, ATH_DBG_INTERRUPT = 0x00000010, ATH_DBG_REGULATORY = 0x00000020, ATH_DBG_ANI = 0x00000040, ATH_DBG_XMIT = 0x00000080, ATH_DBG_BEACON = 0x00000100, ATH_DBG_CONFIG = 0x00000200, ATH_DBG_FATAL = 0x00000400, ATH_DBG_ANY = 0xffffffff };
If you want to debug calibration (0x00000008) and resets (0x00000001) for example you would use (0x00000008 | 0x00000001) = 0x00000009. To debug everything just use 0xffffffff. Below is an example of how to enable debug for just configuration changes:
modprobe ath9k debug=0x00000200
Legend
Used to describe cards
HB: PCIe Half MiniCard
XB: PCIe Full MiniCard
- MB: Mini PCI card
- CB: PCI Cardbus card
- SB: Single band, 1x2, 2x2 configuration
- DB: Dual band, 2x3, 2x2 configuration
Used to describe Acess Point components
- FE: Fast Ethernet, 100 Mbit/s
GBe: GigaBit Ethernet 1000 Mbit/s
- USB: USB ports available
- OLED: Organic-LED Display
DBDC: DualBand-DualConcurrent, means AP can run in 2 GHz and 5 GHz at the same time
supported chipsets
- AR5418+AR5133
- AR5416+AR5133
- AR5416+AR2133
- AR9160
- AR9280
- AR9281
AR9285 (>= 2.6.29)
AR9102 (AHB) (>= 2.6.30)
AR9103 (AHB) (>= 2.6.30)
APs with Atheros 11n
WARNING of practicality: Not all models can be flashed with custom GPL software at this time, see the OpenWRT forums for latest information. However, all of these routers have been identified to use supported Atheros 11n radio chips.
AP Model |
Chipset |
Chains |
SB |
DB |
FE |
GBe |
OLED |
DBDC |
USB |
Atlantiland A02-RB-W300N |
|
|
|
|
|
|
|
|
|
AzureWave AW-NR580 |
AR5416 (minipci) |
|
|
|
|
|
|
|
|
Cameo Communications WLN2206 |
|
|
|
|
|
|
|
|
|
D-Link DIR-615 v. C1 (AP81) |
AR9001AP-2NG (AR9130+AR9102 +AR8216) |
2x2 |
|
|
|
|
|
|
|
D-Link DIR-625 v.C2 (IP5K+MB71) |
AR5008-2NG (AR5416+AR2122 |
2x2 |
|
|
|
|
|
|
|
D-Link DIR-635 v.A3 (IP5K+MB71) |
AR5008-3NG (AR5416+AR2122 |
3x3 |
|
|
|
|
|
|
|
D-Link DIR-855 v.A1 (IP5K+MB71+MB72) |
AR5008-3NG (AR5416+AR2133) + AR5008-3NX (AR5416+AR5133) |
3x3 |
|
|
|
|
|
|
|
D-Link DGL-4500 v.A1 (IP5K+MB72) (DBSW) |
AR5008-3NX (AR5416+AR5133) |
3x3 |
|
|
|
|
|
|
|
D-Link DIR-825 v.A1 (IP5K+MB81+MB82) |
AR9001-3NG (AR9160+AR9103) + AR9001-3NX (AR9160+AR9106) |
2x2 |
|
|
|
|
|
|
|
Level One WBR-6000 |
AR5416/AR2133 |
|
|
|
|
|
|
|
|
Linksys WAP-4410N |
|
|
|
|
|
|
|
|
|
Linksys WRT300N v2.0 (serial number SNP00*) |
AR5416 or AR5418 |
|
|
|
|
|
|
|
|
Linksys WRT350N v2.0 |
AR5416 |
|
|
|
|
|
|
|
|
Planex MZK-W300NH |
AR9102 |
2x2 |
|
|
|
|
|
|
|
Planex MZK-W04NU |
AR9103 |
3x3 |
|
|
|
|
|
|
|
Mercury MWR300T+ |
AR9103 |
3x3 |
|
|
|
|
|
|
|
Netgear WNR2000 |
AR9103 |
3x3 |
|
|
|
|
|
|
|
Netgear WN802Tv2 |
|
|
|
|
|
|
|
|
|
TP-Link TL-WR941N |
AR9103 |
3x3 |
|
|
|
|
|
|
|
TP-Link TL-WR941ND |
AR9103 |
3x3 |
|
|
|
|
|
|
|
TP-Link TL-WR841N |
AR5416 |
2x2 |
|
|
|
|
|
|
|
TP-Link TL-WR841ND |
AR5416 |
2x2 |
|
|
|
|
|
|
|
TRENDnet TEW-632BRP v1.0 & v1.1 |
AR9102 |
2x2 |
|
|
|
|
|
|
|
TRENDnet TEW-652BRP |
AR9102 |
2x2 |
|
|
|
|
|
|
|
Unex RNEA-83 (AP83) |
AR9001AP-2NX (AR9130+AR9104) |
2x2 |
|
|
|
|
|
|
|
Unex RNEA-81 (AP83) |
AR9001AP-2NX (AR9130+AR9104) |
2x2 |
|
|
|
|
|
|
|
Unex RPAA-82 (PB44) |
AR9001AP-3NX2 (AR7161+AR9160+AR9106) |
3x3 |
|
|
|
|
|
|
|
Unex RNRA-83 (AP96) |
AR9002AP-4XHG (AR7161+AR9220+AR9223+AR8316) |
2x2 |
|
|
|
|
|
|
|
Zyxel NBG-420N |
AR9102 |
2x2 |
|
|
|
|
|
|
|
Zyxel NBG-460N |
AR9103 |
3x3 |
|
|
|
|
|
|
|
Zyxel X550N |
AR9103 |
3x3 |
|
|
|
|
|
|
|
Zyxel X550NH |
AR9103 |
3x3 |
|
|
|
|
|
|
|
Products in the retail market containing Atheros 11n solutions
Acer
<AR9281/XB91, 1x2 SB>
- Aspire 6530
- Aspire 4530
Apple
<AR5416>
MacBook 2.1
MacBookPro 2.1
MacBookPro 3.1
Asus
<AR9281/XB91, 1x2 SB>
- Eee PC S101
Belkin
<AR5416+AR2133>
- N1 Wireless Notebook Card
D-Link
<AR5416+AR2133>
DWA-642 RangeBooster N Notebook Adapter
DWA-645 RangeBooster N650 Notebook Adapter
DWA-542 RangeBooster N Desktop Adapter
DWA-547 RangeBooster N650 Desktop Adapter
- DWA-652 XtremeN Notebook Adapter
- DWA-552 XtremeN Desktop Adapter
DWA-643 Xtreme N ExpressCard Notebook Adapter
- DWA-556 Xtreme N PCIe Desktop Adapter
Fujitsu
<AR5418+AR5133/XB72 2x3 DB>
- FMV-BIBLO LOOX T70WN
- FMV-BIBLO LOOX T70XN
- FMV-BIBLO LOOX R70YN
- FMV-BIBLO LOOX R/A70
- FMV-BIBLO NX95X/D
- FMV-BIBLO NX95Y/D
- FMV-BIBLO NX/A90N
- FMV-BIBLO NF75XN/D
- FMV-BIBLO NF75XN
- FMV-BIBLO NF75YN/D
- FMV-BIBLO NF75YN
- FMV-BIBLO NF/A75ND
- FMV-BIBLO NF/A70N
- FMV-BIBLO MG75X/V
- FMV-BIBLO MG75XN
- FMV-BIBLO MG90Y/V
- FMV-BIBLO MG90YN
- FMV-BIBLO MG90Y/V
- FMV-BIBLO MG/A75
<AR9281/HB91, 1x2 SB>
- FM BIBLO NF/B75
- FM BIBLO LOOX R/B50
LifeBook A1110
<AR9280/HB92, 2x2 DB>
- FM BIBLO MG/B75
- FM BIBLO LOOX U/B59
Fujitsu Siemens
<AR9281/XB91, 1x2 SB>
- Amilo Pa3515
Amilo Pa3553 (please read these notes if you have issues, upgrade your BIOS)
- Amilo Si3655
- Amilo Xi3450
- Amilo Xi3550
- Amilo Xi3585
<AR9280/XB92, 2x2 DB>
- Amilo Sa3650
- Amilo Xa3530
HP
<AR9280/HB92, 2x2 DB>
- HP Pavilion dv5
- Compaq Presario CQ50
- HP G50
- Compaq Presario CQ70
- HP G70
- HP Pavilion dv7
Lenovo
<AR5418+AR5133/XB72, 2x3 DB>
- T60
- X60
- X61
- T61
- R60
- R61
Linksys
<AR5416+AR2133>
- WPC300Nv2
- WMP300Nv2
- WPC100N
- WMP110N
NEC
<AR5416+AR5133/CB72, 2x3 DB>
- WL300NC
<AR9223/CB91 2x2 SB>
- WL300NC-G
<AR5418+AR5133/XB72, 2x3 DB>
- Lavie C LC950/MG
- Valuestar W VW790/MG
Netgear
<AR5416+AR2133>
- WNHDE111 Video Bridge
- WN711, Wireless-N eXpresscard adapter
SONY
<AR9281/HB91, 1x2 SB>
- Type R
- Type L
- Type S
Toshiba
<AR5418+AR5133/XB72, 2x3 DB>
- Sattelite A305D-S6831
- Sattelite M305-S4835
- Qosmio G55-Q801
- Qosmio G55-Q802
- Satellite K30 226E/253E
- Satellite T40 T40210E/5W
- Satellite T40 T40213C/5W
- Dynabook/Qosmio FX77GW/79GW/WXW
- Dynabook/Qosmio FXW/75GW
- Dynabook/Qosmio G50W/95GW
- Dynabook/Qosmio F50W/85GW
- Dynabook/Satellite PXW/57FW
<AR9281/XB91, 1x2 SB>
- Dynabook AX/54G
- Dynabook AX/53G
- Dynabook AX/53GBL
- Dynabook AX/53GPK
- Dynabook AX/52G
- Dynabook TX/67G
- Dynabook TX/66G
- Dynabook TX/66GBL
- Dynabook TX/66GPK
- Dynabook TX/65G
- Dynabook CX/48G
- Dynabook CX/45G
- Dynabook CX/47G
- Dynebook Qosmio FX/77G
- Dynebook Qosmio GX/79G
- Qosmio F50/88G
- Qosmio F50/86G
- Qosmio F40/86G
- Qosmio G50/98G
- Qosmio G50/97G
- Qosmio F50/F55-Q502
- Qosmio F50/F55-Q503
- Satelite A-300/A305-S6864**
Unex
<AR5416+AR5133/CB72, 2x3 DB>
- DNBA-81: DB 2x3 CB
<AR9160-BC1B+AR9106/MB82, 3x3 DB>
- DNMA-H5: Industrial-Grade,High-Power DB 3x3 MB
<AR9160+AR9106/MB82, 3x3 DB>
- DNMA-83: DB 3x3 MB
<AR9220/MB92, 2x2 DB>
- DNMA-92: DB 2x2 MB
<AR9223/MB91, 2x2 DB>
- DNMA-91: DB 2x2 MB
<AR9280/HB92, 2x2 DB>
- DNXA-92: DB 2x2 HB
<AR9285/HB95, 1x1 SB>
- DNXA-95: SB 1x1 HB
Working
Modes of operation
Station Mode
AP Mode
IBSS Mode
Features
- 802.11abg
- 802.11n
- HT20
- HT40
- AMPDU
- Short GI (40 MHz only)
- 802.11i
- WEP 64 / 127
- WPA1 / WPA2
- 802.11d
- 802.11h
- 802.11w/D7.0
- WPS client side (use wpa_gui-qt4 from wpa_supplicant for now)
- WMM
- LED
- RFKILL
- BT co-existence (with a module parameter)
- 64-bit support / big endian, small endian
- AHB and PCI bus
TODO
Things on our TODO list.
Being worked on
- Multiple Interface support.
Immediate Love
Performance tuning, on MIPS routers currently CPU usage (softirq) is much higher than older MadWifi driver.
Cleanup
* 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
- UAPSD
- WDS - Already part of mac80211, probably can be added after AP
- STBC
- WOW
- RIFS
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
OpenWrt became the first distribution to pick up ath9k and contribute to it.
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.
Distribution bugs
Invalid
Most common known issues
Minimal kernel requirements
You want at least these kernels to use ath9k:
>= 2.6.27.22
>= 2.6.28.10
- 2.6.29.3
Ubuntu users
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, 2.6.28.10 and 2.6.27.22.
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 2.6.27.8.
Loss of connectivity after large file transfer on 2.6.28
This issue was fixed in 2.6.28.1, 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.