Go back –> [[en/users/Drivers/Atheros|Atheros Linux wireless drivers]] ===== ath9k_htc ===== ath9k_htc provides hardware support for Atheros AR9001 and AR9002 family hardware. ===== Get the driver ===== The driver is part of wireless-testing. See this [[en/developers/Documentation/git-guide|guide]] to use the wireless-testing tree directly. Or you can use [[en/users/Download|compat-wireless]] to get the driver. ===== Chipsets supported ===== * AR9271 * AR7010 USB-PCIe bridge with AR928x wireless chips ===== Supported Devices ===== See the [[en/users/Drivers/ath9k_htc/devices|ath9k_htc device list]]. ===== Mailing list ===== [[en/developers/mailinglists|linux-wireless]] is the recommended mailing list to use for questions regarding the driver. Firmware-related questions should go to [[http://lists.infradead.org/mailman/listinfo/ath9k_htc_fw|ath9k_htc_fw]]. The archives for the old ath9k-devel list, which was closed in 2017, are available [[https://lists.ath9k.org/mailman/listinfo/ath9k-devel|here]]. ===== Configuring your kernel ===== Enable these options in your kernel config. Most distros will already have it enabled. CONFIG_ATH_COMMON=m CONFIG_ATH9K_HW=m CONFIG_ATH9K_COMMON=m CONFIG_ATH9K_HTC=m ===== Firmware ===== This driver requires firmware. The firmware can be obtained from [[http://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git|firmware tree]]. Alternately you can download it from here: [[http://wireless.kernel.org/download/htc_fw/|http://wireless.kernel.org/download/htc_fw/]]. [[en/developers/GSoC/2012/ath9k_htc_open_firmware|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.fw AR7010 - ar7010.fw or ar7010_1_1.fw Newer firmware map: AR9271 - htc_9271.fw AR7010 - 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 old [[http://www.draisberghof.de/usb_modeswitch/|USB_ModeSwitch]] package, you can do this to load ath9k_htc automatically. Add this line to /lib/udev/rules.d/40-usb_modeswitch.rules. # Atheros Wireless ATTRS{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 Wireless DefaultVendor= 0x0CF3 DefaultProduct=0x20FF TargetVendor= 0x0CF3 TargetProduct= 0x7010 CheckSuccess=10 NoDriverLoading=1 MessageContent="5553424329000000000000000000061b000000020000000000000000000000" Now, when the device is plugged in, ath9k_htc should load normally. If not, report to [[https://lists.ath9k.org/mailman/listinfo/ath9k-devel|ath9k_devel]]. ===== Debugging ===== See [[en/users/Drivers/ath9k/debug|here]]. ===== 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 structural changes in the firmware. * This HW strongly depends on USB. Please chech [[https://github.com/qca/open-ath9k-htc-firmware/wiki/usb-related-issues|usb related issues]] before sending bug report. ===== AP/P2P Modes ===== //**This is experimental !**// Patches enabling P2P/AP modes have been merged in wireless-testing, it would be part of the driver from Linux 3.0. Using only one VIF (Virtual Interface) running in AP mode would be a good idea for now, multiple interface support has not been tested extensively. Note: [[PowerSave|PowerSave]] is not properly supported yet. Please do report bugs, crashes, weird behavior and other general tantrums 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|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|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. * [[en/developers/GSoC/2012/ath9k_htc_open_firmware|open firmware for ath9k_htc]]