
While there are equations and libraries that attempt to derive distance from RSSI, often the most accurate method is to measure the actual RSSI at various distances and use this calibration data with interpolation to get estimated distances.// Create a discovery agent and connect to its signals QBluetoothDeviceDiscoveryAgent *discoveryAgent = new QBluetoothDeviceDiscoveryAgent( this) Ĭonnect(discoveryAgent, SIGNAL(deviceDiscovered( QBluetoothDeviceInfo)), this, SLOT(deviceDiscovered( QBluetoothDeviceInfo))) The measured power is usually the value of the power at 1m from the transmitter.

Some Bluetooth advertising such as iBeacon includes a value, the measured power, in the advertising that can be used to take account of the fact that different beacons have different transmission power and hence different RSSI at the same distance. Physical factors include blocking and reflection. The largest electrical factor is the transmission power. It also varies slightly, as ‘noise’, over time, even when things don’t move. The relationship between RSSI and distance isn’t linear and also depends on electrical, physical and environmental factors. Our post on Testing if a Beacon is Working shows how to use the nRF Connect app to measure the RSSI of a Bluetooth device. Close devices are usually in the range -10 dBm to -30 dBm while devices at the limit of detection give values less than -90 dBm. RSSI is a negative value where the more negative it is, the further away the Bluetooth device. This is a number, in dBm units produced by the receiving Bluetooth hardware that gives the wireless signal strength. This is performed from the receiving end using what’s called the Received Signal Strength Indication (RSSI). Bluetooth LE can be used to infer distance as is being used in contact tracing and social distancing apps.
