Fixing PipeWire Lock Issues on Arch Linux: Why Video & Audio Playback Broke
The other day, I ran into a frustrating issue on my Arch Linux setup:
no video would play anywhere , not in Chrome, not in Firefox, and not even locally with mpv. The files loaded, but playback simply wouldn’t start.
Digging deeper revealed that the culprit wasn’t the browser or the media player at all, but PipeWire, the modern Linux audio and video server.
Diagnosing the Problem
First stop: checking the PipeWire service.
systemctl --user status pipewire
Output:
× pipewire.service - PipeWire Multimedia Service
Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled)
Active: failed (Result: exit-code)
Main PID: 9386 (code=exited, status=245/KSM)
Sep 17 23:12:53 archlinux systemd[762]: pipewire.service: Failed with result 'exit-code'.
Sep 17 23:12:53 archlinux systemd[762]: Failed to start PipeWire Multimedia Service.
So PipeWire wasn’t starting. To get more detail, I ran:
pipewire -v
This showed the key error:
[E] unable to lock lockfile '/run/user/1000/pipewire-0.lock': Resource temporarily unavailable
[E] failed to create context: Resource temporarily unavailable
Translation: PipeWire thought it was already running because the lock file was still in place, even though the process was broken.
This happens if PipeWire crashes, hangs during suspend, or leaves behind a stale lock file.
The Quick Fix
To recover, I killed all PipeWire-related processes:
killall -9 pipewire
killall -9 pipewire-pulse
killall -9 wireplumber
Then restarted the services:
systemctl --user restart pipewire pipewire-pulse wireplumber
Instantly, video and audio playback started working again.
Why the -9 Flag?
Normally, killall sends SIGTERM (15), which asks a process to exit cleanly. But when a process is stuck, it can ignore this signal.
killall -9 sends SIGKILL (9), which forces the kernel to immediately terminate the process. It skips all cleanup, but it guarantees the process is gone.
In my case, this was necessary because PipeWire was in a bad state and wouldn’t shut down otherwise.
Preventing the Issue
If you run into this again, here’s a safe recovery sequence:
# First try a graceful stop
killall pipewire pipewire-pulse wireplumber
# If that fails, force it
killall -9 pipewire pipewire-pulse wireplumber
# Clean up stale lock files (if any remain)
rm -f /run/user/1000/pipewire-*.lock
# Restart services
systemctl --user restart pipewire pipewire-pulse wireplumber
Also, make sure you don’t have PulseAudio installed alongside PipeWire, as they can conflict:
pacman -Qs pulseaudio
Remove if needed:
sudo pacman -Rns pulseaudio
Takeaway
When video or audio playback suddenly stops working on Linux, the problem isn’t always your browser or media player, it might be PipeWire itself.
The root cause in this case was a stale lock file that tricked PipeWire into thinking it was already running. The fix was as simple as killing the stuck processes and restarting the services.
Now I’ve got a little one-liner script handy in case it ever happens again, but hopefully, PipeWire behaves better going forward!