ath9k_htc#
ath9k_htc provides hardware support for Atheros AR9001 and AR9002 familyhardware.
Get the driver#
The driver is part of wireless-testing. See thisguide to use the wireless-testingtree directly. Or you can usecompat-wireless toget the driver.
Chipsets supported#
AR9271
AR7010 USB-PCIe bridge with AR928x wireless chips
Supported Devices#
See theath9k_htc device list.
Mailing list#
linux-wireless is the recommended mailing list to use for questions regarding the driver. Firmware-related questions should go toath9k_htc_fw.
The archives for the old ath9k-devel list, which was closed in 2017, are availablehere.
Configuring your kernel#
Enable these options in your kernel config. Most distros will already have it enabled.
CONFIG_ATH_COMMON=mCONFIG_ATH9K_HW=mCONFIG_ATH9K_COMMON=mCONFIG_ATH9K_HTC=m
Firmware#
This driver requires firmware. The firmware can be obtained fromfirmware tree.
Alternately you can download it from here:http://wireless.kernel.org/download/htc_fw/.
This firmware is now open, to contribute check out:
* [[https://github.com/qca/open-ath9k-htc-firmware|https://github.com/qca/open-ath9k-htc-firmware]]
Older firmware map:AR9271 - ar9271.fwAR7010 - ar7010.fw or ar7010_1_1.fw
Newer firmware map:AR9271 - htc_9271.fwAR7010 - htc_7010.fw
The firmware has to be placed in the correct location, usually /lib/firmware. This could vary among distributions, so check your distro’s policies if loading of the firmware fails.
Supported Features#
* Station Mode* Monitor Mode* AP Mode (**NOTE:** AP mode works only with up to 7 stations due to a [[https://lists.ath9k.org/pipermail/ath9k-devel/2013-April/010513.html|firmware limitation]])* IBSS Mode* Mesh Mode* Legacy (11g) operation* HT support* TX/RX 11n AMPDU aggregation* HW Encryption* LED* Suspend/Resume
Disabled Features#
* [[PowerSave|PowerSave]]
ath9k_htc uses the Autosleep feature of the wireless card. Basic PS support has been implemented in the driver, but it is disabled by default.
Modeswitching for AR7010#
AR7010 based cards operate by default in USB Mass storage mode and have to be ‘switched’ to wireless mode on plugging in. If you have an oldUSB_ModeSwitch package, you can do this to load ath9k_htc automatically.
Add this line to /lib/udev/rules.d/40-usb_modeswitch.rules.
# Atheros WirelessATTRS{idVendor}=="0cf3", ATTRS{idProduct}=="20ff", RUN+="usb_modeswitch '%b/%k'"Add a file“0cf3:20ff” in /etc/usb_modeswitch.d/ and add these lines to it.
######################################################### Atheros WirelessDefaultVendor= 0x0CF3DefaultProduct=0x20FFTargetVendor= 0x0CF3TargetProduct= 0x7010CheckSuccess=10NoDriverLoading=1MessageContent="5553424329000000000000000000061b000000020000000000000000000000"
Now, when the device is plugged in, ath9k_htc should load normally. If not, report toath9k_devel.
Debugging#
Seehere.
Known issues#
The AMPDU size is limited to 22 subframes for UB94/95 and 17 for UB91.Fixing this would require removing lots of cruft and structuralchanges in the firmware.
This HW strongly depends on USB. Please chechusb related issuesbefore sending bug report.
AP/P2P Modes#
This is experimental !
Patches enabling P2P/AP modes have been merged in wireless-testing, itwould be part of the driver from Linux 3.0. Using only one VIF (VirtualInterface) running in AP mode would be a good idea for now, multipleinterface support has not been tested extensively. Note:PowerSave is not properly supported yet.
Please do report bugs, crashes, weird behavior and other generaltantrums thrown by the driver.
TODO#
A list of things that need to be fixed in the firmware.
Handle AMPDU subframe limits properly.
Handle AMPDU density properly.
ERP protection needs to be fixed.
RTS/CTS has to be handled properly (for both management and data frames).
Processing multicast frames has to be fixed (MultiRateRetry etc.).
Short/Long preamble selection has to be fixed.
Duration calculation for data, control and management frames.
BAR transmission to be moved to the host.
Low RSSI issue for UB91/94.
TPC for UB94/95 - why is it required ?
NOACK handling.
Destination mask handling.
TX filtering (legacy and HT modes).
AMPDU delimiter calculation.
AccessClass distribution.
Unify TX statistics.
MIB interrupt processing (how the fsck does ANI even work now ?)
cwMin/cwMax handling.
_Three_ different data structures pointing to the same rate control data, really ?
Multicast frame completion.
World poverty.