How to set the WIFI to transmit continuously for CE lab testing?

Hi All,

I'm developing a IoT device by using AR9331 chip set with Openwrt, and want to make its WIFI to transmit continuously to meet the lab testing requirements. I cannot find any document about this chip with Openwrt that teaches me how to do it. My questions are, does Openwrt have any software package that supports lab testing ? If so, where can I have the software package? If not, is there any other way can help for lab testing on AR9331 hardware ?

Qualcomm Atheros offer a Windows tool named ART (Atheros Radio Test) that will either communicate directly with connected wifi chipsets, or - in case of an embedded device - over IP to the ART client, which seems to be available for customers as a kernel module "art.ko" for ancient Linux versions.

See Chapter 2-3 for further details:

There even seems to be source code available for art.ko
http://prog3.com/sbdm/download/detail/hzyjacinth/7583611
and someone was apparently successful with OpenWRT already:

But I'm not sure if this would be any useful without the art tool itself.

Datasheet however is not really helpful...

1 Like

If you are in the United States, the answer is no.

But, since you seem to be in a CE territory, ART2 (if you can find the software) should do it.

I tried to get the source from "http://prog3.com/sbdm/download/detail/hzyjacinth/7583611", but it seems that the websites cannot allow me to download the source code, is there any other site for such source code download ?

And for using ART2, does it really need the test instruments ? such as IQ2010 ? As from Lab's feedback, it just needs to make it output radio frequency continuously only.

Not sure if it helps,


seems to contain some code but I could not find any information about continious transmit mode; so you either have to find the binary that connects to that art module via ip, or find out about the undocumented registers used to enable transmit mode.

In make menuconfig, select Kernel modules -> Wireless Drivers -> Enable TX99 support, then install the resulting kmod-ath9k on your system or flash the resulting firmware image. The radio should continuously emit then.

1 Like

I really don't think you understand what this is. Unless you are recalibrating the device, you should follow @jow's solution.

@jow ...there's alot of ART threads going around...and also, some of the PDFs posted in this thread read: "COMPANY CONFIDENTIAL."

AND THERE IS A NOTICE THAT SAYS YOU MUST HAVE A WRITTEN AGREEMENT FROM ATHEROS TO REPRODUCE OR TRANSMIT IT!!!

@s_2, can you confirm that those documents are in fact - for "Public consumption"?

I think it's common sense that such documents and tools related to internal functions of the wifi hardware are not publicly available, otherwise this thread would never exist because either

  • the documents would be available for download from the QCA website, or
  • the original poster had a written agreement with QCA, in which case they would be receiving support directly from QCA,

but neither of these seems to be the case here.

I wonder how many times driver developers are "lucky" that some OEM would release GPL sources and accidentally forget to exclude stuff that should not be public, but it's probably not the first time this had been discussed here in the forums.

And as you pointed out correctly, it probably also depends on your country's legislation - here it europe it's perfectly legal to own a device that could transmit or receive on arbitrary frequencies, but it's a completely different thing whether you're allowed to operate it; however if you have a faraday cage in your basement it should be fine... :slightly_smiling_face:
Regarding the documents, I'm not sure whether it might even be covered by the "reverse engineering paragraph" (i.e. if some non-EU company refuses you the information required to implement interoperabilty, it must not be to your company's economical disadvantage, otherwise you'd be allowed to reverse engineer it).

Forum moderators shall feel free to remove any of the links I posted above though, all of if was found using google and github search.

Honestly, I did not know about the TX99 support existing in the driver, could this post be marked as the "best solution" etc. so it would show up directly below the question?

This clearly sounds like the best way to deal with it, apparently the knowledge required to implement this TX99 mode has magically made it into the driver without anyone ever reading documents that were not intended for their eyes.

I tried to enable TX99 support on OpenWRT, but I don't know how to make its output. I sourced it from google, and found this site, (not too much information on internet about TX99 support)
"https://git.congatec.com/arm/imx6_kernel_3.14/commit/89f927af7f3389e20c8ad24abfb3d1369f3ffc10", but it does not work on my platform. I changed it to,

      iw phy phy0 interface add moni0 type monitor
      ip link set dev moni0 up

      iw dev moni0 set channel 1 HT40+
      iw dev moni0 set bitrates ht-mcs-2.4 4

      echo 10 > /sys/kernel/debug/ieee80211/phy0/ath9k/tx99_power
      echo 1 > /sys/kernel/debug/ieee80211/phy0/ath9k/tx99

The last command came out an error: "write error: Out of memory". It doesn't allow me to change the content of ".../ath9k/tx99". What is the problem ? Is there any trick to use TX99 ? Any software package that help to use this TX99 function ?

I found another example, it works on my platform. That just to add "flags active" on the first command.

   iw phy phy0 interface add moni0 type monitor flags active
   ip link set dev moni0 up
   iw dev moni0 set channel 1 HT40+
   iw dev moni0 set bitrates ht-mcs-2.4 4
   echo 10 > /sys/kernel/debug/ieee80211/phy0/ath9k/tx99_power
   echo 1 > /sys/kernel/debug/ieee80211/phy0/ath9k/tx99
2 Likes

Did you pass lab testing with your IoT device? Can you share more info about the product that you are working on?