Skip to content

Hardware bring-up verification (ESP32-S3 + Pico W) #2

Description

@MichaelAdamGroberman

The logic is covered by host tests (`pio test -e native`, 20/20) and CI proves the firmware builds for both boards — but on-device behavior has not been verified on physical hardware yet. This issue tracks running the hardware bring-up checklist once per board and reporting results.

Boards

  • ESP32-S3
  • Raspberry Pi Pico W (BLE is a documented stub — skip the BLE section; see roadmap)

Acceptance criteria (per the checklist)

1. Radio mutual exclusion (WiFi ⊕ BT)

  • Boot in DEFAULT_MODE_WIFIWiFi OK, no BLE advertising
  • mode bt → serial shows WiFi OFF then BLE advertising… (ordered, never overlapping); BLE scanner sees the device only in BT mode
  • mode wifiBLE OFF then WiFi OK

2. Free heap reclaimed across a switch (the heap guarantee)

  • Log free heap before/after a setMode switch
  • Cycle WiFi→BT ~10× — free heap after each full cycle is stable (no monotonic decline = no leak; confirms stop hooks fully deinit, not just disconnect)

3. BLE transport (ESP32 only)

  • Connect a BLE client, write token then read, get the {"temp_c":..,"uptime_s":..} notification; wrong token → silent drop

4. Optional WireGuard tunnel (WiFi mode)

  • WG_CONFIG defined → tunnel reaches UP; route approved in Tailscale admin
  • From another tailnet node: ping <device tunnel IP> succeeds
  • From off-network: nmap -sU -p51820 <gateway> returns no WireGuard reply (scanner-silent)

5. Token-gated TCP (WiFi mode)

  • printf 'TOKEN\nread\n' | nc <device> 4242 returns sensor JSON; wrong token closes with no data

Notes

  • Flash via the bundled pio (Python ≤ 3.13): ~/.platformio/penv/bin/pio run -e <env> -d app/tailnet-sensor-node --target upload --target monitor
  • On the ESP32-PICO-D4 the WiFi→BT teardown is the tightest heap case; the S3 has ample headroom.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthardwareRequires verification on physical hardwarehelp wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions