Skip to content

I2S audio device (snd_rpi_rpi_dac) not detected on boot without poll_ms parameter #7344

@getshket

Description

@getshket

Describe the bug

On cold boot, the i2s-dac Device Tree Overlay fails to load automatically. The I2S sound card does not appear in aplay -l. Manual loading via sudo dtoverlay i2s-dac works correctly. Adding poll_ms=1000 to the overlay parameters fixes the issue.

Expected behavior:
The i2s-dac overlay should load at boot without requiring extra delay parameters.

Actual behavior:
After boot, aplay -l shows only HDMI:
**** List of PLAYBACK Hardware Devices ****
card 0: vc4hdmi [vc4-hdmi], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
The I2S card is missing. dmesg | grep -i i2s returns nothing.

Steps to reproduce the behaviour

  1. Connect an I2S DAC (e.g., ES9039q2m in slave mode with its own MCLK) to Raspberry Pi Zero 2W GPIO.
  2. Add the following line to /boot/firmware/config.txt:
    dtoverlay=i2s-dac
  3. Perform a cold boot (remove power completely, then reapply).
  4. Once the system boots, run aplay -l.
  5. Observe that the I2S sound card (snd_rpi_rpi_dac) is missing from the list.

Device (s)

Raspberry Pi Zero 2 W

System

Raspberry Pi reference 2026-03-02
Generated using pi-gen, https://github.com/RPi-Distro/pi-gen, 92d15443192abdc1a2dd7921df09e3fb6f804f59, stage3
version cd866525580337c0aee4b25880e1f5f9f674fb24 (clean) (release) (start)
Linux Moode 6.12.62+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.12.62-1+rpt1 (2025-12-18) aarch64 GNU/Linux

Logs

[ 400.250694] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /soc/i2s@7e203000/status
[ 400.250748] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /soc/sound/compatible
[ 400.250763] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /soc/sound/i2s-controller
[ 400.250778] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /soc/sound/status
[ 400.349361] snd_soc_pcm1794a: loading out-of-tree module taints kernel.

Additional context

  • The I2S DAC (ES9039q2m) operates in slave mode with its own MCLK; Raspberry Pi is the I2S master.
  • The issue occurs intermittently (race condition) — the kernel sometimes initializes the I2S controller before the DAC hardware is ready.
  • Adding poll_ms=1000 to the overlay (dtoverlay=i2s-dac,poll_ms=1000) works as a reliable workaround.
  • Tim Curtis from moOde Audio confirmed that device detection is handled entirely by the Linux kernel and ALSA, not by moOde itself, and recommended reporting this issue here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions