Updated: 2019 Jul 19

Fixing Dell XPS 13 Audio Popping

The Dell XPS 13 has been my primary computer for the past couple months. It has worked great but recently I noticed some audio crackling when starting/stopping playback.

Solution

I found the problem was an issue with tlp, a fantastic tool that helps save power on Linux laptops. Issue was it was cutting power to my audio jack when not in use which caused the loud crackling when it was turned on and off.

Check if tlp is running

systemctl status tlp

Example output:

‚óŹ tlp.service - TLP system startup/shutdown
   Loaded: loaded (/usr/lib/systemd/system/tlp.service; enabled; vendor preset: enabled)
   Active: active (exited) since Fri 2017-05-12 00:27:00 EDT; 59min ago
     Docs: http://linrunner.de/tlp
  Process: 1574 ExecStart=/usr/sbin/tlp init start (code=exited, status=0/SUCCESS)
 Main PID: 1574 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 4915)
   CGroup: /system.slice/tlp.service

May 12 00:27:00 XPS systemd[1]: Starting TLP system startup/shutdown...
May 12 00:27:00 XPS tlp[1574]: Applying power save settings...done.
May 12 00:27:00 XPS tlp[1574]: Setting battery charge thresholds...done.
May 12 00:27:00 XPS systemd[1]: Started TLP system startup/shutdown.

In the output you should see the 3rd line "Active: active" if tlp is running. Otherwise this solution likely won't fix your problem.

Edit your tlp config

To solve this edit /etc/default/tlp (for beginners use "gksudo gedit /etc/default/tlp" or "sudo nano /etc/default/tlp").

Change lines:

SOUND_POWER_SAVE_ON_AC=0
SOUND_POWER_SAVE_ON_BAT=1

To this:

SOUND_POWER_SAVE_ON_AC=0
SOUND_POWER_SAVE_ON_BAT=0

Then restart your computer.

That will stop tlp from turning your audio on and off when audio stops playing. You may loose some slight power savings, but I haven't noticed anything significant. So it's worth doing just to ditch the annoying crackling!

Update: Headphone Audio Whining

Recently I have noticed a constant whining when using headphones. The Arch Wiki provides a solution that seems to work:

amixer -c 0 cset 'numid=10' 1