Using Beagle board to get RSSI of a device

I am working on a project using BeagleBoard-xM. The goal of the project is to get received signal strength indicator (RSSI) of a mobile device in the vicinity of the board. . We use TL-WN722n wireless usb adapter to get RSSI of a mobile device.

All the code implementations have been successfully made. We can get RSSI of a particular device using its MAC Address. However we are encountering a problem in that the RSSI doesn’t change much when we move our device to different points in the test area.

If we connect the wireless adapter directly to a PC and run our code on the standalone PC we get accurate results. However running the same code on the board doesn’t produce the same results. We used tcpdump and wireshark to get RSSI on the board and we get the same bad results. So this eliminates the possibility that there is something wrong with the code.

Can someone provide an insight as to what might be different on the board compared to a PC that cause this difference in RSSI?


Are you using the "exact" same linux driver version for the TL-WN722n
on both the BeagleBoard-xM and standalone pc?


Hi Richard,

Thanks for your reply. I am not quite sure how to find out the driver for TL-WN722n on our ubuntu systems. We didn’t have to actually install any driver on the beagle board (running Ubuntu 12.04 LTS omap) or the stand alone PC (Ubuntu 12.04) for our project. Can you assist in helping out to find the driver version for TL-WN722n wireless adapter to see if that is the reason.


I don't know what driver you're using---presumably it's a standard
kernel driver included in both your systems and on my desktop as well,
but I don't see anything matching that WN722n designation. I think
they use the atheros drivers.

In order to find out the versions, you need to look at the messages
the driver logs when it loads. I don't have them loaded on my system
so let me use a driver that I do have, the e1000e network driver: when
I do 'dmesg | grep e1000e' I get

e1000e: Intel(R) PRO/1000 Network Driver - 2.3.2-k

so my driver version is 2.3.2-k. Find out what driver is used by your
hardware and check its version on both systems in the same way.

Well... "uname -r" for both is a start.


Hi Richard,

Running “uname -r” reveals that our driver version is 3.13.0-24-generic on my PC and 3.2.16-x11 on our board. Also when we run “modinfo ath9k_htc” on our PC we get 3.13.0-24-generic in the vermagic and if we run “sudo lshw -C network” with our wirless adapter connected to the PC we get the following :

" configuration: broadcast=yes driver=ath9k_htc driverversion=3.13.0-24-generic firmware=1.3 link=no multicast=yes wireless=IEEE 802.11bgn".

And if we run “modinfo ath9k_htc” on our board we get “3.2.16-x11 SMP mod_unload modversions ARMv7 p2v8”

It seems that the wireless adapter is using the same driver as our kernal version so we are supposing that if we upgrade the kernal on our beagleboard xm from 3.2.16-x11 to 3.13.0-24 hopefully things should work?. But we are wondering if its possible to update the wireless adapter without upgrading the kernal version?


Test and find out with a spare microSD card:

This uses 3.14.2-armv7-x5.

btw due to the conversion from board files to device tree, it's not
really 'easy' to upgrade the kernel from 3.2.16-x11.


HI Robert,

We tried to use the image you suggested. For this image if we do “lsusb” we get the following :

Bus 002 Device 004: ID 0cf3:9271 Atheros Communications, Inc. AR9271 802.11n

However when we try iwconfig we do not see our wireless adapter listed. We expected something like :

wlan1 IEEE 802.11bgn ESSID:off/any

Mode:Managed Access Point: Not-Associated Tx-Power=0 dBm

Retry long limit:7 RTS thr:off Fragment thr:off

Encryption key:off

Power Management:off

if i go to /lib/firmware i can see that htc_9271.fw is listed there. Can you please help in why i can see it through lsusb but if i do iwconfig i dont see it?