Asking the fleet what it is doing…
monad-knowledge Wi-Fi sensing lab · FIIT STU
Campaign

Paired dual-band CSI on the AX210/Pi5 fleet — does the 5 GHz occupancy edge survive a self-illuminated, matched-rate, swapped-receiver measurement?

c-csi-band-paired-hardware

Archive snapshot, as of 17 h ago — the run corpus is rebuilt once a day, so this page is not a live reading. The fleet panel is the live one; it refreshes every 30 s.

Sessions

No sessions yet — this campaign has a brief but no execution.

Brief

Question

band-5ghz-occupancy-discriminability is strength: supported on one real platform — our zero-shot re-analysis of WiMANS raw CSI (Intel 5300): ρ(moving-count, CV) +0.71 at 5 GHz vs +0.28 at 2.4 GHz, presence AUC 0.991 vs 0.879. The ray-traced programme (c-csi-band-calibration) reported the two bands tracking identically. The hypothesis note names the outstanding gate explicitly: "confirm on a second real dual-band dataset and on the AX210/Pi5 fleet (which captures both bands), checking the gap holds across hardware." This campaign is that gate.

Framing discipline. This is not "run the fleet on two bands and see." A band comparison is confounded by default, and the value of this campaign is almost entirely in the controls listed below. If they are not held, the resulting number is uninterpretable and should not be produced.

Why this measurement can be cleaner than the published one

Two nodes on one floor observe both bands simultaneously, on the same realisation of the room. Every public dual-band set measures the bands sequentially, so between-session channel drift sits inside their band contrast. Paired simultaneous observation removes it.

More importantly — and this is the part that makes the current empty office an asset rather than an obstacle — in an occupied building 2.4 GHz and 5 GHz carry different ambient traffic loads, so their CSI sampling rates differ, so a naive band comparison is partly a rate comparison. That is exactly the axis EXP-007 Packet-Rate Floor for Motion Sensing isolates and EXP-008 Active Injection vs Passive Sniffing warns is not captured by mean rate alone. With the room empty there is no ambient traffic on either band (measured: 6.2 frames/s on ch11, 2026-07-26), so the injected illumination is the only traffic, and it can be made bit-identical across bands. The band contrast is therefore cleaner in an empty room than it could ever be in a busy one.

The four controls that decide whether this is science

  1. A controlled illuminator, not ambient traffic. This is the control everything else hangs off, and it replaces the campaign's original "ping over eduroam" plan. That plan failed three ways at once: the eduroam channel is not knowable without on-node commands, the two nodes are associated to different APs (54:d7:e3:2a:f8:d1 vs 54:d7:e3:2e:e1:21, measured 2026-07-26), and a client holds one association — so a band-steered enterprise network cannot be made to illuminate 2.4 GHz and 5 GHz on demand.

    Instead the illuminating node runs hostapd on its AX210 (wlp1s0) — the CSI radio, not the management radio — on a channel, band, and rate set we choose, and drives a paced legacy-rate multicast stream on the AP interface. No station needs to associate: multicast is transmitted regardless, so no node ever leaves eduroam and the tailnet stays up.

    [!warning] Never put hostapd on wlan0 wlan0 carries eduroam, the tailnet, and therefore all remote access. docs/FLEET-WIFI.md configures eth0 as an always-on recovery link, but it is no-carrier on both nodes — the cable is not plugged in. With the building empty there is no way to recover a node that loses its management radio.

  2. Subcarrier parity — native, because we chose the modulation. Legacy OFDM is 52 used tones at 312.5 kHz over 20 MHz, identical on 2.4 and 5 GHz. A legacy-rate illuminator therefore produces the same subcarrier basis on both arms by construction — parity is not reconstructed offline, it is a property of the waveform.

    That this hardware emits CSI for non-HT frames is measured, not assumed: every working session reports 52 in tone_counts (monad05_console_20260722: [52, 56], 6.68 M records at 232 Hz). Both profiles are therefore HT20, and the earlier asymmetric-width design is withdrawn — a wider monitor buys nothing when we generate the traffic ourselves, and would cost ~4x the bytes and a lower rate ceiling (csid caps: ~371 Hz at 20/40 vs ~215–225 Hz at 80/160).

    What the reduction still owes: filter each arm to the 52-tone legacy class before comparing (the csi-visualization skill's one-record-class rule). The illuminator makes 52 dominant but the channel is shared — stray HT/VHT frames from real APs will also land, and mixing record classes is not a band contrast. Report the discarded fraction per arm and require it small and comparable; a large asymmetry there is a band-correlated confound in disguise.

  3. Matched illumination rate. Identical send rate, frame size, and arrival regularity on both bands, from the same illuminator, verified post-hoc via the timing view. 100 Hz on both, set by the illuminator and capped by interval_us — comfortably under the ~371 Hz HT20 ceiling, so the cap governs rather than the radio. The rate is a control variable here, not a treatment; the ladder belongs to Stage 2. Cross-arm rate parity stays a hard gate: if the arms cannot be rate-matched, report that and stop.

  4. Swapped receiver (crossover). A fixed node→band assignment confounds band with radio and position — two different AX210 samples, two different spots in the room, two different antenna orientations. Each condition therefore runs in both assignments (monad01→2.4 / monad02→5, then monad01→5 / monad02→2.4), and the band effect is the crossover-adjusted contrast. Without this the campaign measures "monad02 minus monad01" and calls it a band gap.

Stage 1 — the verified-empty arm (runnable now, fully remote)

Ground truth is occupancy = 0, verified (operator travelling, office confirmed empty). That is a stronger null label than the literature usually has, where "empty" is asserted.

  • Illuminator. monad02 runs hostapd on its AX210 and emits a paced legacy-rate multicast stream; monad01 observes with csid; then the roles swap. The auxiliary-transmitter pattern follows wang2025_2c42 , who park a Raspberry Pi pinging the router to hold a passive capture at rate — here the transmitter is one of our own nodes, so its channel, band, rate and modulation are ours to set rather than the faculty AP's to decide.
  • One radio, one role, at a time. A node cannot be AP and monitor simultaneously — hostapd and csid both want wlp1s0. The crossover therefore alternates roles between nodes rather than running both on each. wlan0 stays on eduroam throughout on both nodes; that is what keeps the fleet reachable.
  • Never self-illuminate. A node transmitting and receiving centimetres apart is dominated by the direct path and carries almost no multipath sensitivity. The illuminator and the observer must be the two different nodes — which the one-role-at-a-time constraint enforces anyway.
  • Non-DFS 5 GHz only. Channels 36–48. A DFS channel would make the AP silently vacate on radar detection mid-session, which reads downstream as a starved arm rather than as a regulatory event.
  • What Stage 1 delivers. (a) the between-session dispersion estimate that powers Stage 2; (b) the baseline-inflation check; (c) the platform gate — proof the fleet can hold matched conditions on both bands at all.
  • What Stage 1 cannot deliver. Any statement about occupancy discriminability. Zero occupancy contrast means zero information about ρ(occupancy, CV). Saying otherwise would be the "confident verdict, nothing measured" pattern the 2026-07-15 integrity audit flagged.

Stage 2 — the occupancy ladder (gated, needs people)

Sized from Stage 1's sigma, not before. Occupancy ladder with BLE-anchored ground truth per EXP-001 BLE-Assisted CSI Ground Truth Collection, same exp-band-24/exp-band-5 pair, same hostapd illuminator, same 52-tone legacy basis, same crossover, illumination rate swept as a secondary family. Only Stage 2 can move band-5ghz-occupancy-discriminability's strength.

What the supervisor does

This campaign has no simulator. simulations_available: and sim_params: are absent by design, and sim campaign run cannot execute it — there is nothing to launch. Execution is fleet-side (systemctl start csid@<profile> per condition, sessions synced to S3 by csid-sync), and the campaign machinery is used only for the session record and synthesis. Treat the step list as an operator protocol, not a supervisor plan:

  1. Deploy the matched pair exp-band-24 / exp-band-5 (already authored in csid_experiments). Their channels are placeholders carried over from the stock profiles — set each to the channel the eduroam AP is actually on for that band (iw dev wlan0 link on the illuminator) before the first session. csid is passive-only (capture.mode accepts only "passive"; "inject" is reserved and unimplemented), so a wrong channel means both arms sniff an idle channel and the session yields nothing.
  2. Run the 8-session crossover, one condition at a time (single radio per node — a research capture stops the console feed).
  3. Verify each session through csi_plot validation + timing before analysing it, and check cross-arm rate parity for the pair as a whole, not just each arm alone.
  4. Reduce, parity first: filter each arm to the 52-tone legacy class, report the discarded fraction per arm and check it is small and comparable, confirm equal final tone counts — then per-session log-CV per band, crossover-adjusted paired difference, bootstrap CIs, dispersion estimate. Report median/MAD alongside mean/SD (robust_cross_check).
  5. Synthesise against the criteria above, leading with the honest-scope statement.

Figure render request

csi_band_paired_empty — per-session empty-room log-CV, 5 GHz vs 2.4 GHz, paired lines with the node assignment encoded by line style so the crossover is visually legible; bootstrap-CI ribbon on the paired difference; a reference band marking the 1.5x baseline-inflation threshold.

Out of scope

  • The illumination-rate floor itself — that is EXP-007 Packet-Rate Floor for Motion Sensing.
  • Arrival-regularity / burstiness — that is EXP-008 Active Injection vs Passive Sniffing. Stage 1 holds arrival regularity fixed and uniform precisely so it cannot leak in.
  • The BLE anchor (Stage 2 only).
  • Any sim-to-real comparison against c-csi-band-calibration. That comparison is worth making, but only once Stage 2 has a real ρ per band to compare against.

Expected interpretation (Stage 1)

  1. Platform gate passes, baseline inflation excluded → the fleet can hold matched dual-band conditions, the band contrast is not baseline-driven, and Stage 2 is sized and worth running. The best outcome.

  2. Platform gate passes, baseline inflation CONFIRMED → part of the WiMANS ρ gap may be baseline dispersion rather than occupancy sensitivity. This does not refute the hypothesis, but it changes what the metric means and must be carried into Stage 2's estimator (e.g. occupancy-CV normalised by empty-room CV per band). A genuinely valuable negative that only a verified-empty room could surface.

  3. Platform gate fails (starved capture, irregular sampling, chains not distinct) → platform finding, not a science finding. Fix and re-run; quote nothing. 3b. The illuminator does not produce CSI at the observer — hostapd comes up and beacons, but the observing node records nothing, or records far below the 100 Hz send rate. Candidate causes, in the order worth checking: the AX210 refuses AP mode alongside the monitor vif on the peer; multicast is being sent at a rate the receiver cannot decode at HT20; the chosen channel is congested; or the CSI path itself is faulty independent of illumination (see the open question in the platform gate). Distinguish the last one first — it is the only cause that also explains the 2026-07-26 zero-record console sessions, and it invalidates every arm rather than one.

    Fallbacks, best first:

    • Associate a real station. If multicast proves undecodable, a station gives unicast at negotiated rates. The cost is that the only available stations are the nodes' own wlan0 radios, and moving either off eduroam forfeits remote access with no cabled recovery — so this is a on-site-only fallback, not a remote one.
    • HT40 on both bands (legal on both). Widens what the monitor can decode if the illuminator's frames turn out wider than expected. Verify against observed tone_counts.
    • Report the non-result. "This hardware does not support a self-illuminated matched-basis dual-band comparison" is a publishable platform finding and the honest outcome if the above fail.

    Record which was taken and why; do not quote a band difference from unmatched bases.

  4. Band and receiver not separable at n=8 → report the honest non-result and either raise n or add nodes. Do not fall back to the un-crossed contrast.