Environment

FIIT lab bench → fiit-library-floor-0 (already polygonized in PostGIS). No participants. Walk-around testing only.

Motivation

This is the one platform-bring-up experiment that absorbs the boilerplate the old EXP-001..005 carried five times. Its job is to surface every hardware / driver / sync / mobile-app problem before people are in the room so that EXP-F1..F3 can run as analyses rather than as engineering grind. The rationale lives in diary/2026-05-20 - Experiment Series Reorganization.

EXP-P1 is also where the gamification mobile app graduates from peripheral footnote to first-class experimental instrument — see MonadCount Mobile App.

Setup

Topology

                       collection-server (laptop / Pi 5)
                                  ▲
                  ┌───────────────┼───────────────┐
                  │               │               │
              TCP/UDP          TCP/UDP         TCP/UDP
                  │               │               │
        ┌─────────┴────────┐      │      ┌────────┴─────────┐
        │ Pi 5 + M.2 HAT   │      │      │ Pi 5 + M.2 HAT   │
        │ + AX210 (FeitCSI)│ ...  │  ... │ + AX210 (FeitCSI)│
        └─────────┬────────┘      │      └────────┬─────────┘
                  │               │               │
                  ▼               ▼               ▼
              CSI stream      ESP32-C5/C6/S3   CSI stream
                              + BLE listener
                              + SD logger

         participants' phones ──── BLE adv + TCP/UDP heartbeat
                              (gamification: walk task, BLE toggle, WiFi switch)

Sub-experiments (each runs on the bench, no participants)

Sub Title Hardware Validates
P1.1 ESP32-C5 standalone CSI bench 1× C5, RF chamber if available esp_wifi CSI callback fires; HE-LTF subcarrier count matches band/channel-width
P1.2 ESP32-C6 BLE listener + 2.4 GHz CSI 1× C6 Extended-advertising RX; RSSI distribution sane vs Memoryless Techniques and Wireless Technologies for Indoor Localization With the Internet of Things envelope
P1.3 ESP32-C5+S3 sidecar throughput 1× C5, 1× S3, microSD Sustained 10–20 MB/s SDMMC writes from C5 CSI stream over SPI
P1.4 Pi 5 + M.2 HAT + AX210 single-node 1× each PCIe gen 2 link stable; FeitCSI captures 80 MHz CSI; CSI parquet write
P1.5 Distributed sync (4 nodes) 4× Pi 5 + AX210 NTP (chrony) sub-ms drift; PTP (ptpd) sub-100 µs across nodes
P1.6 Collection server + multi-node aggregation 4× Pi 5 + 4× ESP32 + server All streams reach the server with consistent timestamps; no packet loss > 1 %
P1.7 Mobile-app gamification loop server + 2 phones Server pushes walk task → phone executes → BLE adv during task → BLE listener counts → server records ground truth — round-trip
P1.8 WiFi-switch covariate validation server + 2 phones + 2 APs Server commands AP-1→AP-2 handoff; phone associates with target AP within budget; capture lag logged
P1.9 Library-floor deployment dress rehearsal full kit All 14 Pi 5 + 8 ESP32 (mixed C5/C6) running on fiit-library-floor-0 for 4 h continuous, no people

PostGIS preconditions

  • Register the 14 Pi 5s + 10 ESP32-C5s + 10 ESP32-C6s as devices via gis_register_device / gis_place_device. Existing 8× fiit-automated-sniffer-* rows are placeholders — extend to the full inventory and place them on fiit-library-floor-0 for sub-experiment P1.9.
  • No new building / floor / cell ingestion needed for P1; the library floor is already polygonized.

Procedure

Phase A — Per-chip sanity (P1.1 → P1.4)

Single-device bench tests. Each takes < 1 day to bring up. Independent. Run in parallel if multiple hands available. Gate: each sub-experiment writes a markdown handoff note to _knowledge/methods/ documenting the build steps, firmware version, kernel patch level — the steps the field experiments inherit.

Phase B — Multi-node sync + data plane (P1.5 → P1.6)

Now nodes talk to each other. Gate: 4-node deployment runs for 1 h with sub-100 ms timestamps in the collection-server logs and no node-side packet-drop > 1 %.

Phase C — Mobile-app loop (P1.7 → P1.8)

The gamification path. The hardest engineering surface in EXP-P1 because it spans Android/iOS permission flows + BLE adv background restrictions + TCP/UDP comms. Gate: a 30-minute scripted scenario (2 phones, walk-and-stand tasks across cells, BLE-toggle every 60 s, WiFi-switch every 5 min) produces a synchronised log on the server that matches the prescribed task schedule within ± 2 s wall-clock.

Phase D — Library-floor dress rehearsal (P1.9)

Full kit deployed on fiit-library-floor-0 for 4 h, no people. Validates that the infrastructure can be left running unattended. Gate: zero device dropouts; CSI capture rate within 5 % of bench measurement; PTP sync stays sub-100 µs; mobile-app heartbeat from one carried phone arrives every interval.

Expected outputs

  • Markdown handoff notes per sub-experiment in _knowledge/methods/ (one per Pi 5 + AX210 build, one for ESP32-C5/C6/S3 firmware, one for mobile-app capability matrix).
  • Bench data: small (per-sub) parquet files in _attachments/exp-p1/ documenting the validation runs.
  • Mimir histograms for throughput / packet-loss / sync-drift per sub-experiment.
  • A capability sheet for the mobile app — what it can do today, what it can't, what the field-experiment plan can therefore assume.
  • A README in monad_knowledge/sim/runtime/ documenting the MobileAppAdapter / BLEListenerAdapter / FeitCSIAdapter schemas (the EXP-S1 Phase-D contract becomes real data here).

Analysis plan

EXP-P1 is operational, not analytical. The only analyses are:

  1. Throughput vs. sustained-time — does sustained capture rate match bench-shot rate after 4 h? (P1.9)
  2. Sync drift histogram — PTP and NTP drift over 4 h. (P1.5, P1.9)
  3. Mobile-app round-trip latency — server-push → phone-action → server-observation latency distribution. (P1.7)

Success criteria

  • All 9 sub-experiments pass their per-phase gate.
  • Phase D library-floor dress rehearsal runs 4 h with zero device dropouts and sub-100 µs PTP drift.
  • Mobile-app gamification loop produces synchronised server-side logs matching prescribed walk-tasks within ± 2 s.
  • _knowledge/methods/ carries one handoff note per build step the field experiments will reproduce.

Risks and mitigations

  1. ESP32-C5 is new silicon, bootloader / IDF version churn. Mitigation: P1.1 documents the working IDF / bootloader matrix; pin everything in _knowledge/methods/.
  2. Pi 5 PCIe gen 3 instability. Mitigation: P1.4 starts at gen 2; promote to gen 3 only if a specific sub-experiment needs the bandwidth.
  3. iOS background-BLE-adv restrictions break Phase C. Mitigation: enrol the EXP-P1 phones as Android initially; document the iOS workaround (foreground-only mode) as a known limitation that EXP-F* must respect.
  4. PTP requires hardware timestamping support on the NICs / kernel. Mitigation: AX210 supports hardware PTP; verify in P1.5; fall back to software PTP (sub-ms) if the hardware path is blocked.
  5. fiit-automated-sniffer-* rows in PostGIS were placeholders. Mitigation: extend the inventory + re-register; document in P1's PostGIS section.

Dependencies

  • Full lab inventory present and powered.
  • fiit-library-floor-0 polygonization in PostGIS (already done).
  • Mobile-app builds available on at least 2 phones (Android primary).
  • Collection-server endpoint up (can be a laptop on the same LAN).
  • choi2022_17c2 — link geometry per ESP32 CSI deployment.
  • guarino2026_e72c — FeitCSI + AX210 baseline.
  • longo2019_b72f — nominal vs effective penetration sets the mobile-app expectations.
  • EXP-S1 — EXP-P1 fills the Phase-D adapter contracts EXP-S1 defines.
  • EXP-F1 · EXP-F2 · EXP-F3 — start once EXP-P1 Phase D is green.

Notes

EXP-P1 is the experiment that doesn't get a paper. Its outputs are method notes and a known-good deployment. That's exactly why making it explicit unblocks the rest of the series — the field experiments stop carrying their own bring-up procedures.

Provenance

not recorded

Data types

  • csi-amplitude
  • csi-phase
  • ble-rssi
  • ble-advertisement-log
  • ntp-drift-log
  • mobile-app-telemetry
  • tcp-udp-throughput