CoreBluetooth RSSI Measurement Rate Limitation

We are using the CoreBluetooth framework to communicate with a BLE device. We have the requirement to take many RSSI measures over a short span of time.

To obtain these measurements, we call readRSSI on the peripheral object. The behavior we observe is that Core Bluetooth invokes didReadRSSI only once every second. This behavior does not seem to be documented anywhere.

We have found several reports of the same issue, which have not been answered.

For Example:

https://developer.apple.com/forums/thread/698235

https://developer.apple.com/forums/thread/77277

https://stackoverflow.com/questions/61216589/fast-update-rssi-bluetooth-in-ios

The first question would be: Is this the intended behavior? Secondly, is it documented somewhere? And lastly, are there any workarounds that would allow for a higher rate of taking RSSI measurements than 1 per second?

Accepted Reply

This is by design. The RSSI values from connected peripherals will only be updated once a second. There are no workarounds.

Replies

This is by design. The RSSI values from connected peripherals will only be updated once a second. There are no workarounds.

Thanks for the prompt reply! Do you happen to know if this RSSI value represents some kind of average over this 1 second, or is it just a momentary measurement?

The returned value is momentary.