Asking the fleet what it is doing…
monad-knowledge Wi-Fi sensing lab · FIIT STU
answered EXP-P2 platform

Illuminator Bring-Up and First Controlled Link — office pair monad01→monad02

In plain words

Can a Wi-Fi access point on one node serve as a steady, controlled sounding source for another node?

steady: a frame every tick, like a metronome bursty: the same number of frames, in clumps with gaps same average rate, very different sampling
Two captures at the same average rate. The top row is a steady injected stream; the bottom row is real traffic, which arrives in clumps with gaps. Every movement feature assumes the top row, and the design asks what survives on the bottom one. Schematic of the design, not a measurement.
Why it matters
Before any sensing, we need a transmitter whose frames we recognise and whose rate we control. Ordinary broadcast frames turned out to have a catch.
How it is done
One node runs hostapd and sends paced broadcast frames on 2.4 GHz; the neighbour records them and measures what share arrives and how evenly.
Where it stands
Measured, and the second half failed instructively: 99 percent of records were the intended frame class, but broadcast frames get no acknowledgement and no retry, so only 30 percent arrived at 100 Hz pace and 72 percent at 25 Hz, in bursts. Two platform bugs were fixed on the way, and 5 GHz access-point mode is impossible on this driver.

Asks, formallyA hostapd-based AX210 illuminator emitting paced non-HT OFDM broadcast gives the observer node a controlled, single-class CSI sounding source whose delivered rate matches the commanded pace.

FoundThe hypothesis failed in its second clause, instructively.

StandingA result is in and written up

RoomFaculty office, FIIT STU. Two Pi 5 + AX210 nodes ~3 m apart through furniture: monad01 = illuminator AP (band-24 profile, ch11, 2.4 GHz, open BSS monad-illum-24, broadcast pinned to 6 Mbps), monad02 = csid observer (ch11 HT20 monitor). Busy campus 2.4 GHz band, three unmanaged eduroam APs in range.

Executive summary

The hypothesis failed in its second clause, instructively: the illuminator does give a controlled single-class source (99 % of captured records are its 52-tone non-HT OFDM class), but the delivered rate is not the commanded pace — broadcast frames carry no ACK and are never retransmitted, so on a contended office channel delivery was 30 % at 100 Hz pace and 72 % at 25 Hz pace, arriving in CSMA-bunched bursts (39 % of gaps < 2 ms, stalls up to 1.1 s). The commanded pace is a ceiling, not a sampling axis; the observer's timing view is the arm's real axis. Two platform defects were found and fixed on the way: a day-one csid bug that made every ≥80 MHz tune fail (mixed iw syntax forms), and a firmware assert that makes 5 GHz AP mode impossible on the iax backport — illumination is 2.4 GHz-only until the driver is fixed.

Sessions (all synced to S3)

Session Purpose Records Outcome
monad02_d1-illuminated_20260727-141232 80 MHz tune-fix verification (6 s, ch36/80 MHz) 0 Monitor tuned ch36 / 80 MHz / centre 5210 — the metadata sidecar is the artefact; empty capture expected and irrelevant
monad02_exp-band-24_20260727-141257 First illuminated arm, receiver throttled (interval_us=10000) 3 457 ~14 Hz of 100 Hz pace — throttle × burst interaction discovered (one record kept per CSMA bunch)
monad02_exp-band-24_20260727-141703 Main 30-min arm, uncapped receiver; pace 100 Hz → 25 Hz at t≈3 min 41 603 99 % illuminator class, 0 stream drops; delivery/burstiness quantified; motion event captured ~14:31–14:34

Keys: s3://monad-knowledge/datasets/ax210-csi-captures/monad02/<session_id>/{capture.raw, capture.csiq, metadata.json}. Sources for the viz service: csid:monad02/<session_id>.

Findings

1. The illuminator frames are identifiable by a driver sentinel, not by MAC. Broadcast data frames arrive with source MAC ef:be:ad:de:ad:de — the driver's little-endian 0xdeadbeef/0xdead fill for frames without a station context. monad01's real MAC appears only on its beacons (~3 records per session). All analysis filters on the sentinel + 52-tone class.

2. Broadcast delivery is pace-dependent, bursty, and diurnal. No ACK, no retry: every collision is a permanent loss.

Commanded pace Delivered (office hours) Delivered (early evening)
100 Hz ~30 Hz (30 %)
25 Hz ~14–18 Hz (56–72 %) 24.1 Hz (96 %)

Inter-arrival structure at 25 Hz: p50 61 ms vs the ideal 40 ms, a mass of sub-millisecond back-to-back pairs (mac80211 queues some broadcasts and releases them beacon-aligned), occasional ~1 s stalls. CV 1.6–2.5 ⇒ Doppler on this source is qualitative (Widar3-style axes need CV ≲ 0.5). Consequence adopted fleet-wide: illuminator default pace 25 Hz, band-arm captures uncapped (interval_us=0), and any drift/occupancy claim must report the delivered-rate timeline alongside.

3. The receiver throttle and the burstiness interact destructively. With interval_us=10000, one CSI record survives per CSMA bunch — the 100 Hz arm delivered ~10 Hz. The throttled session's inter-arrival histogram starts exactly at the 10 ms floor with the sub-ms mass removed; uniformity must come from the source's pacing, not the receiver's decimation.

_attachments/csi/2026-07-27-illum-band24-throttled-timing.png

4. The link itself is healthy and the measurement is real. RSSI −60/−63 dBm across the office; the two rx chains have genuinely different median |H(f)| curves (antenna distinctness per Gringoli's "CSI crime-scene" checks — not a misparse); the 30-min waterfall shows a stable frequency-selective fingerprint with persistent ridges, and a clear disturbance episode at 14:31–14:34 UTC (someone moving in the office) visible simultaneously in waterfall texture, delivered rate, and an rx1 RSSI dip cluster to −85 dBm.

_attachments/csi/2026-07-27-illum-band24-overview.png _attachments/csi/2026-07-27-illum-band24-chains.png _attachments/csi/2026-07-27-illum-band24-rssi.png _attachments/csi/2026-07-27-illum-band24-timing-tail.png

5. Platform defects fixed. (a) csid emitted iw dev … set freq 5180 80MHz 5210, mixing iw's two mutually exclusive syntax forms — every 80/160 MHz tune since the daemon existed had failed with an empty-stderr error; fixed in csid (iw_numeric() + tune_args() with regression tests pinning the argv), rebuilt and verified on both nodes. This retroactively explains the homelab "5 GHz tuning failed" anomaly, and unblocks the 80 MHz d1-* experiments of DEPLOY-001 AX210 Fleet Deployment FIIT Library. (b) illuminator-ap@band-5 crashes the AX210 firmware (FW error in SYNC CMD LINK_CONFIG_CMD in iwl_mvm_mld_assign_vif_chanctx) — not regulatory (regdom SK, 5180 IR-allowed, LAR-feeding scan changed nothing); 2.4 GHz AP works. 5 GHz sounding therefore uses mgmt-wlan0 traffic through a campus AP (the d1-* pattern) or a future associated-station/injector mode.

Why non-HT OFDM (and why the pace ceiling is acceptable)

Group-addressed frames must use a basic rate every receiver decodes — HT/VHT/HE MCS are per-station negotiated, so broadcast illumination is non-HT by protocol law, not by choice. The choice we did make (pinning basic_rates to 6 Mbps, excluding DSSS) buys band parity: 52 tones at 312.5 kHz identically on 2.4 and 5 GHz, one deterministic waveform, maximum decode robustness. The cost is coarser frequency sampling than HE (52 vs 242 points; cominelli2023_e6ee ) and single-stream sounding (2×1). Rich HE 2×2 sounding needs paced unicast to an associated station — which also fixes the time axis (ACK + retries) and is the natural next platform experiment, feeding EXP-008 Active Injection vs Passive Sniffing and the rate ladder of EXP-007 Packet-Rate Floor for Motion Sensing.

Key references

  • cominelli2023_e6ee — antennas and subcarrier spacing dominate raw bandwidth; frames the 52-tone trade-off.
  • zeng2021_1e4f — cross-chain ratio cancels time-varying hardware offsets; the basis for the inter-chain conjugate features this link will use.
  • zhang2026_ccac — device-dependent distortions make raw CSI non-comparable without protocol; motivates the sidecar + delivered-rate reporting discipline.

Limits

  1. Every number here is a point estimate with no interval. This was a bring-up run, not a designed comparison: one node pair, one office, three sessions, and delivery figures read off single arms. The 30 % / 72 % contrast is not a measured effect with an uncertainty — it is two observations under different commanded paces at different times of day, and the diurnal swing (56–72 % in office hours against 96 % that evening) is the same size as the contrast. Do not cite these percentages as a rate–delivery relationship; that is what the ladder in EXP-007 Packet-Rate Floor for Motion Sensing exists to measure under a paired design.
  2. One geometry, one room, one band. monad01→monad02 at ~3 m through office furniture on 2.4 GHz ch11. Nothing here transfers to the library deployment or to 5 GHz.
  3. The instrument is superseded. hostapd multicast was replaced by monitor-mode injection (EXP-011 Paired-Band Delivery and Pacing Contrast), which measured CV 0.017–0.24 against this run's 1.6–2.5. Findings about the link stand; findings about the illuminator describe a component no longer in use, and the CV figure survives only as the baseline that motivated the change.
  4. The motion episode is anecdotal. Someone moving in the office at 14:31–14:34 UTC is visible in three signals at once, which is good evidence that the instrument sees people — and no evidence at all about how well, since there was no ground truth and n = 1 event.

Provenance

not recorded

Data types

  • csi-amplitude
  • csi-phase
  • rssi-log