Phaser

Enabling phased-array signal processing on commodity WiFi hardware

Phaser

Enabling phased-array signal processing on commodity WiFi hardware

Array signal processing: localization

ArrayTrack, NSDI '13

Array signal processing: indoor radar

(Left) Wi-Vi, SIGCOMM '13
(Right) Wi-See, MobiCom '13

Array signal processing: WiFi security

SecureArray, MobiCom '13

Phase measurements are key


A client transmitting to a two-antenna array in free space.

Can we do this on every WiFi AP?

WiFi APs are ubiquitous; huge potential for large-scale deployments!

Need phase data usually only available on specialized hardware (e.g. Rice WARP)


Can we do this on every WiFi AP?

Consumer NICs sometimes leak this data, but have other challenges.

Unless accounted for, these APs are useless for signal processing.

Array signal processing: Our goal

Array signal processing: Our goal

Have no fear, Phaser is here!

1: Enabling multiple NICs

2: Oscillator alignment woes

3: Evaluating Phaser

A single 802.11 NIC is not enough

Can we combine data from multiple NICs to make One Large Array™?

Complications abound

Complications abound

Complications abound

Two observations about DFT

NIC1
NIC2

Time-domain shift is subcarrier (\(k\)) dependent rotation!

\(h\left[n - \color{green}{\tau_0}\right] \overset{DFT}{\longleftrightarrow} H[k]e^{ 2\pi j \color{green}{\tau_0} k/N}\)

Time-domain rotation is equal to frequency-domain rotation!

\(h[n]e^{j\color{blue}\rho} \overset{DFT}{\longleftrightarrow} H[k] e^{j\color{blue}\rho}\)

Opportunity!

All inter-card differences are frequency-domain rotations!

Find set of rotations to apply to one card to synchronize with other card

How do we find the right rotation?

Shared information is key

Idea: Introduce a shared antenna using a splitter.

\(\psi\)

1: Enabling multiple NICs

2: Oscillator alignment woes

3: Evaluating Phaser

Oscillator alignment woes

On one NIC, oscillators are frequency-locked, but have phase offsets.

\(\psi_0\) \(=\psi_0\)
\(\psi_1\) \(=\psi_1\color{red}{+\phi_1}\)
\(\psi_2\) \(=\psi_2\color{red}{+\phi_2}\)

Need to find \(\color{red}{\{\phi_i\}}\).

Phase offsets skew AoA estimate

AoA estimate of transmission

Are we done yet?

No, not quite...
Exhaustive search becomes too expensive for larger arrays.

For five antennas, need to find φ1 through φ4.
With granularity of 4°, ~65M combinations!

Skip bad combinations early

Some combinations of φ1 and φ2 are obviously incorrect.

Can skip these when searching φ3..n!

Probabilistic insertion

  1. Create an empty, finite-size population
  2. Draw initial candidates from all combinations of φ12.

Are we done now?

Beating multipath

Beating multipath

Beating multipath

Beating multipath

*Highest product of average estimate quality and number of samples in cluster.

1: Enabling multiple NICs

2: Oscillator alignment woes

3: Evaluating Phaser

3.1 Multi-NIC

3.2 Autocalibration

Multi-NIC operation

in an Anechoic chamber

AoA with 3 antennas across 800 packets in a controlled environment.

Multi-NIC operation

in an Anechoic chamber

AoA with 5 antennas across 800 packets in a controlled environment.


Accuracy improves by ~80%!

1: Enabling multiple NICs

2: Oscillator alignment woes

3: Evaluating Phaser

3.1 Multi-NIC

3.2 Autocalibration

Autocalibration

Four APs in an indoor environment

Autocalibration

Four APs in an indoor environment

Phase error \(\phi_i\) distribution across multiple autocalibration runs.
Phase error effect on AoA estimate.


AoA estimate error 2.5° median, 6.5° 95th percentile.

Autocalibration

Four APs in an indoor environment

Phase error \(\phi_i\) distribution across multiple autocalibration runs.
Phase error effect on AoA estimate.


AoA estimate error 4.5° median, 9.5° 95th percentile.

What now?

Contributions

Intel NUC platform

Where do we go from here?

Phaser in practice


Phaser-powered ArrayTrack accuracy CDF