Simulate beacon by iPhone and Android has big difference RSSI at the same distance

Viewed 74

I wrote an app to detect beacons and calculate the distance by RSSI. When I use iPhone/android for simulating as beacons will cause a big difference on RSSI. Such as I put iPhone at 3M far from BLEscanner the RSSI is -65. But at the same place, the RSSI of the android devices will be -80 or more. Does anyone know how to adjust the difference of RSSI?

1 Answers

As you have discovered, every phone model has a slightly different Bluetooth transmission power. Similarly, every phone model has a slightly different receiver sensitivity. Changing which phone model is used for transmission and reception will affect the RSSI you receive.

You cannot perfectly correct for these differences for two main reasons:

  1. There are lots of other factors that come in to play that affect RSSI that have nothing do do with the phone model (signal reflections, attenuation by the air or obstructions, the effect of a phone case, a nearby hand holding the phone or other human body parts.)
  2. There are limited data on the differences between phones in terms of Bluetooth transmitter power and receiver sensitivity.

With those caveats in mind, Google did create a limited dataset of correction factors as part of its coronavirus contact tracing effort with Apple.

You can read how this works here

And see the full correction data set here

The basic idea is:

  1. Take two values from the CSV data set above for your test setup:

Use "tx" column value for the transmitting phone model as its "TX_Power" in the equation below. Use "RSSI_correction" column value for the receiving phone.

  1. Then plug them into this equation:

Attenuation = TX_power - (RSSI_measured + RSSI_correction)

  1. The resulting Attenuation value is the corrected signal loss (measured in dB and usable similar to RSSI) between your transmitter and receiver and can be used as an input to distance formulas.
Related