iBeacon iOS proximity realiability

Hello! I’m building a project (hopefully) featuring beacons using Unity and the Bluetooth LE for iOS, tvOS and Android asset. I am having trouble getting a usable and consistent proximity reading and am unsure if it will work at all.

Here is my setup:

  • iPhone 5 with iOS 12
  • Estimote proximity beacon with new battery, set to iBeacon mode with a 300 ms advertising interval and 0 dBm transmit power
  • Latest version of Unity (2021.3.26f1)

When building and running a sample iBeacon scanner project on the phone, the beacon gives a readout as expected. The problem is that the simplified Apple proximity reading available in this configuration (Unknown, Far, Near, Immediate) is generally erratic, as is the RSSI. For example, it is running as I write this, with the beacon 2 inches from the phone, and it shows a consistent proximity of “Far”. Other times in a still room it jumps around.

Sometimes if I move it far away or in another room, it actually switches to near, which is even more strange. I am testing in a home without too many large metal or concrete obstructions, and the problem happens readily in direct line-of-sight. I have swapped the beacon for another and I’ve experimented with raising and lowering transmit power, with the same results.

I have extended these questions to the Unity asset dev but am asking here to cover the Estimote side of the equation.

Any ideas on how I might get a more reliable readout?

Hey there! It’s Jess from Team Estimote.

If you’re not using our SDK, which does heavy lifting for you, RSSI signals are very erratic and they need to be normalized. As far as getting different signals in different rooms, your environment might be affecting reads. Try turning up the transmit power settings. Increase the frequency to 100 milliseconds.

The other thing at play is the age of your phone. The bluetooth radio within an iPhone 5 is simply not going to perform as well as newer phones.