Skip to content

Change I2S Full Duplex Component - #3

Merged
TrevorSchirmer merged 3 commits into
betafrom
ChangeFullDuplex
Oct 8, 2026
Merged

TrevorSchirmer merged 3 commits into
betafrom
ChangeFullDuplex

Conversation

@TrevorSchirmer

@TrevorSchirmer TrevorSchirmer commented Oct 8, 2026 •

Copy link
Copy Markdown
Member

Version: 26.10.8.1

What does this implement/fix?

  • Updates the full duplex component

Types of changes

  • Bugfix (fixed change that fixes an issue)
  • New feature (thanks!)
  • Breaking change (repair/feature that breaks existing functionality)
  • Dependency Update - Does not publish
  • Other - Does not publish
  • Website of github readme file update - Does not publish
  • Github workflows - Does not publish

Checklist / Checklijst:

  • The code change has been tested and works locally
  • [] The code change has not yet been tested

If user-visible functionality or configuration variables are added/modified:

  • Added/updated documentation for the web page

Summary by CodeRabbit

  • New Features
    • ESPHome audio builds now use upstream full-duplex I2S support, allowing audio input and output to share an I2S port.
  • Compatibility
    • The minimum ESPHome version is now 2026.10.0 beta 1. Stable releases are excluded from automated builds until version 2026.10.0 is available.

Replace the vendored i2s_audio (2026.9.0 + #16882 with local fixes) with
2026.9.1's i2s_audio plus the full duplex changes from #19959, the
implementation on track upstream.

The bus now allocates the TX/RX pair once at boot and initializes RX
first, so RX drives the shared clocks and MCLK for the PCM1808. TX starts
and stops with each playback session from a fresh preload, which keeps
speaker timestamps exact without the old realign workaround.

Only the PR's own changes are applied; its dev base needs a newer
esp-audio-libs and audio_dac than 2026.9.1. Core.yaml is unchanged and
already meets the PR's validation rules.
Drop the vendored i2s_audio and load full duplex straight from #19959,
pinned to its head commit. The PR builds on ESPHome 2026.10, so:
- min_version is now 2026.10.0b1, giving older ESPHome a clear error
- build-beta.yml builds with ESPHome beta
- CI and weekly checks skip stable until 2026.10.0 ships

build.yml (main) stays on stable, so stable firmware can't be published
on a beta ESPHome. Once #19959 ships in a release, remove the
external_components block and restore stable in the workflows.
@github-actions github-actions Bot added the bugfix Something isn't working label Oct 8, 2026
@coderabbitai

coderabbitai Bot commented Oct 8, 2026

Copy link
Copy Markdown

Review in Change Stack →

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: e26211cf-92fe-411b-bb1c-b0419a51f66f
📥 Commits

Reviewing files that changed from the base of the PR and between 391565a and 6df5f43.

📒 Files selected for processing (21)
  • .github/workflows/build-beta.yml
  • .github/workflows/ci.yml
  • .github/workflows/weekly.yml
  • Integrations/ESPHome/Core.yaml
  • Integrations/ESPHome/components/i2s_audio/README.md
  • Integrations/ESPHome/components/i2s_audio/__init__.py
  • Integrations/ESPHome/components/i2s_audio/i2s_audio.cpp
  • Integrations/ESPHome/components/i2s_audio/i2s_audio.h
  • Integrations/ESPHome/components/i2s_audio/media_player/__init__.py
  • Integrations/ESPHome/components/i2s_audio/microphone/__init__.py
  • Integrations/ESPHome/components/i2s_audio/microphone/i2s_audio_microphone.cpp
  • Integrations/ESPHome/components/i2s_audio/microphone/i2s_audio_microphone.h
  • Integrations/ESPHome/components/i2s_audio/speaker/__init__.py
  • Integrations/ESPHome/components/i2s_audio/speaker/i2s_audio_spdif.cpp
  • Integrations/ESPHome/components/i2s_audio/speaker/i2s_audio_spdif.h
  • Integrations/ESPHome/components/i2s_audio/speaker/i2s_audio_speaker.cpp
  • Integrations/ESPHome/components/i2s_audio/speaker/i2s_audio_speaker.h
  • Integrations/ESPHome/components/i2s_audio/speaker/i2s_audio_speaker_standard.cpp
  • Integrations/ESPHome/components/i2s_audio/speaker/i2s_audio_speaker_standard.h
  • Integrations/ESPHome/components/i2s_audio/speaker/spdif_encoder.cpp
  • Integrations/ESPHome/components/i2s_audio/speaker/spdif_encoder.h
 _____________________________
< The Da Vinci Code Reviewer. >
 -----------------------------
  \
   \   (\__/)
       (•ㅅ•)
       /   づ
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@TrevorSchirmer
TrevorSchirmer merged commit 3e162ca into beta Oct 8, 2026
5 of 7 checks passed
@TrevorSchirmer
TrevorSchirmer deleted the ChangeFullDuplex branch October 8, 2026 20:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugfix Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants