Problem
Chrome plays no audio. Firefox, VLC, and system sounds all work. No settings were changed.
Tested on Kubuntu 25.10, PipeWire 1.4.7. Applies to Kubuntu ≥ 22.10 / Ubuntu ≥ 23.04.
Confirm you’re on PipeWire:
pactl info | grep "Server Name"
# Expect: PulseAudio (on PipeWire x.x.x)
Fix
1. Check pavucontrol first
sudo apt install pavucontrol && pavucontrol
Play audio in Chrome. On the Playback tab, check that Chrome is:
- not muted
- volume > 0
- routed to an output device that actually exists (not a disconnected Bluetooth headset or unplugged HDMI)
Fix there if possible. If Chrome is routed correctly but still silent, continue.
2. Reset PipeWire state
rm -rf ~/.local/state/wireplumber/
rm -rf ~/.local/state/pipewire/media-session.d/
systemctl --user restart wireplumber pipewire pipewire-pulse
pkill -f chrome
Relaunch Chrome. Done.
Still silent? Inspect the routing
Before assuming the worst, look at what PipeWire actually sees. wpctl ships with WirePlumber, so it’s already installed:
wpctl status
This lists every sink and marks the default with a *. If Chrome’s stream is parked on a sink that isn’t the one you’re listening through — or on a device that isn’t physically connected — that’s the ghost-device problem below. Set the right sink as default:
wpctl set-default <SINK_ID>
Note that set-default only changes where new streams get routed — it won’t move Chrome’s already-open stream. Restart Chrome so it reconnects to the new default, or move its current stream directly on the Playback tab of pavucontrol.
Do not use sudo
wireplumber, pipewire, and pipewire-pulse are user services. sudo systemctl --user ... targets root’s session, not yours, and will silently do nothing useful.
Why it works
PipeWire caches per-app routing state in ~/.local/state/. If Chrome last played through a device that no longer exists (dead Bluetooth headset, undocked monitor, suspended USB DAC), PipeWire keeps routing to the ghost device. Other apps often refresh or don’t have stale state, so only Chrome goes silent. Deleting the cache forces PipeWire to rebuild against currently-present devices.
Notes
- Browser data is untouched. Only audio routing state is deleted.
- One-off fix. Not expected to recur unless you frequently hot-swap audio devices.
- Different symptom? If Chrome’s Bluetooth audio stutters or drops to tinny quality rather than going fully silent, that’s a profile problem, not stale routing — see the A2DP profile lock.
PulseAudio (Ubuntu ≤ 22.04) — use instead:
rm -r ~/.config/pulse/* ~/.pulse*
killall pulseaudio