Does anyone have this working in modern kernels? I’ve tried a bunch of things including the boot loader config above, but no audio. alsamixer shows just one default audio device, which I think is just a placeholder for Pipewire. pw-cli ls Node shows no sound devices.
In my case, it’s a headless Raspberry Pi 4 (no GUI) and I’m trying to use the headphone jack.
You can also add hdmi_ignore_edid_audio=1 under dtparam=audio=on if you’re running headless and want to force use of the headphones jack instead of HDMI. Although I’m not sure it’s strictly needed.
I learned a few hard lessons that made this much harder to troubleshoot than I expected. Some of these can be attributed to running headless, though.
The wiki instructions were outdated and made the situation worse. In particular, the hardware channel device tree tweaks aren’t necessary and actually broke my rebuilds. I have updated the wiki.
Pipewire/WirePlumber might not start in time if you rely on socket activation. In my case mplayer would not play audio on the first attempt after a reboot, but would be fine on subsequent attempts. I was able to fix this by starting WirePlumber manually: systemctl --user start wireplumber.service
Even if you manually start Pipewire/WirePlumber, audio doesn’t work if you logged in via SSH. Only interactive keyboard sessions work for me. I haven’t solved this one yet. Any advice?
Can you share your full config? Adding these options didn’t work for me, I think I’m doing something else wrong. When I try to run aplay -l, it tells me there are no sound cards available and aplay -L just shows the null card.
I have also tried enabling pipewire, but that didn’t seem to help.
EDIT: /proc/asound/cards actually shows the headphone output, maybe the issue is that I’m trying to run the aplay commands over SSH, I’ve read that some people are having issues with that.
I have noticed there’s still a race condition that prevents audio from working if I start playing media immediately after login (e.g. via an SSH command). I worked around this by adding a small delay (sleep 5) before invoking the media player. There’s probably a better way, but I’m tired of fighting with it.
Here’s my full config if it helps: aquaria (Raspberry Pi 4).