Indoor Positioning with BLE: Using Multiple Receivers to Triangulate a Phone's Location

GPS does not work indoors. BLE-based positioning does — but building a system that is actually accurate requires understanding the physics of radio propagation, the math of trilateration, and the practical realities of deploying fixed infrastructure in a real building.

GPS fails indoors. The signals are too weak, the multipath too severe, and the geometry too poor for the receiver to get a usable fix inside a building. For decades this was simply accepted — indoor positioning was either impractical or required expensive proprietary infrastructure. BLE has changed that calculus significantly. With a phone broadcasting BLE advertisements and a network of fixed receivers logging the received signal strength of each packet, it is now possible to estimate a device's position inside a building with reasonable accuracy using hardware that costs a few dollars per node.

This article covers how the system works, where the physics fights you, and what the engineering looks like to make it useful in practice.

The Basic Concept: RSSI-Based Trilateration

The fundamental idea is straightforward. A phone running a BLE-capable app periodically broadcasts advertisement packets — essentially short radio pings that any BLE scanner in range can receive. Fixed receiver nodes installed throughout the building listen for these packets and record the received signal strength (RSSI) of each one, along with the advertiser's MAC address and a timestamp.

RSSI decreases with distance. In free space, signal power falls off as the square of distance — the well-known inverse square law. If you know the transmitted power and the received power, you can estimate distance. With distance estimates from three or more receivers at known positions, you can solve for the transmitter's position geometrically. This is trilateration — not triangulation, which technically requires angle measurements rather than distance — though the terms are used interchangeably in most BLE positioning literature.

In an ideal world with a known, stable propagation environment, this works cleanly. In a real building, it requires significant engineering to get useful results.

The Physics Problem: Radio Propagation Indoors Is Ugly

Indoor radio propagation is dominated by multipath and shadowing. Signals reflect off walls, floors, ceilings, furniture, and people. The direct path between transmitter and receiver may be blocked entirely by a concrete wall or a steel cabinet, forcing the receiver to rely on reflected paths that have traveled farther and arrive attenuated and delayed. Two receivers at the same distance from the transmitter may see RSSI values that differ by 20 dB or more depending on the obstructions between them.

The standard path loss model used in BLE positioning is a log-distance model: RSSI = TxPower - 10n·log₁₀(d), where d is distance and n is the path loss exponent. In free space n is 2. In a typical office building n ranges from 2.5 to 4 depending on construction materials and furniture density. In a hospital with thick concrete walls and metal equipment, n can approach 5 or 6 in some directions.

The path loss exponent is not constant across the deployment area — it varies with direction, floor, and local environment. A receiver on the same floor with line of sight to the phone behaves very differently from one separated by a glass partition or a row of metal shelving. This means a single global n value will produce large systematic errors in some areas of the building.

Human bodies are also significant attenuators at 2.4 GHz. A person standing between the phone and a receiver can reduce RSSI by 3-10 dB, which translates to a substantial distance estimation error. In a crowded environment — a hospital ward, a conference room, a retail floor — this variability makes raw RSSI a noisy and unreliable distance proxy.

The Phone App: Advertising Strategy

The phone app's job is to broadcast BLE advertisement packets at regular intervals. On both iOS and Android, the BLE advertising API allows the app to set the advertisement interval, the TX power level, and the advertisement payload. For positioning applications, the payload typically includes a UUID that identifies the device or user, a sequence number for packet tracking, and optionally a timestamp or payload RSSI calibration value.

Advertisement interval is a tradeoff between position update rate and battery consumption. Advertising at 100 ms intervals gives fast position updates but costs significantly more power than advertising at 1000 ms. For most indoor positioning applications, 200-500 ms is a reasonable starting point — frequent enough for smooth tracking, conservative enough to avoid excessive battery drain.

TX power matters for both range and accuracy. Higher TX power reaches more receivers and gives better geometry, but increases the likelihood of RSSI saturation at nearby receivers. Most smartphones support multiple TX power levels (typically -20, -12, -4, 0, and +4 dBm on capable hardware). Encoding the TX power in the advertisement payload allows receivers to normalize RSSI readings, partially compensating for differences in phone hardware.

One important practical constraint on iOS: Apple restricts background BLE advertising. An iOS app that is backgrounded can still advertise, but the advertisement interval is increased and the service UUID is hashed rather than broadcast in the clear. This means iOS devices in background mode are harder to identify and track — a significant consideration for applications where the phone may be in a pocket or bag. Android is more permissive, allowing continuous background advertising with full control over the payload.

The Receiver Network: Hardware and Placement

Each fixed receiver needs to be a BLE scanner capable of logging RSSI, MAC address, and timestamp for every advertisement packet it receives. In practice, this means a microcontroller with a BLE radio (Nordic nRF52 series, Espressif ESP32, or similar), a network connection (Wi-Fi or Ethernet) to forward data to a central server, and a power supply. At scale, PoE-powered receivers are convenient — they draw power and network connectivity from a single Ethernet cable and avoid battery management entirely.

Receiver placement has a large effect on positioning accuracy. The key principles are coverage, geometry, and density. You want every point in the deployment area to be in range of at least three receivers — preferably four or more for redundancy and improved geometry. You want the receivers geometrically distributed around the space rather than clustered together, since clustered receivers provide poor trilateration geometry (the intersection of their uncertainty ellipses is large). And you want receiver density matched to the required accuracy — a 5-meter accuracy requirement needs far fewer receivers than a 1-meter requirement.

In practice, receiver spacing of 5-10 meters provides reasonable coverage in open office environments. Walls, especially concrete or masonry, require receivers on each side. Stairwells, elevator shafts, and mechanical rooms are RF dead zones that need careful attention in the receiver layout.

Receiver height matters. Mounting receivers at ceiling height (2.5-3 meters) reduces multipath from furniture and provides more consistent line-of-sight geometry than wall-mounted receivers. It also keeps receivers out of the way and makes cable routing simpler in most commercial buildings.

From RSSI to Position: The Estimation Algorithm

The simplest positioning algorithm is weighted centroid: compute a distance estimate from each receiver's RSSI using the log-distance model, then compute the position as a weighted average of receiver positions where the weights are inverse distance estimates. This is fast, simple to implement, and works reasonably well when RSSI is a reliable distance proxy — which it often is not.

More robust approaches treat the positioning problem as an optimization: find the (x, y) position that minimizes the sum of squared errors between measured RSSI values and predicted RSSI values at that position. Nonlinear least squares solvers (Levenberg-Marquardt is a common choice) handle this cleanly. This approach is more computationally expensive but significantly more accurate because it accounts for measurement uncertainty and can incorporate constraints (the position must be inside the building boundary, on a known floor).

Fingerprinting is a fundamentally different approach that sidesteps the propagation model entirely. During a calibration phase, you walk through the deployment area and record the RSSI vector (one value per receiver) at many known positions, building a database of (position, RSSI vector) pairs. At runtime, you match the current RSSI vector against the database using nearest-neighbor search or a trained classifier. Fingerprinting can achieve sub-meter accuracy in well-calibrated environments because it captures the actual propagation characteristics of the space rather than relying on a simplified model. The downside is that the fingerprint database must be rebuilt whenever the environment changes significantly — furniture rearrangement, new walls, or changes in the receiver network all degrade fingerprint accuracy.

Particle filters and Kalman filters are commonly layered on top of the position estimate to smooth trajectories over time. A raw RSSI-based position estimate is noisy — it jumps around even when the phone is stationary. A Kalman filter that models the phone as a moving object with bounded velocity smooths the trajectory considerably, at the cost of increased latency when the phone makes a sudden direction change.

Practical Accuracy Expectations

Honest accuracy expectations for a BLE trilateration system: 2-5 meters in a typical open office environment with good receiver coverage, degrading to 5-10 meters in complex environments with many obstructions. Sub-2-meter accuracy is achievable with fingerprinting and dense receiver deployment, but requires ongoing calibration effort to maintain.

For comparison, ultra-wideband (UWB) positioning — used in Apple AirTags and some enterprise RTLS systems — achieves 10-30 cm accuracy by measuring time-of-flight rather than signal strength. If your application requires sub-meter accuracy, UWB is worth the additional hardware cost. If 2-5 meters is sufficient — asset tracking, zone detection, occupancy monitoring — BLE is cost-effective and practical.

A Realistic Deployment

A complete indoor positioning system built on this architecture includes a phone app advertising at 200-500 ms intervals, a network of receivers forwarding RSSI data to a central server over Wi-Fi or Ethernet, a positioning engine running on the server that ingests RSSI streams and outputs position estimates, and an application layer that consumes position data — a map display, an alert when a device enters or leaves a zone, an analytics dashboard.

The positioning engine is the most complex piece. It needs to handle receiver dropouts, deal with the latency introduced by network hops, manage clock synchronization across receivers, and implement whatever estimation algorithm the application requires. Building this in-house is substantial engineering work. Several commercial platforms (Quuppa, Sewio, Pozyx) offer complete RTLS middleware that handles the positioning engine if the application logic is the primary differentiator.

Proven in Practice: Hospital Hand Hygiene Compliance Monitoring

This technology is not purely theoretical for SiGenix. We built and deployed a demonstration system in a hospital environment specifically to monitor whether staff members followed hand hygiene protocols — one of the most persistent and consequential compliance challenges in clinical settings. Hospital-acquired infections (HAIs) are linked to hundreds of thousands of adverse events annually in the US alone, and lapses in hand hygiene at critical moments — entering a patient room, leaving an isolation area, before and after patient contact — are a primary contributing factor.

The system worked as follows: hospital staff carried smartphones running our BLE advertising app. Fixed BLE receiver nodes were installed throughout the ward, with particular attention to placement near hand sanitizer dispensers, patient room entrances, and nursing stations. The sanitizer dispensers were instrumented with simple sensors to detect activation events. The positioning engine tracked each staff member's location in real time, and the compliance logic compared their location history against the expected hygiene protocol — did this person sanitize before entering that room? Did they sanitize after leaving?

The hospital environment proved to be one of the more challenging RF environments we had worked in. Metal bed frames, medical equipment, lead-lined walls in imaging areas, and the constant movement of people and equipment all contributed to a highly dynamic and attenuating propagation environment. We tuned the path loss model for each zone of the ward separately rather than using a global parameter, and we used a zone-based detection approach — determining which room or corridor segment a staff member occupied — rather than trying to resolve a precise (x, y) coordinate. Zone detection at 3-5 meter resolution was achievable and sufficient for the compliance use case.

The demonstration validated several things we had modeled but not measured in a live clinical environment: the 200 ms advertising interval was the right tradeoff between tracking responsiveness and phone battery life during a full shift, the custom Yagi antenna designs on the receiver nodes significantly improved rejection of signals from adjacent rooms compared to omnidirectional antennas, and the zone-based approach was robust enough to handle the RF variability of the environment without requiring an extensive fingerprint calibration process.

The project confirmed that BLE-based indoor positioning is a practical and cost-effective approach for compliance monitoring applications where room-level or zone-level accuracy is sufficient — which covers the majority of healthcare workflow monitoring use cases.

At SiGenix, we have designed BLE-based location systems including both the embedded receiver hardware and the application-layer firmware. If you are evaluating indoor positioning for a medical, industrial, or commercial application and want to talk through the architecture, get in touch with our team.

Indoor Positioning with BLE: Using Multiple Receivers to Triangulate a Phone's Location | SiGenix