Forge a Sensor Node

WiFi CSI  ⚔  2.4 GHz mesh  ⚔  presence · motion · people-count

A whole fleet to choose from. Every board listens to 2.4 GHz WiFi Channel State Information — up to 114 subcarriers at ~100 Hz — and reports back to your RuSense server, where it surfaces under the Nodes tab once provisioned. Pick a board, plug it in, raise the sails.

⚖️ Legal & ethical use. RuSense senses presence and motion inside a space through WiFi. Only deploy it in spaces you own or have explicit permission to monitor. Monitoring a space without consent is illegal in most jurisdictions — treat it exactly like installing cameras: you need permission, and many countries also require visible signage that the space is monitored. We condemn any unlawful monitoring; you alone are responsible for complying with the laws where you deploy.

🛰️ Provision WiFi (do this after forging)

Forging erases the node's saved config, so it falls back to the wrong defaults and won't connect. Enter your 2.4 GHz WiFi and the RuSense server IP (your Ragnar box), then write it to the node. Works for both S3 and C6.

⚠️ Give each node a unique Node ID (1, 2, 3…). Two nodes sharing an ID collide, so only one shows up in RuSense.

📶 Channel: set the same fixed 2.4 GHz channel on every node — match your AP's channel (1, 6 and 11 are the non-overlapping ones). Leave it blank to auto-detect from the AP, but a fixed channel keeps the fleet's clocks in sync and stops fusion dropping offline.

📡 Point every node at the same WiFi access point on one fixed 2.4 GHz channel. If several routers or a mesh/extenders share one SSID, nodes latch onto different APs, their clocks can't sync, and sensing drops offline. Use a single AP (a dedicated 2.4 GHz SSID served by one router is ideal) and disable auto-channel.

⚠️ Don't mix S3 and C6 in one mesh. Pick a single chip type and flash every node the same — the two capture different CSI widths, and the server's multistatic fusion needs them identical. A mixed fleet breaks fusion (you lose accurate people-count, positioning, pose & vital-signs). All-S3 is recommended; choose C6 only if you want Wi-Fi 6 — and then make them all C6.

📡 ESP32-S3 CSI Node (pick your board)

Before the forge fires
  1. Close Arduino IDE, Serial Monitor, or any other app holding the port
  2. Use a data-capable USB-C cable (charge-only cables are runes that do nothing)
  3. Click Forge and pick USB JTAG/serial debug unit from the port list
  4. If the board isn’t spotted, hold BOOT while tapping RST

🛰️ ESP32-C6 CSI Node (Wi-Fi 6 · the scout)

RISC-V @160 MHz, 4 MB flash, dual-band Wi-Fi 6 (802.11ax) and 802.15.4. The research target — HE-LTF subcarrier tagging and a wider channel view for experiments. Same CSI-node firmware, tuned for the C6 radio.

Before the forge fires
  1. Close Arduino IDE, Serial Monitor, or any other app holding the port
  2. Use a data-capable USB-C cable (charge-only cables are runes that do nothing)
  3. Click Forge and pick USB JTAG/serial debug unit from the port list
  4. If the board isn’t spotted, hold BOOT while tapping RST
ESP32-C6 · 4 MB flash · Wi-Fi 6

📡 Skald’s Ear (serial monitor)

Open a browser-based serial monitor for any forged CSI node. Default baud is 115200. On boot the node announces itself, then emits CSI capture rate and status lines — handy for confirming packets-per-second before you provision the node to your RuSense server.

Web Serial only sails in Chromium-based browsers (Chrome, Edge, Opera) on desktop. Firefox and Safari are unworthy ships for this voyage.