Skip to content

Add JC ESP32-P4 M3 audio firmware support - #55

Open
ssjgesus wants to merge 4 commits into
MoonModules:mainfrom
ssjgesus:agent/jc-esp32p4-m3-audio
Open

Add JC ESP32-P4 M3 audio firmware support#55
ssjgesus wants to merge 4 commits into
MoonModules:mainfrom
ssjgesus:agent/jc-esp32p4-m3-audio

Conversation

@ssjgesus

Copy link
Copy Markdown

Summary

Adds a dedicated firmware configuration and hardware profile for the JC-ESP32P4-M3-DEV, including working support for its onboard ES8311 microphone codec for ProjectMM audio-reactive effects.

Changes

  • Adds the "esp32p4-jc-m3-eth" firmware variant.
  • Adds a "JC-ESP32P4-M3-DEV" device-model entry.
  • Configures the onboard ES8311 codec:
    • I²C address: "0x18"
    • SDA: GPIO7
    • SCL: GPIO8
    • BCLK/SCK: GPIO12
    • WS/LRCLK: GPIO10
    • MCLK: GPIO13
    • Microphone data: GPIO48
  • Keeps the microphone data pin runtime-configurable.
  • Corrects the ES8311 address format at the "esp_codec_dev" driver boundary.
  • Configures capture using 32-bit I²S words to match ProjectMM’s audio pipeline.
  • Uses the ES8311 codec-control interface directly, allowing ProjectMM to continue managing the I²S data path.
  • Adds board documentation, firmware manifest projections and focused regression coverage.
  • Adds a GitHub Actions workflow for building a complete ESP32-P4 flash package.

Validation

The following checks pass:

  • Python test suite
  • JavaScript test suite
  • Manifest and device-catalog validation
  • Specification and scenario checks
  • Desktop warnings-as-errors build
  • ESP32-P4 firmware build using ESP-IDF "v6.1-beta1"
  • Sanitizer checks

Hardware validation

The firmware has been successfully installed and tested on a physical JC-ESP32P4-M3-DEV.

The onboard ES8311 microphone works with the configured pinout, and ProjectMM’s audio service successfully receives microphone input for audio-reactive effects.

References

ssjgesus added 4 commits July 26, 2026 16:38
Add a dedicated JC-ESP32P4-M3-DEV firmware variant so its ES8311 microphone feeds audio-reactive effects with the board's correct codec configuration and I2S framing.

KPI: not collected; no ESP32 hardware is connected in this workspace, and the existing desktop test target is blocked by the pre-existing NetworkModule.h format-truncation warning.

Core:
- ESP32 platform: configure the JC board's ES8311 on GPIO7/8 with MCLK GPIO13, convert its 7-bit address at the driver seam, and capture 32-bit I2S samples.

Scripts / MoonDeck:
- ESP32 builder: add the esp32p4-jc-m3-eth firmware and its board-specific sdkconfig fragment.

Tests:
- JC firmware contracts: pin codec selection, dependency gating, address conversion, word size, and catalog audio pins.

Docs / CI:
- Device catalog and reference: document the JC board and publish GPIO48 as the default mic data pin while keeping it live-editable.
- GitHub Actions: build and retain a complete flash package for the JC firmware branch.
Run the dedicated ESP32-P4 firmware build when the branch opens or updates a pull request, preserving the complete flash package as a GitHub Actions artifact.

Docs / CI:
- GitHub Actions: trigger the JC firmware build for pull requests targeting main.
Keep the bootloader and partition-table directories in the firmware artifact so the included ESP-IDF flash arguments resolve every binary without manual path edits.

Docs / CI:
- GitHub Actions: stage the JC firmware artifact with its original ESP-IDF directory layout.
Configure the ES8311 codec interface directly because ProjectMM owns the I2S data path. The esp_codec_dev high-level wrapper requires a non-null data_if and previously failed before audio capture started.

Pin the validated esp_codec_dev 1.6 minor line and extend the JC firmware regression check.
@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 9821372b-1249-4dd2-b242-e4b21305fece

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ssjgesus
ssjgesus marked this pull request as ready for review July 27, 2026 19:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant