跳到正文
cccskills
免费在 GitHub 公开

ruview-hardware-setup

Set up RuView sensing nodes by building and flashing ESP32 firmware, configuring WiFi and the receiving address, and checking serial logs. Diagnose missing CSI streams, the WiFi signal measurements sent by sensing nodes.

中文简介正在准备中。当前显示英语简介。

原文查看原文说明

ESP32-S3 / ESP32-C6 firmware build, flash, WiFi provisioning, and serial monitoring for RuView CSI sensing nodes. Use when setting up physical hardware, reflashing a node, or debugging a device that isn't streaming CSI.

集成工具AWS
查看安装方法

适用场景

  • Setting up a new RuView sensing node
  • Reflashing firmware for an 8 MB or 4 MB ESP32-S3
  • Configuring WiFi and the receiving server
  • Diagnosing missing CSI data

包含的文件(1)

  • SKILL.md7.0 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

RuView Hardware Setup

Bring a RuView sensing node online: build firmware → flash → provision WiFi → confirm CSI stream.

Supported devices

DeviceFlashChipRole
ESP32-S3 (8MB)8 MBXtensa dual-coreWiFi CSI sensing node (default)
ESP32-S3 SuperMini4 MBXtensa dual-coreCompact CSI node — use sdkconfig.defaults.4mb
ESP32-C6 + Seeed MR60BHA2—RISC-V + 60 GHz FMCWmmWave HR/BR/presence

Not supported: original ESP32, ESP32-C3 (single-core).

⚠️ Ask about board form factor before flashing. If the user's board is a coin-sized clone (ESP32-S3-Zero, SuperMini, or similar — not a full DevKitC/XIAO-style board with a real USB connector and visible regulator), warn them before they walk away from it: this firmware runs the WiFi radio continuously (WIFI_PS_NONE) plus a full DSP pipeline (edge_tier=2), which is sustained high current draw that full-size dev boards handle fine but tiny clones with minimal copper/budget regulators may not. At least one field report: boards ran hot during a normal session and failed to power on again afterward (regulator damage suspected). Tell them to give the board airflow (don't stack/enclose it) and check it by touch during the first several minutes of any new deployment.

1. Build firmware (Windows — Python subprocess, NOT bash directly)

ESP-IDF v5.4 does not support MSYS2/Git Bash. Use the Espressif Python venv as a subprocess with MSYSTEM* env vars stripped. The proven command lives in CLAUDE.local.md — reproduce it:

/c/Espressif/tools/python/v5.4/venv/Scripts/python.exe -c "
import subprocess, os
env = os.environ.copy()
for k in ['MSYSTEM','MSYSTEM_CHOST','MSYSTEM_PREFIX','MINGW_PREFIX','CHERE_INVOKING']:
    env.pop(k, None)
env['IDF_PATH'] = r'C:\Users\ruv\esp\v5.4\esp-idf'
env['IDF_PYTHON_ENV_PATH'] = r'C:\Espressif\tools\python\v5.4\venv'
env['IDF_TOOLS_PATH'] = r'C:\Espressif'
env['PATH'] = (
    r'C:\Espressif\tools\xtensa-esp-elf\esp-14.2.0_20241119\xtensa-esp-elf\bin;'
    r'C:\Espressif\tools\cmake\3.30.2\cmake-3.30.2-windows-x86_64\bin;'
    r'C:\Espressif\tools\ninja\1.12.1;'
    r'C:\Espressif\tools\idf-exe\1.0.3;'
    r'C:\Espressif\tools\ccache\4.10.2\ccache-4.10.2-windows-x86_64;'
    r'C:\Espressif\tools\python\v5.4\venv\Scripts;'
    + env['PATH']
)
python = r'C:\Espressif\tools\python\v5.4\venv\Scripts\python.exe'
idf_py = os.path.join(env['IDF_PATH'], 'tools', 'idf.py')
r = subprocess.run([python, idf_py, 'build'],   # flash: [python, idf_py, '-p', 'COM8', 'flash']
    cwd=r'C:\Users\ruv\Projects\wifi-densepose\firmware\esp32-csi-node',
    env=env, capture_output=True, text=True, timeout=300)
print(r.stdout[-3000:]); print(r.stderr[-2000:]); print('RC:', r.returncode)
"
  • 8MB build: uses sdkconfig.defaults.template (no mock — real WiFi CSI).
  • 4MB build: cp firmware/esp32-csi-node/sdkconfig.defaults.4mb firmware/esp32-csi-node/sdkconfig.defaults first, then build.
  • Build outputs: firmware/esp32-csi-node/build/{bootloader/bootloader.bin, partition_table/partition-table.bin, esp32-csi-node.bin, ota_data_initial.bin}.

2. Flash to the device

Same subprocess pattern, swap [python, idf_py, 'build'] → [python, idf_py, '-p', 'COM8', 'flash']. Or with esptool directly:

python -m esptool --chip esp32s3 --port COM8 --baud 460800 \
  write_flash 0x0 firmware/esp32-csi-node/build/bootloader/bootloader.bin \
  0x8000 firmware/esp32-csi-node/build/partition_table/partition-table.bin \
  0xf000 firmware/esp32-csi-node/build/ota_data_initial.bin \
  0x20000 firmware/esp32-csi-node/build/esp32-csi-node.bin

(The default device port in this workspace is COM8. Some docs reference COM9 — confirm with the user.)

3. Provision WiFi + sink address

Runs directly — no ESP-IDF env needed:

python firmware/esp32-csi-node/provision.py --port COM8 \
  --ssid "YourWiFi" --password "secret" --target-ip 192.168.1.20 --target-port 5005 --node-id 1

# Optional ADR-060 overrides:
python firmware/esp32-csi-node/provision.py --port COM8 --channel 6 --filter-mac AA:BB:CC:DD:EE:FF

--help lists the full flag set (TDM mesh slotting, edge tier, detection thresholds, vitals window, hop channels, Cognitum Seed, swarm intervals) — see the ruview-configure skill for the table. Gotcha (issue #391): flashing replaces the entire csi_cfg NVS namespace — any key not on the CLI is erased; pass the full set you want. On Windows, provision.py --help needs PYTHONUTF8=1 to print (non-ASCII in the help text).

4. Confirm CSI stream

# Serial monitor (use pyserial — idf.py monitor hangs in a subprocess)
/c/Espressif/tools/python/v5.4/venv/Scripts/python.exe -c "
import serial, time
ser = serial.Serial('COM8', 115200, timeout=1); start = time.time()
while time.time() - start < 15:
    line = ser.readline()
    if line: print(line.decode('utf-8', errors='replace').strip())
ser.close()
"

Then start the sink and watch frames arrive:

cd v2 && cargo run -p wifi-densepose-sensing-server   # listens for ESP32 UDP CSI

Common issues

SymptomCauseFix
MSys/Mingw is no longer supportedESP-IDF detected Git BashUse the Python-subprocess command above with MSYSTEM* stripped
cmd.exe /C hangsInteractive prompt from Git BashDon't use cmd.exe /C — use the Python subprocess
cmake not foundWrong pathIt's cmake\3.30.2\cmake-3.30.2-windows-x86_64\bin, not cmake\3.30.2\bin
python_env not foundMissing env varSet IDF_PYTHON_ENV_PATH=C:\Espressif\tools\python\v5.4\venv
No CSI frames at the sinkWiFi not provisioned, wrong channel, or MAC filter too tightRe-run provision.py; try --channel matching your AP; drop --filter-mac
False fall alertsOld fall_thresh defaultIssue #263 raised it to 15.0 rad/s² + debounce — reflash latest firmware

Firmware release process (for maintainers)

  1. Build 8MB from sdkconfig.defaults.template (no mock)
  2. Build 4MB from sdkconfig.defaults.4mb (no mock)
  3. Save 6 binaries: esp32-csi-node.bin, bootloader.bin, partition-table.bin, ota_data_initial.bin, esp32-csi-node-4mb.bin, partition-table-4mb.bin
  4. git tag v0.X.Y-esp32 && git push origin v0.X.Y-esp32
  5. gh release create v0.X.Y-esp32 <binaries> --title "..." --notes-file ...
  6. Verify on real hardware (COM8) before publishing — always test with real WiFi CSI, not mock mode (mock missed the Kconfig threshold bug)

Reference

  • CLAUDE.local.md — exact ESP-IDF build env, paths, QEMU CI notes
  • firmware/esp32-csi-node/ — C firmware (channel hopping, NVS config, TDM protocol)
  • docs/adr/ADR-028-esp32-capability-audit.md, docs/build-guide.md, docs/TROUBLESHOOTING.md

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Build advanced AgentDB workflows with database synchronization, multiple databases, and search that combines meaning with attribute filters. Covers similarity measures, diverse search results, and operational patterns for distributed AI applications.

中文简介正在准备中。当前显示英语简介。

  • Sharing stored patterns across multiple AgentDB instances
  • Filtering semantic search by date or category
  • Separating knowledge and conversation databases
ruvnet/RuView9.9万2026年10月18日 更新

Create AgentDB learning plugins that use recorded experience to improve agent decisions. Choose a learning method, store states, actions, and rewards, train models, and evaluate suggested actions through CLI and API workflows.

中文简介正在准备中。当前显示英语简介。

  • Train agents from historical experience
  • Build decision-making for games and navigation
  • Combine experience from multiple agents for training
ruvnet/RuView9.9万2026年10月18日 更新

Build AI agents that retain conversation history, user preferences, and useful interaction patterns with AgentDB. The skill covers persistent storage, meaning memories survive between sessions, plus retrieval, context management, and ReasoningBank integration.

中文简介正在准备中。当前显示英语简介。

  • Add conversation history to a chat system
  • Remember user preferences across sessions
  • Reuse patterns from successful interactions
ruvnet/RuView9.9万2026年10月18日 更新

Tune AgentDB memory use and search speed through quantization, which stores vectors more compactly, search indexes, caching, and batch operations. Includes configuration examples and benchmarks to help balance accuracy, speed, and storage as datasets grow.

中文简介正在准备中。当前显示英语简介。

  • Reduce memory use in an AgentDB application
  • Tune search speed while preserving accuracy
  • Plan settings for millions of vectors
ruvnet/RuView9.9万2026年10月18日 更新

Build document search with AgentDB that finds related content by meaning. Store documents as numerical representations, combine similarity search with metadata filters, and retrieve relevant passages for systems that generate answers using source material.

中文简介正在准备中。当前显示英语简介。

  • Build answers grounded in retrieved documents
  • Add meaning-based search to a knowledge base
  • Find documents with similar content
ruvnet/RuView9.9万2026年10月18日 更新

browser

免费

Automate browser tasks with agent-browser, using snapshots that label page elements for the agent. Handle login flows, fill and submit forms, extract page information, and capture screenshots through a repeatable navigation and interaction workflow.

中文简介正在准备中。当前显示英语简介。

  • Automating login flows
  • Filling and submitting web forms
  • Extracting product names, prices, and links
ruvnet/RuView9.9万2026年10月18日 更新

查看 ruvnet 的全部技能

报告此技能的问题