ArrayTrack

Indoors, an access point’s antenna array hears a client arrive from several bearings at once: the direct line-of-sight path plus copies bounced off walls and furniture. A straight row of antennas can’t even tell front from back. ArrayTrack (Xiong & Jamieson, NSDI ’13) stacks four tricks to find the one bearing that points at the client, then multiplies bearings from several APs into a location. Drag the client, the pillars and the APs; switch stages off to see what each one is for.

Floor plan drag the client, APs and pillars · click an AP to inspect it

12 m × 8 m office
Client (true) Estimate & each AP’s chosen bearing Line-of-sight path Wall reflections Likelihood L(x)
Location error–
APs locked on LoS–
Raw-MUSIC top peak = LoS–
Blocked LoS paths–

Disambiguation pipeline AoA spectrum at the selected AP, one stage per card

1Raw MUSIC

Every path carries the same packet, so MUSIC sees one blurred source and its mirror image across the array axis.

2Spatial smoothing
Sub-array groups NG2

Average the covariance of overlapping sub-arrays to decorrelate the copies, so each path gets its own peak.

3Geometry weighting

Near the array axis a tiny phase error swings the bearing a lot. Multiply by W(θ) = sin θ within 15° of endfire.

4Symmetry removal

A ninth antenna sits off the row. Steer all nine at each half, total the power, and drop the weaker half.

5Multipath suppression
Frames grouped3
Client jiggle between frames5 cm

Take 2–3 frames a few cm apart. The direct peak holds still; reflection peaks shift. Keep only peaks that reappear within 5°.

AoA spectrum (primary frame) Other frames (stage 5) True LoS bearing LoS mirror image Reflection bearings Array axis

Radio & deployment

Access points3
Antennas per row8
SNR15 dB
Preamble samples10
Residual calibration error5°
Wall reflectivity |Γ|0.60

2.45 GHz (λ = 12.2 cm), antennas at λ/2 like the paper’s WARP prototype. Walls reflect specularly and scatter weakly from rough spots near each bounce; a pillar costs a path about 15 dB. The calibration error is the phase mismatch left per antenna after the one-time cable-swap calibration.

Scenarios

How the stages fit together

Why one array gets it wrong. MUSIC splits the antenna covariance R = A Rss A* + σ²I into a signal subspace and a noise subspace and peaks wherever the steering vector a(θ) is orthogonal to the noise subspace: P(θ) = 1 / a(θ)* EN EN* a(θ). Multipath copies of one packet are perfectly correlated, so Rss has rank one and MUSIC sees a single blended source. A linear array only measures cos θ, so every bearing also has a mirror twin across the array axis.

Getting the peaks right. Spatial smoothing averages NG shifted sub-arrays, which restores rank at the cost of NG−1 antennas of aperture (the paper settles on NG = 2). Geometry weighting discounts endfire bearings, where dθ = dφ / (π sin θ) blows up. The off-row ninth antenna breaks the mirror symmetry: only the true side makes its phase line up.

Picking the direct one. Moving a few centimetres (less than a wavelength) barely changes where the direct ray comes from, but it reshuffles the phases inside each reflection’s cluster of bounce and scatter points, so those peaks shift or vanish. A peak that doesn’t return within 5° in the other frames is removed. Finally every AP votes on every point in the room: L(x) = Πi Pi(θi(x)). A reflection that slips through at one AP points somewhere the other APs disagree with, so it rarely survives the product.

This simulation is idealized: the scattering is two-dimensional and only first-order, and the client and APs share a height. Results lean on the scene, so treat the location error as a qualitative guide, not a replication of the paper’s 23 cm median.