NVIDIA DisplayPort Sound Delay / Cutout

$ inxi -Faz
System:
  Kernel: 5.15.2-2-MANJARO x86_64 bits: 64 compiler: gcc v: 11.1.0
  parameters: BOOT_IMAGE=/boot/vmlinuz-5.15-x86_64
  root=UUID=6c20ae59-86ed-4609-88ba-90590953c0ad rw quiet
  udev.log_priority=3 pcie_aspm=off acpi=force apm=power_off
  Desktop: KDE Plasma 5.23.3 tk: Qt 5.15.2 wm: kwin_x11 vt: 1 dm: SDDM
  Distro: Manjaro Linux base: Arch Linux
Machine:
  Type: Desktop System: Gigabyte product: Z690I AORUS ULTRA DDR4 v: -CF
  serial: <superuser required>
  Mobo: Gigabyte model: Z690I AORUS ULTRA DDR4 v: x.x
  serial: <superuser required> UEFI: American Megatrends LLC. v: F5a
  date: 11/19/2021
CPU:
  Info: 10-Core model: 12th Gen Intel Core i7-12700K bits: 64 type: MT MCP
  arch: Alder Lake family: 6 model-id: 97 (151) stepping: 2 microcode: 15
  cache: L1: 800 KiB L2: 12.5 MiB L3: 25 MiB
  flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
  bogomips: 144440
  Speed: 800 MHz min/max: 800/6300 MHz Core speeds (MHz): 1: 800 2: 800
  3: 800 4: 800 5: 800 6: 800 7: 800 8: 800 9: 801 10: 800 11: 800 12: 809
  13: 800 14: 801 15: 802 16: 802 17: 801 18: 794 19: 806 20: 819
  Vulnerabilities: Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: spec_store_bypass
  mitigation: Speculative Store Bypass disabled via prctl and seccomp
  Type: spectre_v1
  mitigation: usercopy/swapgs barriers and __user pointer sanitization
  Type: spectre_v2 mitigation: Enhanced IBRS, IBPB: conditional, RSB filling
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: NVIDIA vendor: Gigabyte driver: nvidia v: 495.44
  alternate: nouveau,nvidia_drm bus-ID: 01:00.0 chip-ID: 10de:2489
  class-ID: 0300
  Device-2: Logitech HD Pro Webcam C920 type: USB
  driver: snd-usb-audio,uvcvideo bus-ID: 1-8.3:9 chip-ID: 046d:082d
  class-ID: 0102 serial: <filter>
  Display: x11 server: X.Org 1.21.1.1 compositor: kwin_x11 driver:
  loaded: nvidia display-ID: :0 screens: 1
  Screen-1: 0 s-res: 3840x2160 s-dpi: 139 s-size: 702x392mm (27.6x15.4")
  s-diag: 804mm (31.7")
  Monitor-1: DP-0 res: 3840x2160 hz: 60 dpi: 140
  size: 698x393mm (27.5x15.5") diag: 801mm (31.5")
  OpenGL: renderer: NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2
  v: 4.6.0 NVIDIA 495.44 direct render: Yes
Audio:
  Device-1: Intel vendor: Gigabyte driver: snd_hda_intel v: kernel
  alternate: snd_sof_pci_intel_tgl bus-ID: 00:1f.3 chip-ID: 8086:7ad0
  class-ID: 0403
  Device-2: NVIDIA GA104 High Definition Audio vendor: Gigabyte
  driver: snd_hda_intel v: kernel bus-ID: 01:00.1 chip-ID: 10de:228b
  class-ID: 0403
  Device-3: Giga-Byte USB Audio type: USB
  driver: hid-generic,snd-usb-audio,usbhid bus-ID: 1-2:2 chip-ID: 0414:a014
  class-ID: 0300
  Device-4: Logitech HD Pro Webcam C920 type: USB
  driver: snd-usb-audio,uvcvideo bus-ID: 1-8.3:9 chip-ID: 046d:082d
  class-ID: 0102 serial: <filter>
  Sound Server-1: ALSA v: k5.15.2-2-MANJARO running: yes
  Sound Server-2: JACK v: 1.9.19 running: no
  Sound Server-3: PulseAudio v: 15.0 running: no
  Sound Server-4: PipeWire v: 0.3.40 running: yes
Network:
  Device-1: Intel vendor: Rivet Networks driver: iwlwifi v: kernel port: N/A
  bus-ID: 00:14.3 chip-ID: 8086:7af0 class-ID: 0280
  IF: wlo1 state: down mac: <filter>
  Device-2: Intel Ethernet I225-V vendor: Gigabyte driver: igc v: kernel
  port: N/A bus-ID: 04:00.0 chip-ID: 8086:15f3 class-ID: 0200
  IF: enp4s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
Bluetooth:
  Device-1: Intel AX201 Bluetooth type: USB driver: btusb v: 0.8
  bus-ID: 1-14:12 chip-ID: 8087:0026 class-ID: e001
  Report: rfkill ID: hci0 rfk-id: 1 state: up address: see --recommends
Drives:
  Local Storage: total: 2.27 TiB used: 114.85 GiB (4.9%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:2 vendor: Western Digital
  model: WD BLACK SN750 SE 500GB size: 465.76 GiB block-size:
  physical: 512 B logical: 512 B speed: 63.2 Gb/s lanes: 4 type: SSD
  serial: <filter> rev: 711130WD temp: 48.9 C scheme: GPT
  ID-2: /dev/nvme1n1 maj-min: 259:0 vendor: Samsung model: SSD 970 EVO 1TB
  size: 931.51 GiB block-size: physical: 512 B logical: 512 B
  speed: 31.6 Gb/s lanes: 4 type: SSD serial: <filter> rev: 2B2QEXE7
  temp: 38.9 C scheme: GPT
  ID-3: /dev/sda maj-min: 8:0 vendor: HGST (Hitachi) model: HTS721010A9E630
  size: 931.51 GiB block-size: physical: 4096 B logical: 512 B
  speed: 6.0 Gb/s type: HDD rpm: 7200 serial: <filter> rev: A3B0 scheme: GPT
Partition:
  ID-1: / raw-size: 465.46 GiB size: 457.09 GiB (98.20%)
  used: 16.49 GiB (3.6%) fs: ext4 dev: /dev/nvme0n1p2 maj-min: 259:4
  ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
  used: 288 KiB (0.1%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:3
  ID-3: /home raw-size: 931.51 GiB size: 915.82 GiB (98.31%)
  used: 98.36 GiB (10.7%) fs: ext4 dev: /dev/nvme1n1p1 maj-min: 259:1
Swap:
  Kernel: swappiness: 60 (default) cache-pressure: 100 (default)
  ID-1: swap-1 type: file size: 512 MiB used: 0 KiB (0.0%) priority: -2
  file: /swapfile
Sensors:
  System Temperatures: cpu: 27.8 C mobo: 16.8 C gpu: nvidia temp: 47 C
  Fan Speeds (RPM): N/A gpu: nvidia fan: 0%
Info:
  Processes: 428 Uptime: 6m wakeups: 0 Memory: 62.58 GiB
  used: 4.69 GiB (7.5%) Init: systemd v: 249 tool: systemctl Compilers:
  gcc: 11.1.0 Packages: pacman: 1321 lib: 343 Shell: Bash v: 5.1.8
  running-in: terminator inxi: 3.3.09

I read some other topics on this forum related to this and tried a few things. For one, I installed pipewire which disabled pulseaudio and jack as expected.

My displayport audio “works” in the sense that I can eventually hear it, but it seems like there’s a several second delay between an audio signal beginning and it coming out of the speaker. No latency once it gets started, it just takes a second for the monitor to respond to a stream, or for audio data to be sent to it, or something. I will add that sometimes I’ll do something completely benign while a stream is playing from YouTube, such as move the mouse, and the audio will stop, resuming a few seconds later and continuing uninterrupted until some other benign event happens, like moving the mouse again or changing browser tabs.

I wonder if the issue has anything to do with the fact that Audio Device-2 (the NVidia card) is using the snd_hda_intel driver, but it’s as likely I’m chasing a red herring.

Previously I was running a laptop, docked full time to this same monitor, using the nvidia drivers only (no bumblebee / hybrid) and did not have this issue at all using displayport audio and the same driver version, leading me to believe that it’s not an issue with the monitor itself.

I can supply whatever additional information is needed if the inxi output above isn’t sufficient.

I should add that prior to installing the GPU, I had onboard audio running to the monitor through the motherboard HDMI and displayport, and the delay did not occur.

I’ve tried several things since opening this topic, including:

None of these things made any difference. I have noticed through testing that the problem may not be best described by a “delay” so much as intermittent dropping out (and back in) of audio signal to the monitor. My experience of a delay was probably due to the dropping out happening often, but not always, at the beginning. It does continue to happen in the middle of playback as well and seemingly without any human cause.

It’s also worth mentioning that the same problem existed with pulseaudio, and I wondered whether pipewire would fix it. On its own, it obviously did not, but I figure if I’m going to have to troubleshoot the problem, I might as well do so on the new sound architecture than the old.

After some digging, it turns out that my motherboard, being a very new Alder Lake offering, has some bugs that the manufacturer has not worked out yet. One of those is issues with PCIe bus speeds.

According to my research, dialing the PCIe bus down to 3x seems to resolve a variety of issues all of which I had been experiencing, from non-working GPU risers (which caused me to return and replace two different SFF cases) to spammy nvme / AER errors. That change also seems to have made my audio issues dramatically less obvious if not completely resolved.

While I thought I noticed a couple of brief dropouts even after that, I also changed session.suspend-timeout-seconds to 0 in the bottom section of /etc/pipewire/media-session.d/alsa-monitor.conf as that seems to come up commonly when looking into audio sink suspension in pipewire. It’s hard to quantify the impact of that change, but over the last couple of hours of intermittent gaming and usage involving audio, I haven’t noticed any more dropouts.

There are still a few lingering issues which at this point I’m inclined to write off as caused by bleeding edge hardware for now. Gigabyte is on the hook for another BIOS update or two and we need another kernel or two under our belts. That said, I’m going to leave this open for a little bit before marking it resolved, in case anyone wanders by and has some useful advice or additions for this case or similar ones.

Let my struggle be a reminder to future people that running Linux on hardware that was released mere weeks prior and expecting everything to execute perfectly is sure to result in some hand wringing and head banging.