Table of Contents

Go back –> Atheros Linux wireless drivers


carl9170 is the 802.11 draft-n USB driver with GPLv2 firmware for Atheros USB AR9170 devices.



Before you can use the driver, you have to get the the right firmware.


Users should be aware that these devices might go mad from time to time. Because these BUGs seem to occur too randomly to be identified, but happen often enough to be really annoying, the firmware and driver come with some convenient features to keep the overall downtime at a minimum and without requiring any user intervention. But as mention before there is a caveat: The user has to setup everything properly!

In general: The userspace has to be able to restore connectivity on its own as soon as the device reappears on the USB-Hub.

See FAQ for more details.

Multiple Interfaces

While the driver supports multiple virtual interfaces, in different combinations like:

802.11n Compatibility

It's worth mentioning that the chip was designed, produced and sold in the early 802.11n-draft period. Compatibility will always be an issue.

A known problem is that hardware can not support frame aggregation and QoS at the same time, meaning the device is not suitable for any serious 802.11n setup. Also the hardware crypto has some serious trouble with encrypting/deciphering at high throughput, therefore if possible use 'nohwcrypt=1' as a workaround.

BCM4313Hardware incompatibilityreplace hardware
Any Intel N Wifi LinkAggregation stallsdriver workaround
RT28xx/RT3xxxRandom disconnects?

See Contact, if you want to report issues with specific setups.

available devices



not working yet

not supported


The latest version is available from wireless-testing.git.


Firmware source code

There is code available, check out the carl9170.fw page for more details.

Firmware binary

The firmware can be obtained from firmware tree.

Alternately you can download the GPLv2 Firmware binary from here (rename to carl9170-1.fw):

for KernelFirmware VersionDownload Link
Linux 2.6.x and
Linux 3.1 and newer-1.9.9carl9170-1.fw-1.9.9


General FAQ

Recovery FAQ

I get “FW: … MAC RESET” kernel messages, what are those?

How can I check if the recovery option works correctly?

#number meaning
1 a fatal firmware error has occurred; the previous “FW” message contains more details
2 excessive flood of (non-fatal) firmware errors; check previous messages.
3 Hardware watchdog triggered, because the firmware has crash silently.
4 stuck tx queues. this is almost always a driver bug, so please file a report.
5 your system wasn't able to process requests fast enough; as a result the device has become unresponsive.
6 command timeout. Either fw/driver bugs or a bad cable/hw malfunction.
7 RF/PHY has become too unstable. Check for radars or microwave ovens?
8 lost command response. related to 6/command timeout
9 unexpected/invalid command response. also related to 6/command timeout
10 firmware restart was requested by user (through DebugFS)

Multiple Interfaces FAQ


The Otus driver

Atheros merged support for their USB AR9170 2-stream 802.11n chipsets into the Linux kernel on the v2.6.29 release through a staging driver called Otus. The shortcomings for this driver was it required its own custom supplicant and obviously the code quality was sub-par.

ar9170usb driver

Shortly after Otus was submitted into staging Johannes Berg put a lot of effort into rewriting the driver for proper upstream inclusion. Christian Lamparter simply took what was already there, added a few finishing touches to addressed upstream considerations and we got it merged on the 2.6.30 release under the ar9170usb name.

During this time a lot of good work went into stabilizing the driver to replace the staging Otus driver from Atheros. The project had ambitious hopes to completely supersede the original Atheros staging driver: Otus.

To achieve this all functionality, performance, stability and quality must have been equally matched. In the end this proved quite challenging even though Atheros was kind enough to provide detailed documentations, hardware specifications and most importantly, they actually released the firmware source code ar9170.fw under GPLv2!

It took months to dig through all the code and during this time the ar9170usb driver project lost most of its momentum and changes to the driver where limited to simple USB IDs updates, API fix-ups and serious crash fixes.


Towards the beginning of 2010 a new shiny driver: carl9170usb started brewing with the main goal of replacing the existing driver and making use of only open firmware.

It took 1 year, 5 months, 9 days since this merge of ar9170usb upstream to release carl9170 with upstream inclusion intentions.

The carl9170 driver actually ends up not only replacing but superseding the staging Otus driver.