Location and proof of location

What is RSSI, and can it measure distance?

RSSI, the received signal strength indicator, is a radio's measurement of how strong a received signal was; Android reports it in dBm. It can give a rough distance estimate through a path loss calculation, but the Bluetooth SIG describes that method as sensitive to small errors at longer distances, vulnerable to interference and the environment, and open to distance spoofing. It is better suited to presence and proximity than to measuring distance.

Learning objectives

After reading this article you will be able to:

  • Identify where Android and iOS expose RSSI readings to apps
  • Explain how a path loss calculation turns RSSI into a rough distance
  • Compare RSSI with Channel Sounding, UWB and Wi-Fi RTT for measuring distance

What RSSI measures

Every time a radio receives a packet, it can report how strong the signal was. That number is the received signal strength indicator, or RSSI. Bluetooth LE and Wi-Fi radios both report it, and phones expose it to apps in several places.

  • Bluetooth LE scans on Android. Each ScanResult from a scan of BLE advertising has getRssi(), which returns the received signal strength in dBm. Android gives the valid range as -127 to 126.
  • Connected Bluetooth devices on Android. BluetoothGatt.readRemoteRssi() asks for the RSSI of a connected remote device, and the value arrives in the onReadRemoteRssi callback. Newer Android versions require the BLUETOOTH_CONNECT permission for this call.
  • Connected Bluetooth devices on iOS. Core Bluetooth’s readRSSI() retrieves the current RSSI for a peripheral while it is connected, and delivers it to the peripheral’s delegate.
  • Wi-Fi on Android. A Wi-Fi ScanResult has a level field, which Android describes as the detected signal level in dBm, also known as the RSSI.

A larger value means a stronger signal. What RSSI does not tell you directly is how far away the sender is.

From signal strength to distance

Distance can be estimated from RSSI with what the Bluetooth SIG calls a path loss calculation. Its Bluetooth Core 6.0 feature overview describes the method: the receiver measures RSSI and must also know the strength of the remote device’s signal at a reference distance from the transmitter, such as 1 metre. Physics says the signal strength at a receiver is inversely proportional to the square of its distance from the transmitter, so with the reference strength and the RSSI, a distance can be calculated.

The reference has to come from somewhere. Some Bluetooth LE advertisements carry it: Android’s ScanResult.getTxPower() returns the transmit power in dBm, or a constant meaning the value is not present. The Core 6.0 overview describes path loss as calculated from the TX Power field, which must be present, and the RSSI.

The SIG notes that before Bluetooth Core 6.0, path loss was the only way to calculate the distance between two Bluetooth devices.

Why the estimate is rough

The same SIG overview is direct about the method’s limits:

  • It degrades with distance. Signal strength drops off quickly at short range, so path loss can give reasonably good results when devices are close. Over longer distances, a small variation in signal strength corresponds to a large range of possible distances, which makes the calculation very sensitive to small errors.
  • The environment changes it. The method is vulnerable to interference and other environmental factors. A SIG blog post adds that signal strength drifts because of environmental influence and needs filtering over time.
  • It can be faked. The SIG calls the method insecure, leaving applications open to attacks such as distance spoofing. Since the calculation trusts the stated reference strength, a transmitter that changes its power changes the distance a receiver works out.

Reflections matter too. In describing Channel Sounding, the SIG notes that devices may use an antenna array to lessen the impact of multi-path propagation, where a signal reaches the receiver along more than one path.

Apple gives the same advice from the app side. Its iBeacon ranging reports only whether a beacon is far, near or in the immediate vicinity, and Apple says ranging does not offer a precise distance and that apps should not rely on the strength of a beacon’s signal to compute one themselves. What is a BLE beacon? covers how beacon ranging works.

What RSSI is good for

RSSI is useful when the question is “is it here” rather than “exactly how far”. The Bluetooth SIG blog post on industrial sites says RSSI-based presence can be enough for basic zone awareness, works best when treated as evidence rather than certainty, and that good systems rely on repeated observations, dwell time and receiver placement instead of converting one reading into one location.

It also feeds larger systems. In Bluetooth real-time locating and indoor positioning, fixed devices collect RSSI from several points and combine the distance estimates by trilateration, as What is indoor positioning? explains.

Better ways to measure distance

When distance really matters, other methods measure it more directly:

  • Bluetooth Channel Sounding, added in Bluetooth Core 6.0, uses phase-based ranging and round-trip timing between two connected devices. The SIG says it supports significantly more accurate distance measurements than the path loss method and is less vulnerable to interference.
  • Ultra-wideband ranging, which BLE vs NFC vs UWB compares with Bluetooth.
  • Wi-Fi RTT, which times round trips to Wi-Fi access points.

These can be combined with RSSI. The SIG describes upcoming solutions that use RSSI for presence and coarse ranging while devices are far apart, then switch to Channel Sounding for accuracy as they approach. For direction rather than distance, see What is Bluetooth direction finding?.

Frequently asked questions

Why does RSSI change when nothing is moving?

Signal strength varies with the surroundings. A Bluetooth SIG blog post notes that it drifts because of environmental influence and needs filtering over time rather than a one-shot reading, so smooth several readings before acting on them.

Does a stronger RSSI always mean the closer device?

Not reliably. The path loss method needs to know how strong each transmitter is at a reference distance, so two devices sending at different power levels can show different RSSI at the same distance. Compare readings only when you know the transmit power, and treat the result as a hint.

Sources

Build it with Offline Protocol

The Offline Protocol mesh SDK events reference lists the neighbor_discovered event, which reports a newly found peer and its transport with an optional rssi field. Treat that value as signal strength, not distance.

Read the events reference