This is in reference to the PipeWire-related audio muting, delay, or cut-off issue reported here
If you are facing the same or a similar problem, here’s the workaround that actually works.
Strangely, this issue only occurs when using the laptop’s internal speakers. When I plug in headphones, the audio plays normally — with no delays, cut-offs, or muting. Logically, one might expect audio delays or cut-offs to be more likely when an external device such as headphones is connected, but surprisingly, that is not the case. Go figure!?!
As I understand, PipeWire is designed to suspend audio streams when no audio is playing in order to save system resources. But in my case, it caused more trouble and headache than it was worth! It’s like trying to save pennies while losing thousands! It just doesn’t make sense!
When a new audio stream starts (e.g. a YouTube video, music player, or system sound), PipeWire has to restart or re-initialize the audio server. This re-initialization introduces a brief hiccup, causing audio delay, cut-off, or momentary muting.
The issue is especially noticeable on MSI laptops with the Tiger Lake-H HD Audio Controller.
This may or may not be a hardware defect. It may simply be how the PipeWire sound server behaves.
I tried every configuration tweak and suggestion available for PipeWire. None worked!!! Even keeping a silent (inaudible) audio loop running in the background failed, because PipeWire only stays fully active if it detects audible sound. But you don’t want to play quiet “dummy audio” that you can still hear while watching a video or listening to music. That ruins the experience!
So the key is:
The sound must be audible to the system (so PipeWire stays active).
The sound must be inaudible to you (so it doesn’t interfere with your experience/enjoyment).
I figured, playing a high-frequency tone above the range of human hearing (around 19–20 kHz) works perfectly.
Step 1. Install SoX (if not installed):
sudo pacman -S sox
Step 2. Run this command in the terminal:
nohup play -n synth sine 19000 vol 0.01 repeat - > /dev/null 2>&1 &
This generates a 19 kHz tone at extremely low volume. You won’t hear it, but PipeWire will, keeping the audio system alive at all times.
To auto-start at boot (systemd user service):
Create a service file in ~/.config/systemd/user/
and name it as you want.
Paste the following into your service file:
[Unit]
Description=Keep audio alive (prevent muting/delay)
After=sound.target
[Service]
ExecStart=/usr/bin/play -n synth sine 19000 vol 0.01 repeat -
Restart=always
[Install]
WantedBy=default.target
To reload and enable the service:
systemctl --user daemon-reload
systemctl --user enable <name-of-your-choice>.service
systemctl --user start <name-of-your-choice>.service
I do hope this information helps someone out there avoid the frustration, wasted time, and countless hours of trial and error that I had to go through.