BLE

Analyzing Bluetooth Angle of Arrival (AoA) for Real-Time Location Tracking

Jun 2026 9 min read Ravi Sharma
How Bluetooth 5.1 Direction Finding enables sub-meter indoor positioning using antenna arrays, IQ sampling, and phase analysis — with practical RTLS architecture for industrial and warehouse deployments.

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.

MethodTypical AccuracyKey Limitation
RSSI trilateration2 – 10 metresMultipath, body shadowing
BLE AoA (Bluetooth 5.1)0.1 – 1 metreRequires 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 TAG θ GATEWAY Antenna Array Transmitter BLE 5.1 + CTE

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.

BLE Packet → Constant Tone Extension (CTE) → Antenna Switching → IQ Sampling → Phase Analysis → Angle Estimation → Position Fix

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.

TAG A1 A2 A3 d = λ/2 d = λ/2 φ₁ φ₂ φ₃ Transmitter

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.

A1 A2 A3 Anchor 1 Anchor 2 Anchor 3 TAG θ₁ = 42° θ₂ = 138° θ₃ = 90° Position fix

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

PlatformAoA / Direction FindingNotes
Nordic nRF52833YesUp to 4-element array, good starting point
Nordic nRF5340YesDual-core, supports larger arrays
TI CC2652R7YesSimpleLink SDK includes AoA reference
Silicon Labs BG22YesVery low power, suitable for tags
Quuppa QPG6105YesPurpose-built RTLS chipset

Practical Challenges

RTLS System Architecture

A production-grade indoor location system combines AoA hardware with a cloud backend:

nRF5340 Tag → CTE Advertising Packets → Anchor Array (nRF5340 + 4-element PCB antenna) → IQ data via USB/UART → Edge Host (Raspberry Pi / x86) → MUSIC / Kalman solver → MQTT to AWS IoT Core → Location DB → Dashboard / API

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

AoA vs UWB

CriterionBLE AoAUWB (e.g. DW1000)
Accuracy0.1 – 1 m10 – 30 cm
Tag cost$2 – $5$15 – $30
Infrastructure costMedium (antenna array)High (UWB anchors)
Battery life (tag)Months to yearsDays to weeks
Existing phone supportYes (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