Getting voice input for Clyde Code on pi/400
I just spent about an hour and about 20K tokens troubleshooting and resolving this
Pi/400
AK-2 mic (Amazon)
Testing. One, two, three, four,
● Voice mode is working — that transcription came through perfectly. The fix was two parts:
1. ALSA asym error — sysdefault was resolving to the vc4-hdmi HDMI card's playback-only asym PCM. Fixed
by routing sysdefault → PipeWire in both ~/.asoundrc and /etc/alsa/conf.d/98-vc4-hdmi-capture-fix.conf.
2. No audio detected — PipeWire had no default capture source set. Fixed with wpctl set-default 90 (AK-2
Mono).
✻ Worked for 6s
❯ how could we have done this more efficiently, and is there any value in posting what we worked through
for others?
● More efficient path:
The key diagnostic that cracked it was arecord -D sysdefault /dev/null — that reproduced the error in one
command. We should have done that in the first session rather than spending time on:
- Searching the binary for PortAudio symbols (the JS source was right there)
- Building the C config-tree explorer (the arecord reproduction was enough)
- Multiple .asoundrc iteration attempts before finding sysdefault as the culprit
The second issue (no audio detected) was a wpctl status command away from the start — checking for * on
the default source should be part of any PipeWire mic setup checklist.
Efficient checklist for this problem class:
1. wpctl status — is the mic the default source (*)?
2. arecord -D default /dev/null -d 1 — does default capture work?
3. arecord -D sysdefault /dev/null -d 1 — does sysdefault work?
4. If not → add pcm.!sysdefault { type pipewire } to /etc/alsa/conf.d/
---
Is it worth posting?
Yes — this is a real gap. Searching for "ALSA asym capture slave not defined PipeWire" returns almost
nothing useful. The combination of:
- Pi 5 (vc4-hdmi cards)
- PipeWire as ALSA backend
- Software that uses sysdefault instead of default (Claude Code's native audio module)
- WirePlumber not auto-selecting the default source