Problem
SMSL USB AUDIO DAC (Thesycon 152a:85dd) produces audible pops/clicks when notifications or other short sounds play after a period of silence.
Root Cause
WirePlumber suspends audio nodes after 5 seconds of idle time (suspend-node.lua). When a sound plays, PipeWire has to reopen the ALSA device, causing a pop from the USB DAC powering back up.
Confirmed by checking node state going running -> idle -> suspended via pw-top and pw-cli.
Environment
- OS: CachyOS (Arch-based)
- PipeWire: 1.6.4
- WirePlumber: 0.5.14
- DAC: SMSL USB AUDIO (usb-SMSL_SMSL_USB_AUDIO-00, card 0)
- Node name:
alsa_output.usb-SMSL_SMSL_USB_AUDIO-00.analog-stereo
Fix
1. Disable Auto-Suspend for the DAC
Create ~/.config/wireplumber/wireplumber.conf.d/10-smsl-dac-no-suspend.conf:
monitor.alsa.rules = [
{
matches = [
{
node.name = "~alsa_output.usb-SMSL_SMSL_USB_AUDIO.*"
}
]
actions = {
update-props = {
session.suspend-timeout-seconds = 0
}
}
}
]
Setting session.suspend-timeout-seconds = 0 causes the suspend-node.lua hook to skip suspending this node. After audio plays, the node stays in "idle" with the ALSA device open instead of closing it.
2. Tune PipeWire Quantum (Optional)
Create ~/.config/pipewire/pipewire.conf.d/10-quantum-tuning.conf:
context.properties = {
default.clock.rate = 48000
default.clock.quantum = 1024
default.clock.min-quantum = 256
default.clock.max-quantum = 2048
}
Larger quantum buffers reduce the chance of xruns with USB audio devices.
3. Apply Changes
systemctl --user restart wireplumber pipewire pipewire-pulse
Verification
- Play a sound to wake the DAC:
speaker-test -D default -c 2 -l 1 -t sine -f 1000
- Wait 10+ seconds and check node state:
pw-cli info <NODE_ID> | grep state
Should show "idle" — not "suspended".
- Confirm the suspend timeout property is set:
wpctl inspect <NODE_ID> | grep suspend-timeout
Should show session.suspend-timeout-seconds = "0".
- Check the ALSA device stays open:
cat /proc/asound/card0/pcm0p/sub0/hw_params
Should show active format/rate instead of closed.
Find the current node ID with wpctl status.
Notes
- The first sound after a fresh reboot may still produce a pop — this is the DAC hardware initializing and only happens once.
- The rule uses a regex match (
~alsa_output.usb-SMSL_SMSL_USB_AUDIO.*) to match all profiles (analog-stereo, etc.) on the SMSL device. - This same approach works for other USB DACs — adjust the
node.namepattern to match your device.
Leave a Reply