Workaround to USB DAC hardware idling causing fade-in on playback

Spent way too many hours trying to fix this issue, so I figured I’d share my solution here in case it helps somebody else. Hope this is a good place to put it.

I had to resort to using a USB-C to Aux w/ integrated DAC solution since my motherboard’s audio chipset is apparently incompatible with Linux for the time being (long story), and after a while I noticed that audio kept “fading in”, most obnoxiously with notification sounds where you basically couldn’t hear them play, among other things.

After painfully ruling out if it was a usb audio driver issue, usb autosuspend, or pipewire itself, and many circular web searches and LLM queries, I was finally able to determine that the issue was with the DAC itself; it has a hardware quirk where it goes into an idle state, which causes the odd fade-in effect.

So, the solution was to create a config file in .config/wireplumber/wireplumber.conf.d

monitor.alsa.rules = [
  {
    matches = [
      {
        node.name = "~alsa_output.*"
      }
    ]
    actions = {
      update-props = {
        session.suspend-timeout-seconds = 0
        node.always-process = true
        dither.method = "shaped5"
        dither.noise = 2
      }
    }
  }
]

Which creates an inaudible stream of audio that keeps the DAC from entering an idle state, fixing the issue.