Skip to content

Can the firmware do CSI capture only on plain ESP32 (LX6)? #650

@udiNur

Description

@udiNur

I want to use an original ESP32 board as a dumb CSI source — capture
frames in the promiscuous callback, ship them off the chip over UDP
or serial, do all the DSP and pose work elsewhere. No on-device DSP,
no display, no mmWave, no WASM.

I know CLAUDE.md says original ESP32 isn't supported. But reading
the reasoning (DSP throughput, dual-core pinning, pose fusion), it
looks like it's about what the chip can't do on-device. If I strip
all that and only run the capture path, does the unsupported label
still apply?

Board is an ESP32-D0WD-V3 rev v3.1, dual-core LX6, 240 MHz, 4 MB
flash. PSRAM presence unconfirmed (esptool can't read external PSRAM
via efuse on classic ESP32). Host is macOS arm64.

What I checked locally before opening this:

  • No S3-only APIs in firmware/esp32-csi-node/main/ — no esp_psram_*,
    no USB-JTAG, no LCD_CAM, no vector intrinsics.
  • The CSI calls in csi_collector.c look chip-agnostic.
  • partitions_4mb.csv has no S3 markers, fits my flash.

So the open questions:

  1. Is the unsupported tag about WiFi MAC / CSI report format
    differences, or just about DSP headroom? If it's just headroom,
    capture-only sidesteps it.
  2. Are the CSI fields (subcarrier count, phase format, antenna layout,
    secondary-channel behavior) the same coming off LX6 vs LX7? Anything
    in signal/ or ruvsense/ calibrated to S3 quirks that downstream
    code would have to compensate for?
  3. The 50 Hz throttle in csi_collector.c:70-86 mitigates the
    wDev_ProcessFiq cache race — possibly related to ESP32-S3 CSI crash: SPI flash cache race in wDev_ProcessFiq during promiscuous mode #396. Does that
    race look the same on LX6 or worse?
  4. Is there a Kconfig path to compile out edge_processing / display /
    mmWave / WASM, or is it source-level?
  5. Does firmware/esp32-csi-node: IDF 6 build, HE CSI config, unicore DSP, provision chip detect #522's chip-detect handle plain ESP32, or only C6/S3?

#522 looks like the right base for this. Happy to take a stab at it
and open a draft PR if the answers above don't show a hard blocker.
Don't want to spend the time if there's something I'm missing.

Refs: #522, #524, #396, #560.

Metadata

Metadata

Assignees

No one assigned

    Labels

    hardwarequestionFurther information is requested

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions