[RESPONDED] Headphone jack intermittent noise?

I tried to boot Fedora Workstation 41 and CachyOS on a Live USB, and lo and behold, no crackling noises. Tried Manjaro on Live USB, and still noises. So it’s probably a software issue, something to do with Manjaro’s settings for PipeWire.

I ended up installing CachyOS as I wanted an Arch-based distro, and so far so good.

Ok, so far so not good. I booted up today and the crackling was back.

It still works fine on the CachyOS & Fedora Live Images, and I suspected it might had something to do with the kernel, as the one on the CachyOS image is 6.12.6-1-cachyos and the latest one at the time of writting is 6.12.9-3-cachyos, but I downgraded the kernel back to 6.12.3-1 and the problem was still there. The version of the sound server (PipeWire) is still the same, 1.2.7.

So, I changed the sound server from new and shiny PipeWire to “good” old PulseAudio, and… It works!

You just have to install PulseAudio. E.g. for Arch-based distros:

sudo pacman -Syu pulseaudio pulseaudio-alsa pulseaudio-bluetooth

And then test it works (you might need to restart the application you use to test it, e.g. Google Chrome – I use a simple online tone generator) by stopping PipeWire with:

systemctl --user stop pipewire.socket

If it fixes it, you can disable PipeWire from launching on startup with:

sudo systemctl --global disable pipewire.service

TIP: you can see your current audio server with inxi -A:

$ inxi -A
Audio:
  Device-1: Intel Meteor Lake-P HD Audio driver: snd_hda_intel
  API: ALSA v: k6.12.9-3-cachyos status: kernel-api
  Server-1: PulseAudio v: 17.0-43-g3e2bb status: active

This does not help in my case, sadly.
Running latest stable Fedora on my FW13 13th gen with the i7-1360P

I updated the firmware through LVFS (fingerprint sensor v. 01000334, Intel Management Engine v. 2141, UEFI dbx v. 20241101, BIOS v. 0.0.3.4 for the Intel® Core™ Ultra Series 1), installed the brand new 6.13.0 kernel, and it now works with PipeWire!

I don’t know what exactly fixed it, but I’m very happy.

yeah, it came back, but I found something

Wireplumber version 0.5 no longer supports Lua configuration scripts (see Migrating configuration from 0.4 — WirePlumber 0.5.7 documentation), therefore it will ignore this type of script.

For newer versions, add a /usr/share/wireplumber/wireplumber.conf.d/51-fix-crackle.conf file (or /etc/wireplumber/wireplumber.conf.d/51-fix-crackle.conf to keep it out of /usr/ as @John_Flatness suggests) with the following:

monitor.alsa.rules = [
  {
    matches = [
      {
        node.name = "alsa_output.pci-0000_00_1f.3.analog-stereo"
      }
    ]
    actions = {
      update-props = {
        audio.format = "S16LE",
      }
    }
  }
]

Also, instead of restarting the computer, you can just restart PipeWire and Wireplumber:

systemctl --user restart pipewire.socket wireplumber.service

TIP: you can see debug information about PipeWire & Wireplumber with:

systemctl --user status pipewire{,-pulse} wireplumber

Other tip, to see the format of current playing audio:

cat /proc/asound/card0/pcm0p/sub0/hw_params
access: MMAP_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 48000 (48000/1)
period_size: 1024
buffer_size: 32768