The Problem

PipeWire reports devices as available. Applications claim to be recording. No audio is captured. This is the debugging sequence that actually works.

Step 1 — Verify the device exists at the kernel level

arecord -l
# List all capture hardware devices
# If empty: driver issue, not PipeWire

Step 2 — Check PipeWire sees it

pw-cli list-objects | grep -A5 "Audio/Source"
# Should show your capture device

Step 3 — Check WirePlumber routing

wpctl status
# Look at Sources section
# Active source should have [vol: 1.00] not [vol: 0.00]

Step 4 — Test capture directly via PipeWire

pw-record --target=<node-id> test.wav
# Get node-id from wpctl status output
# Record 5 seconds, play back with pw-play test.wav

Step 5 — Check permissions

ls -la /dev/snd/
# Your user needs to be in the audio group
groups $USER | grep audio
# If not: sudo usermod -aG audio $USER && reboot

Common Culprits

Note
On Fedora, the session manager is wireplumber. On some distros it may be pipewire-media-session. Check which is active before debugging the wrong daemon.