The Problem with RSSI Positioning
RSSI-based positioning is the simplest BLE localization approach — estimate distance from signal strength, triangulate position. In practice it suffers from multipath reflections, antenna orientation sensitivity, and environmental interference that make accuracy unpredictable.
| Method | Typical Accuracy | Key Limitation |
|---|---|---|
| RSSI trilateration | 2 – 10 metres | Multipath, body shadowing |
| BLE AoA (Bluetooth 5.1) | 0.1 – 1 metre | Requires antenna array at gateway |
Bluetooth 5.1 introduced Direction Finding in the core spec, giving us a hardware-level mechanism to measure the angle from which a signal arrives — not just its strength.
Understanding Angle of Arrival
In AoA, the tag (asset being tracked) transmits a BLE packet. The gateway (anchor with an antenna array) receives it simultaneously on multiple antenna elements and measures the phase difference between them. That phase difference directly encodes the angle of arrival.
BLE AoA Signal Flow
The Bluetooth 5.1 spec adds a Constant Tone Extension (CTE) appended to standard advertising or connection packets. During the CTE period, the gateway rapidly switches between antenna elements and captures IQ samples on each.
The CTE is an unmodulated carrier tone — no data, just a pure sine wave. This makes phase measurement reliable because there is no modulation noise to distort the IQ values.
Antenna Array Architecture
The gateway receives the same signal on multiple antenna elements simultaneously (or in rapid sequence with a switch). Because the signal travels slightly different distances to each element, it arrives with a measurable phase offset.
The standard antenna spacing is λ/2 (half the signal wavelength), which is approximately 6.25 cm at 2.4 GHz. This spacing avoids phase ambiguity — spacings larger than λ/2 cause aliasing where multiple angles map to the same phase difference.
IQ Sampling
The receiver captures the signal as In-phase (I) and Quadrature (Q) components. Together they represent the signal as a complex number, and the phase angle is extracted with a simple arctangent:
/* Extract phase from IQ sample */
float phase = atan2f(Q_sample, I_sample); /* result in radians: -π to +π */
During the CTE window, the gateway captures one IQ pair per antenna per switching slot (typically 1 µs or 2 µs slots). A 4-element array at 1 µs switching gives 4 phase measurements per CTE period.
Phase Difference and Angle Calculation
The phase difference ΔΦ between two adjacent antenna elements relates to the angle of arrival θ through the element spacing d and wavelength λ:
/* Phase difference → Angle of Arrival */
/* ΔΦ = (2π × d × sin(θ)) / λ */
/* Rearranged to solve for θ: */
float delta_phi = phase_A2 - phase_A1; /* phase diff between adjacent antennas */
float sin_theta = (delta_phi * lambda) / (2.0f * M_PI * d);
float theta_rad = asinf(sin_theta); /* AoA in radians */
float theta_deg = theta_rad * (180.0f / M_PI);
With multiple elements, a more robust estimate uses MUSIC (Multiple Signal Classification) or ESPRIT algorithms that process all phase measurements jointly and are more resistant to noise.
Multi-Anchor Position Estimation
A single anchor gives you a bearing — you know the direction to the tag but not the distance. To get a 2D position fix you need at least two anchors, and three gives redundancy for better accuracy.
The position is computed by finding the intersection point of the bearing lines from each anchor using a least-squares solver. A Kalman filter then smooths position estimates over time, handling momentary measurement noise.
Hardware Platforms Supporting AoA
| Platform | AoA / Direction Finding | Notes |
|---|---|---|
| Nordic nRF52833 | Yes | Up to 4-element array, good starting point |
| Nordic nRF5340 | Yes | Dual-core, supports larger arrays |
| TI CC2652R7 | Yes | SimpleLink SDK includes AoA reference |
| Silicon Labs BG22 | Yes | Very low power, suitable for tags |
| Quuppa QPG6105 | Yes | Purpose-built RTLS chipset |
Practical Challenges
- Multipath — Signals reflecting off metal shelving or walls create ghost bearings. Mitigation: use MUSIC algorithm which separates direct-path from multipath components.
- Antenna calibration — Each antenna element has a slightly different phase response due to PCB parasitics. Factory calibration with a known-angle reference is essential for sub-metre accuracy.
- Switching transients — The RF switch introduces a brief settling period after each antenna switch. The spec reserves the first few IQ samples after a switch as "guard" samples that should not be used.
- BLE transmission power variations — Tags from different vendors may transmit at slightly different effective power levels, but this does not affect AoA since the method is phase-based not amplitude-based.
RTLS System Architecture
A production-grade indoor location system combines AoA hardware with a cloud backend:
The Kalman filter running on the edge host is the critical component — it smooths position estimates, handles missed packets (packet loss is common in congested 2.4 GHz environments), and provides velocity estimation when the tag is moving.
Real-World Applications
- Industrial asset tracking — Tool and equipment location on factory floors with metal infrastructure (requires careful anchor placement to reduce multipath)
- Warehouse automation — Forklift and pallet tracking; integrates with WMS via MQTT
- Hospital equipment tracking — IV pumps, wheelchairs, crash carts; Bluetooth 5.1 is already present in hospital-grade BLE infrastructure
- Indoor navigation — Wayfinding in airports and large retail spaces
- Autonomous robotics — Supplementary localisation where UWB is too expensive or LiDAR is obstructed
AoA vs UWB
| Criterion | BLE AoA | UWB (e.g. DW1000) |
|---|---|---|
| Accuracy | 0.1 – 1 m | 10 – 30 cm |
| Tag cost | $2 – $5 | $15 – $30 |
| Infrastructure cost | Medium (antenna array) | High (UWB anchors) |
| Battery life (tag) | Months to years | Days to weeks |
| Existing phone support | Yes (BLE 5.1+) | iPhone 11+ only |
BLE AoA hits the sweet spot for large-scale deployments where UWB tag cost is prohibitive and RSSI accuracy is insufficient. When you need hundreds or thousands of tracked assets at sub-metre accuracy, AoA is often the right call.
← Back to all posts