Bluetooth-Low-Energy RSSI Changes Periodically on Android Devices

I noticed that the Bluetooth Low Energy signal strength received on androids changes in cycles. The graph below shows the RSSI values โ€‹โ€‹of one BLE beacon for two minutes. The receiving Android and the lighthouse were static with a distance of 1 meter. I made sure that there is as little interference as possible. Android was Nexus 5, but I had the same phenomenon with other Android devices, everything worked on API 21. I have not yet been able to test it on iOS.

RSSI Chart

You can see that for RSSI, three main levels are repeated every three seconds, for example, low โ†’ medium โ†’ high โ†’ low โ†’ medium โ†’ high, etc.

My guess is that the reason lies in the Android side, it is not clear whether this is due to hardware or software considerations.

Why is RSSI cyclical over time? Can someone explain?

+4
source share
2 answers

According to Android AOSP - definition of the scan interval and scan window in the Android source code. the scan interval in any scan mode is 5000 ms.

I would suggest that your graph was generated using an application that used continuous scanning - that is, a 5000 ms scan window that is mostly continuous.

The scanner will rotate between channels 37.38.39 after each scan interval, which explains the differences that you observe. Channels 37.38.39 are not adjacent in the spectrum of BLE - 37 is 2402 Mg, while 39 - 2480 MHz. The difference in wavelength means that multi-channel (interference from reflections) will attenuate for each channel http://www.cl.cam.ac.uk/~rmf25/papers/BLE.pdf - you say that the devices were static, therefore provided that nothing else moves, the interference will also be static.

On iOS, the scan interval (foreground) is reported at 40 ms, which means you should not experience this exact effect.

+3
source

Having read a lot in the subject now, I may have come to an answer.

Bluetooth low-energy beacons use three different channels for advertising, which is their adaptation to frequency hopping to avoid interference with other 2.4 GHz signals. This is much slower than with regular Bluetooth (1600 / s) - according to my measurements every 5 seconds.

More details here: http://www.argenox.com/bluetooth-low-energy-ble-v4-0-development/library/a-ble-advertising-primer/

The level of the received signal obviously depends on the frequency, therefore, if the frequency changes to another channel, RSSI is different. How to deal with this, now another question.

UPDATE: After completing this issue, I have to update my comments:

It is very likely that the three levels with each around 5s are not directly related to the slow hopping of the beacons, but to Android devices that scan separately through the channels and switch to the next after such a time interval.

A way to overcome this behavior is to start and stop the scanning process in a loop, so that the scan lasts clearly less than 5 seconds. When a scan starts, the device seems to start scanning always on the same channel, and the scan restarts before it switches to another channel. With a restart, the picture is no longer detected - to the detriment of the fact that the channel is "fixed" and may experience interference at this frequency. Thanks to Airsource Ltd for returning to this subject.

+3
source

Source: https://habr.com/ru/post/1235589/


All Articles