Better distance accuracy at lower power and advertising frequency

I'm testing the measured distance on Android and noticed that at -16dB and 950ms/sec advertising interval, the measured distance accuracy and variance is much better than -8dB and 100ms/sec. Is this something know and has an explanation?
I just calculated the average and variance of computeAccuracy() on event onBeaconsDiscovered and came to the conclusion above.

Hi Xixi,

That's really strange behaviour. How many readings did you test with? Also, I reported it to our developers, as it's something they might wanna take a deeper look at.


I have repeated the experiment many times. The actual distance is 1m ~5m and the observations always holds valid. Please note that at 100ms/sec, the onBeaconsDiscovered seems also trigger once per second by Android.

Hi Xixi,

Thanks a lot for brining that to our attention, we're investigating this!


For 950ms you have more less one beacon reported each second with only one measurement which will not vary that much since there are no others.

For 100ms radio on phone see lots of additional noise since there are more less 10 Bluetooth packets sent, some of them may be attenuated or bounced from wall. This is way you see higher variance here. We currently do not do any smoothing on signals.

If you want onBeaconsDiscovered to be called more frequently see BeaconManager#setForegroundScanPeriod.

How does that explain -16dB is better than -8dB? Thanks.

Think about broadcasting power (values in dBm) as at what distance radio signal can be heard. Larger value means larger distance.

This variance is mostly affected by advertising interval and structure of surrounding (like window, chairs, table).