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.
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.
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.
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...
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.
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