No DisplayPort audio over USB-C on HP Elitedesk (Intel UHD 630 - card1)

I have no DisplayPort audio over USB-C in Fedora on a HP Elitedesk (or in Linux across multiple distributions and kernels), even though video works fine. Audio over the same connection works without issue in Windows. However, it does not work with my LG 4K monitor when used as a pass-through monitor hub to external Logitech speakers via an RCA plug. Interestingly, DisplayPort audio works as expected in Fedora with another 1080p monitor that has built-in speakers. It’s just the plugged in speakers on this monitor that don’t seem to be recognised.

I’ve been through a diagnostic process (with the help of AI). I’ve tried adding kernel parameters in Grub, various other distros & kernels, firmware & BIOS updates but no luck. Neither Sound settings nor Pavucontrol show these speakers . They do not appear on the “aplay -l” list. Aplay shows only card 0 as playback, but the displayport output is on card 1. I can post full diagnostic listings if required.

The fact that audio works in Windows confirms the hardware, cable, and monitor are all capable. dmesg shows that the sound driver (snd_hda_intel , which handles the internal speakers) is successfully “binding” to the Intel graphics driver (i915 ). dmesg does not show any subsequent messages about snd_hda_intel actually finding or configuring any HDMI/DisplayPort audio interfaces on the graphics card. This suggests that either the i915 driver isn’t correctly exposing the audio capabilities of the USB-C/DisplayPort to snd_hda_intel , or snd_hda_intel isn’t recognizing them for some reason. So these devices can’t be seen by pipewire or alsa.

Is this the appropriate forum to get help for this? I’m suspecting it may be a linux kernel issue for the i915 driver but logging a ticket there or using the distribution lists seems a bit daunting.

Your advice on next steps would be much appreciated . Thx

Windows often accepts or works around “out-of-spec” hardware, so it is not unusual for things that work in Windows to fail in Linux. From LWN’s account of Manasi Navare’s talk on Achieving DisplayPort Compliance:

  • Some lessons were learned in the process; “failure is always an option”, she said. The atomic_check() guarantees that the requested mode is possible for the GPU parameters, but cannot guarantee the DP cable and link. Failure of the link can also occur asynchronously; a previously working link can fail due to electrical properties of the connection. It is also possible to do a non-blocking commit, where the mode set returns to user space before the commit has been completed, so there needs to be a way to alert user space to these kinds of problems. Being able to handle asynchronous link failures is an important component of the solution.

There have been other issues with i915 on recent kernels, so it should not be a surprise that i915 has suffered from Intel’s financial problems. When testing different DP cable connections it is best to start from a power-off reset to avoid carry-over from previous configurations.

audio capabilities must be defined in EDID table of the monitor.

$ grep -w connected /sys/class/drm/*/status
/sys/class/drm/card2-DP-5/status:connected

$ edid-decode < /sys/class/drm/card2-DP-5/edid

here’s the relevant part of the ‘CTA-861 Extension Block’

Audio Data Block:
    Linear PCM:
      Max channels: 2
      Supported sample rates (kHz): 48 44.1 32
      Supported sample sizes (bits): 24 20 16
  Speaker Allocation Data Block:
    FL/FR - Front Left/Right

thanks for your comment.

Thanks for your comment - here are the relevant sections of the block, which I suspect means it is defined, just not used for some reason:

Audio Data Block:
Linear PCM:
Max channels: 2
Supported sample rates (kHz): 48 44.1 32
Supported sample sizes (bits): 24 20 16
Speaker Allocation Data Block:
FL/FR - Front Left/Right

the full decoded EDID is here:
Gist

Does the monitor have built-in loudspeakers? Do they work?

If the 3.5mm port is audio only, then it shoud just work. I do have a similar setup.
If the 3.5mm port support head-sets (mic), then there is probably an additional usb device visible (lsusb). You’ll need to figure out what else is required to enable audio out (LG support?). It seems that LG is deviating from the norm here.

No the monitor doesn’t have it’s own speakers, sadly. The 3.5mm port is audio only I think. Here’s the output from the lsusb:

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0451:8142 Texas Instruments, Inc. TUSB8041 4-Port Hub
Bus 001 Device 003: ID 8087:0029 Intel Corp. AX200 Bluetooth
Bus 001 Device 004: ID 04f9:04a3 Brother Industries, Ltd MFC-J4440DW
Bus 001 Device 005: ID 046d:c548 Logitech, Inc. Logi Bolt Receiver
Bus 001 Device 006: ID 043e:9a39 LG Electronics USA, Inc. 27UP850 - WK.AEUDCSN - External Monitor 4K
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

The idea was to use my monitor as a hub and just swap USB C cables between my Linux/Windows PC and a Mac. That’s why you see logitech keyboard/mouse receiver and Brother printer. All this works fine with the Mac and the Windows setup, but in Fedora no sound gets through. Frustrating!

The monitor is a few years old now and well out of warranty. They do sell an updated version which is very similar. I’ve contacted LG support but so far no luck. Any other ideas? Thx

indeed the LG 27UP850’s audio port seems to be audio-out only.

this is very strange.
usually the DP/HDMI audio should be reported with aplay -l
e.g. ( I moved my Monitor from the NVIDIA card to a USB-C connection which uses the Intel iGPU)

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC700 Analog [ALC700 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [<MONITOR VENDOR and model>]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
[more lines deleted]


$ grep -w connected /sys/class/drm/*/status
/sys/class/drm/card1-DP-3/status:connected

the first device is an analog 3.5mm audio port supporting head-sets)

the same output with monitor connected to the nvidia card

aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC700 Analog [ALC700 Analog]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
[deleted]

card 1: NVidia [HDA NVidia], device 3: HDMI 0 [<MONITOR VENDOR and model>]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

$ grep -w connected /sys/class/drm/*/status
/sys/class/drm/card0-DP-5/status:connected

Hi again. Yes it’s very strange that the USB can’t be seen.
Here’s my output:

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC897 Analog [ALC897 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

The monitor shows as on card 1, but is not listed here, but it is connected:

grep -w connected /sys/class/drm/*/status
/sys/class/drm/card1-DP-3/status:connected

I’ve contacted LG support, but no luck with finding any Linux support expertise there, sadly.

is this the complete output? No other lines?

card1 in /sys/class/drm is not necessarily the same as in output of aplay…

see ls -l /sys/class/drm/ and ls -l /sys/class/sound/

HI. Yes that’s the complete output of aplay
as for the others:

ls -l /sys/class/drm/
total 0
lrwxrwxrwx 1 root root    0 May 18 13:56 card1 -> ../../devices/pci0000:00/0000:00:02.0/drm/card1
lrwxrwxrwx 1 root root    0 May 18 13:56 card1-DP-1 -> ../../devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-1
lrwxrwxrwx 1 root root    0 May 18 13:56 card1-DP-2 -> ../../devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-2
lrwxrwxrwx 1 root root    0 May 18 13:56 card1-DP-3 -> ../../devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-3
lrwxrwxrwx 1 root root    0 May 18 13:56 card1-HDMI-A-1 -> ../../devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-1
lrwxrwxrwx 1 root root    0 May 18 13:56 card1-HDMI-A-2 -> ../../devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-2
lrwxrwxrwx 1 root root    0 May 18 13:56 card1-HDMI-A-3 -> ../../devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-3
lrwxrwxrwx 1 root root    0 May 18 13:56 renderD128 -> ../../devices/pci0000:00/0000:00:02.0/drm/renderD128
-r--r--r-- 1 root root 4096 May 18 13:56 version

And

ls -l /sys/class/sound/
total 0
lrwxrwxrwx 1 root root 0 May 18 13:56 card0 -> ../../devices/pci0000:00/0000:00:1f.3/sound/card0
lrwxrwxrwx 1 root root 0 May 18 13:56 controlC0 -> ../../devices/pci0000:00/0000:00:1f.3/sound/card0/controlC0
lrwxrwxrwx 1 root root 0 May 18 13:56 hwC0D0 -> ../../devices/pci0000:00/0000:00:1f.3/sound/card0/hwC0D0
lrwxrwxrwx 1 root root 0 May 18 13:56 hwC0D2 -> ../../devices/pci0000:00/0000:00:1f.3/sound/card0/hwC0D2
lrwxrwxrwx 1 root root 0 May 18 13:56 pcmC0D0c -> ../../devices/pci0000:00/0000:00:1f.3/sound/card0/pcmC0D0c
lrwxrwxrwx 1 root root 0 May 18 13:56 pcmC0D0p -> ../../devices/pci0000:00/0000:00:1f.3/sound/card0/pcmC0D0p
lrwxrwxrwx 1 root root 0 May 18 13:56 seq -> ../../devices/virtual/sound/seq
lrwxrwxrwx 1 root root 0 May 18 13:56 timer -> ../../devices/virtual/sound/timer

Sorry the responses are slow - I suspect I’m in a different timezone to you (Auckland, New Zealand)

Literally on the other side of the world :slight_smile:
You are 10 time zones further than me CET(UTC+1)/CEST (UTC+2)

You’ve mentioned that audio worked with another 1080p monitor. What cable was used, also a USB-C or maybe a USB-C to DP cable?

some ideas you could try:
1.Does audio work if you reconnect the cable? login, start ‘sudo journalctl --no-hostname -f’ and disconnect the usb-c cable for a few seconds and reconnect.
2. what happens if you use a USB-C to DP cable instead? ( you have to connect keyboard/mouse to the system or use a usb-a to usb-b cable to the monitor
3. compare ‘lsmod |grep snd’ with the other ‘working’ monitor
the same with journalctl -b0 --no-hostname -g 'snd|audio'
4. 'sudo modprobe snd_hda_codec_hdmi ’ ?

looking at my system, I can see the module snd_hda_codec_hdmi in the lsmod output ( lsmod |grep ^snd )
modinfo snd_hda_codec_hdmi shows

depends: snd-hda-core,snd-hda-codec,snd,snd-pcm
name: snd_hda_codec_hdmi

also worth looking at the files in /proc/asound/
you can use ‘cat’ to print the content of those files.

is there anything audio related in the OSD of the monitor?

Well hi from the other side of the world, and many thanks for your help - very much appreciated.

The cable I used with the other 1080p monitor is unusual. It’s an old Apple Cinema display that has it’s own cable with displayport, USB and magsafe power connectors. It has it’s own (quite good) built-in speakers and facetime camera. Annoyingly it all worked out of the box, no issues, unlike the LG!

sudo journalctl --no-hostname -f

Selected output:

After a number of startup messages it gave me this when I disconnected:

May 20 09:44:35 kernel: usb 1-6: USB disconnect, device number 39

May 20 09:44:35 kernel: usb 1-6.2: USB disconnect, device number 40

May 20 09:44:35 kernel: usb 1-6.3: USB disconnect, device number 41

May 20 09:44:35 systemd[1]: ipp-usb.service: Deactivated successfully.

May 20 09:44:35 audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=ipp-usb comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'

May 20 09:44:35 systemd[2300]: Stopped target printer.target - Printer.

May 20 09:44:35 systemd[1]: Stopped target printer.target - Printer Support.

[use Solaar to control logitech mouse & keyboard]

May 20 09:44:36 solaar[2720]: gtk_widget_get_scale_factor: assertion 'GTK_IS_WIDGET (widget)' failed

May 20 09:44:36 solaar[2720]: gtk_widget_get_scale_factor: assertion 'GTK_IS_WIDGET (widget)' failed

May 20 09:44:36 solaar[2720]: gtk_widget_get_scale_factor: assertion 'GTK_IS_WIDGET (widget)' failed

May 20 09:44:36 kernel: usb 1-6.4: USB disconnect, device number 42

May 20 09:44:38 kernel: snd_hda_codec_hdmi hdaudioC0D2: HDMI: pin NID 0x7 not registered

?could these last two lines indicate a problem?

When I restarted it seems to have found the device but again the pin NID 0x7 is not registered (See entries around 09:44:42):

May 20 09:44:41 kernel: usb 1-6: new high-speed USB device number 43 using xhci_hcd

May 20 09:44:41 kernel: usb 1-6: New USB device found, idVendor=0451, idProduct=8142, bcdDevice= 1.00

May 20 09:44:41 kernel: usb 1-6: New USB device strings: Mfr=0, Product=0, SerialNumber=1

May 20 09:44:41 kernel: usb 1-6: SerialNumber: 990210897885

May 20 09:44:41 kernel: hub 1-6:1.0: USB hub found

May 20 09:44:41 kernel: hub 1-6:1.0: 4 ports detected

May 20 09:44:41 kernel: usb 1-6.2: new high-speed USB device number 44 using xhci_hcd

May 20 09:44:41 kernel: usb 1-6.2: New USB device found, idVendor=04f9, idProduct=04a3, bcdDevice= 1.00

May 20 09:44:41 kernel: usb 1-6.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3

May 20 09:44:41 kernel: usb 1-6.2: Product: MFC-J4440DW

May 20 09:44:41 kernel: usb 1-6.2: Manufacturer: Brother

May 20 09:44:41 kernel: usb 1-6.2: SerialNumber: E80959C4H756977

May 20 09:44:41 kernel: usblp 1-6.2:1.0: usblp0: USB Bidirectional printer dev 44 if 0 alt 0 proto 2 vid 0x04F9 pid 0x04A3

May 20 09:44:41 systemd[2300]: Reached target printer.target - Printer.

May 20 09:44:41 systemd[21177]: Reached target printer.target - Printer.

May 20 09:44:41 systemd[1]: Reached target printer.target - Printer Support.

May 20 09:44:41 systemd[1]: Started ipp-usb.service - Daemon for IPP over USB printer support.

May 20 09:44:41 audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=ipp-usb comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'

May 20 09:44:41 kernel: usblp0: removed

May 20 09:44:41 kernel: usb 1-6.3: new full-speed USB device number 45 using xhci_hcd

May 20 09:44:42 kernel: usb 1-6.3: New USB device found, idVendor=046d, idProduct=c548, bcdDevice= 5.03

May 20 09:44:42 kernel: usb 1-6.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0

May 20 09:44:42 kernel: usb 1-6.3: Product: USB Receiver

May 20 09:44:42 kernel: usb 1-6.3: Manufacturer: Logitech

May 20 09:44:42 kernel: input: Logitech USB Receiver as /devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.3/1-6.3:1.0/0003:046D:C548.0033/input/input69

May 20 09:44:42 kernel: hid-generic 0003:046D:C548.0033: input,hidraw0: USB HID v1.11 Keyboard [Logitech USB Receiver] on usb-0000:00:14.0-6.3/input0

May 20 09:44:42 kernel: input: Logitech USB Receiver Mouse as /devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.3/1-6.3:1.1/0003:046D:C548.0034/input/input70

May 20 09:44:42 kernel: input: Logitech USB Receiver Consumer Control as /devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.3/1-6.3:1.1/0003:046D:C548.0034/input/input71

May 20 09:44:42 kernel: input: Logitech USB Receiver System Control as /devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.3/1-6.3:1.1/0003:046D:C548.0034/input/input72

May 20 09:44:42 kernel: input: Logitech USB Receiver as /devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.3/1-6.3:1.1/0003:046D:C548.0034/input/input73

May 20 09:44:42 kernel: hid-generic 0003:046D:C548.0034: input,hiddev96,hidraw1: USB HID v1.11 Mouse [Logitech USB Receiver] on usb-0000:00:14.0-6.3/input1

May 20 09:44:42 kernel: hid-generic 0003:046D:C548.0035: hiddev97,hidraw2: USB HID v1.11 Device [Logitech USB Receiver] on usb-0000:00:14.0-6.3/input2

May 20 09:44:42 kernel: input: Logitech USB Receiver as /devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.3/1-6.3:1.3/0003:046D:C548.0036/input/input74

May 20 09:44:42 kernel: hid-multitouch 0003:046D:C548.0036: input,hidraw3: USB HID v1.11 Device [Logitech USB Receiver] on usb-0000:00:14.0-6.3/input3

May 20 09:44:42 mtp-probe[21339]: checking bus 1, device 45: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.3"

May 20 09:44:42 mtp-probe[21339]: bus: 1, device: 45 was not an MTP device

May 20 09:44:42 systemd-logind[985]: Watching system buttons on /dev/input/event6 (Logitech USB Receiver System Control)

May 20 09:44:42 systemd-logind[985]: Watching system buttons on /dev/input/event5 (Logitech USB Receiver Consumer Control)

May 20 09:44:42 systemd-logind[985]: Watching system buttons on /dev/input/event3 (Logitech USB Receiver)

May 20 09:44:42 kernel: usb 1-6.4: new full-speed USB device number 46 using xhci_hcd

May 20 09:44:42 solaar[2720]: gtk_widget_get_scale_factor: assertion 'GTK_IS_WIDGET (widget)' failed

May 20 09:44:42 solaar[2720]: gtk_widget_get_scale_factor: assertion 'GTK_IS_WIDGET (widget)' failed

May 20 09:44:42 mtp-probe[21367]: checking bus 1, device 45: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.3"

May 20 09:44:42 mtp-probe[21367]: bus: 1, device: 45 was not an MTP device

May 20 09:44:42 kernel: usb 1-6.4: New USB device found, idVendor=043e, idProduct=9a39, bcdDevice= 2.03

May 20 09:44:42 kernel: usb 1-6.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3

May 20 09:44:42 kernel: usb 1-6.4: Product: USB Controls

May 20 09:44:42 kernel: usb 1-6.4: Manufacturer: LG Electronics Inc.

May 20 09:44:42 kernel: usb 1-6.4: SerialNumber: 810NTEPBE268

May 20 09:44:42 kernel: hid-generic 0003:043E:9A39.0037: hiddev98,hidraw4: USB HID v1.11 Device [LG Electronics Inc. USB Controls] on usb-0000:00:14.0-6.4/input0

May 20 09:44:42 kernel: cdc_acm 1-6.4:1.1: ttyACM0: USB ACM device

May 20 09:44:42 mtp-probe[21369]: checking bus 1, device 46: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.4"

May 20 09:44:42 mtp-probe[21369]: bus: 1, device: 46 was not an MTP device

May 20 09:44:42 mtp-probe[21371]: checking bus 1, device 46: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.4"

May 20 09:44:42 mtp-probe[21371]: bus: 1, device: 46 was not an MTP device

May 20 09:44:42 fwupd[3284]: 21:44:42.499 FuEngine failed to add device /sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.3/1-6.3:1.3/0003:046D:C548.0036/hidraw/hidraw3: failed to setup: failed to fetch the number of pairing slots: failed to send: failed to write: wrote -1 of 7

May 20 09:44:43 solaar[2720]: gtk_widget_get_scale_factor: assertion 'GTK_IS_WIDGET (widget)' failed

May 20 09:44:43 com.vivaldi.Vivaldi.flextop.vivaldi-hefjfmnjejkimdckioakkickbapdhdhg-Default.desktop[4716]: [44:44:0520/094443.387193:ERROR:gl_display.cc(495)] EGL Driver message (Error) eglGetMscRateANGLE: glXGetMscRateOML failed.

May 20 09:44:43 kernel: snd_hda_codec_hdmi hdaudioC0D2: HDMI: pin NID 0x7 not registered

May 20 09:44:44 solaar[2720]: gtk_widget_get_scale_factor: assertion 'GTK_IS_WIDGET (widget)' failed

May 20 09:44:44 gnome-shell[2473]: Overwriting existing binding of keysym 36 with keysym 36 (keycode f).

May 20 09:44:44 gnome-shell[2473]: Overwriting existing binding of keysym 34 with keysym 34 (keycode d).

May 20 09:44:44 gnome-shell[2473]: Overwriting existing binding of keysym 32 with keysym 32 (keycode b).

May 20 09:44:44 gnome-shell[2473]: Overwriting existing binding of keysym 38 with keysym 38 (keycode 11).

May 20 09:44:44 gnome-shell[2473]: Overwriting existing binding of keysym 36 with keysym 36 (keycode f).

May 20 09:44:44 gnome-shell[2473]: Overwriting existing binding of keysym 33 with keysym 33 (keycode c).

May 20 09:44:44 gnome-shell[2473]: Overwriting existing binding of keysym 39 with keysym 39 (keycode 12).

May 20 09:44:44 gnome-shell[2473]: Overwriting existing binding of keysym 32 with keysym 32 (keycode b).

May 20 09:44:44 gnome-shell[2473]: Overwriting existing binding of keysym 31 with keysym 31 (keycode a).

May 20 09:44:44 gnome-shell[2473]: Overwriting existing binding of keysym 31 with keysym 31 (keycode a).

May 20 09:44:44 gnome-shell[2473]: Overwriting existing binding of keysym 35 with keysym 35 (keycode e).

May 20 09:44:44 gnome-shell[2473]: Overwriting existing binding of keysym 37 with keysym 37 (keycode 10).

May 20 09:44:44 gnome-shell[2473]: Overwriting existing binding of keysym 33 with keysym 33 (keycode c).

May 20 09:44:44 gnome-shell[2473]: Overwriting existing binding of keysym 35 with keysym 35 (keycode e).

May 20 09:44:44 gnome-shell[2473]: Overwriting existing binding of keysym 39 with keysym 39 (keycode 12).

May 20 09:44:44 gnome-shell[2473]: Overwriting existing binding of keysym 34 with keysym 34 (keycode d).

May 20 09:44:44 gnome-shell[2473]: Overwriting existing binding of keysym 38 with keysym 38 (keycode 11).

May 20 09:44:44 gnome-shell[2473]: Overwriting existing binding of keysym 37 with keysym 37 (keycode 10).

May 20 09:44:45 solaar[2720]: gtk_widget_get_scale_factor: assertion 'GTK_IS_WIDGET (widget)' failed

May 20 09:44:55 systemd[1]: fprintd.service: Deactivated successfully.

May 20 09:44:55 audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=fprintd comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'

May 20 09:44:55 audit: BPF prog-id=161 op=UNLOAD

May 20 09:44:55 solaar[2720]: gtk_widget_get_scale_factor: assertion 'GTK_IS_WIDGET (widget)' failed

May 20 09:44:57 solaar[2720]: gtk_widget_get_scale_factor: assertion 'GTK_IS_WIDGET (widget)' failed

I’ll give these other ideas a try in a couple of hours or so when I can, but meantime I thought you might find this output useful. All the best.

Adding to this:

lsmod |grep ^snd - not sure what this output shows. See this GIST link for detailed listing.

modinfo snd_hda_codec_hdmi - also see same GIST link

depends: snd-hda-core,snd-hda-codec,snd,snd-pcm
intree: Y
name: snd_hda_codec_hdmi

I’m not sure what I’m looking for here, you advice much appreciated.

Further to this I have tried connecting via regular displayport cable instead and still no audio. So it looks like a problem with config on the PC, rather than the monitor.
I’ve posted the output of alsa-info here - GIST ALSA

maybe this is a follow-up error caused by one of the earlier required stages.
Probably the i915 driver passes the wrong info to snd_hda_intel in a USB-C configuration. Maybe UEFI expose wrong data to the driver?

USB-C to DP seems to work with the older Apple display.

You need to look at sudo dmesg or sudo journalctl --no-hostname --no-pager -b0 -g 'i915|snd' and look for info where audio connects to the i915 driver

on my system it looks like this: (nothing was connected)

May 20 20:58:32 kernel: i915 0000:00:02.0: [drm] Found tigerlake/uy (device ID 9a49) integrated display version 12.00 stepping C0
May 20 20:58:32 kernel: i915 0000:00:02.0: [drm] VT-d active for gfx access
May 20 20:58:32 kernel: i915 0000:00:02.0: [drm] Using Transparent Hugepages
May 20 20:58:32 kernel: i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=io+mem
May 20 20:58:32 kernel: i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/tgl_dmc_ver2_12.bin (v2.12)
May 20 20:58:32 kernel: i915 0000:00:02.0: [drm] Protected Xe Path (PXP) protected content support initialized
May 20 20:58:32 kernel: [drm] Initialized i915 1.6.0 for 0000:00:02.0 on minor 1
May 20 20:58:32 kernel: i915 0000:00:02.0: [drm] Cannot find any crtc or sizes
May 20 20:58:32 kernel: i915 0000:00:02.0: [drm] Cannot find any crtc or sizes

May 20 20:58:34 kernel: mei_hdcp 0000:00:16.0-b638ab7e-94e2-4ea2-a552-d1c54b627f04: bound 0000:00:02.0 (ops i915_hdcp_ops [i915])
May 20 20:58:34 kernel: mei_pxp 0000:00:16.0-fbf6fcf1-96cf-4e2e-a6a6-1bab8cbe36b1: bound 0000:00:02.0 (ops i915_pxp_tee_component_ops [i915])

May 20 20:58:34 kernel: snd_hda_intel 0000:00:1f.3: enabling device (0000 -> 0002)
May 20 20:58:34 kernel: snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915]) 

May 20 20:58:34 kernel: snd_hda_intel 0000:01:00.1: enabling device (0000 -> 0002)
May 20 20:58:34 kernel: snd_hda_intel 0000:01:00.1: Disabling MSI
May 20 20:58:34 kernel: snd_hda_intel 0000:01:00.1: Handle vga_switcheroo audio client

Have you tried to boot with the acpi_osi=‘Windows 2015’ option?
you can check the supported values with:

$ sudo cat /sys/firmware/acpi/tables/DSDT > dsdt.dat
$ iasl -d dsdt.dat 
Intel ACPI Component Architecture
ASL+ Optimizing Compiler/Disassembler version 20240322
Copyright (c) 2000 - 2023 Intel Corporation

File appears to be binary: found 128479 non-ASCII characters, disassembling
< lines deleted>
Parsing completed
Disassembly completed
ASL Output:    dsdt.dsl - 2742504 bytes
$ grep _OSI dsdt.dsl 
            If (CondRefOf (\_OSI, Local0))
                If (_OSI ("Windows 2001"))
                If (_OSI ("Windows 2001 SP1"))
                If (_OSI ("Windows 2001 SP2"))
                If (_OSI ("Windows 2001.1"))
                If (_OSI ("Windows 2006"))
                If (_OSI ("Windows 2009"))
                If (_OSI ("Windows 2012"))
                If (_OSI ("Windows 2013"))
                If (_OSI ("Windows 2015"))
                If (_OSI ("Processor Aggregator Device"))

Hi. Finally had time to look at this again. Thanks for the suggestions, I do appreciate the effort, but I’m running out of skills and knowledge to know how to proceed.
The idea of the i915 driver passing the wrong info to snd_hda_intel makes sense, but when I like at journalctl messages I get the following, including a whole string of “pin not registered” messages. If I’m reading this right then the snd_hda_intel seems to be called after 05:02:51 but then taken over by the realtek audio internal speaker:

sudo journalctl --no-hostname --no-pager -b0 -g ‘i915|snd’

May 21 05:02:51 kernel: i915 0000:00:02.0: [drm] Found cometlake (device ID 9bc8) integrated display version 9.00 stepping N/A
May 21 05:02:51 kernel: i915 0000:00:02.0: vgaarb: deactivate vga console
May 21 05:02:51 kernel: i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=io+mem
May 21 05:02:51 kernel: i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)
May 21 05:02:51 kernel: [drm] Initialized i915 1.6.0 for 0000:00:02.0 on minor 1
May 21 05:02:51 kernel: fbcon: i915drmfb (fb0) is primary device
May 21 05:02:51 kernel: i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
May 20 17:02:54 kernel: mei_hdcp 0000:00:16.0-b638ab7e-94e2-4ea2-a552-d1c54b627f04: bound 0000:00:02.0 (ops i915_hdcp_ops [i915])
May 20 17:02:54 kernel: snd_hda_intel 0000:00:1f.3: enabling device (0000 → 0002)
May 20 17:02:54 kernel: snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
May 20 17:02:54 kernel: snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC897: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
May 20 17:02:54 kernel: snd_hda_codec_realtek hdaudioC0D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
May 20 17:02:54 kernel: snd_hda_codec_realtek hdaudioC0D0: hp_outs=1 (0x1b/0x0/0x0/0x0/0x0)
May 20 17:02:54 kernel: snd_hda_codec_realtek hdaudioC0D0: mono: mono_out=0x0
May 20 17:02:54 kernel: snd_hda_codec_realtek hdaudioC0D0: inputs:
May 20 17:02:54 kernel: usbcore: registered new interface driver snd-usb-audio
May 20 17:03:02 gnome-shell[1685]: Added device ‘/dev/dri/card1’ (i915) using atomic mode setting.
May 20 17:03:11 gnome-shell[2502]: Added device ‘/dev/dri/card1’ (i915) using atomic mode setting.
May 20 17:12:53 kernel: snd_hda_codec_hdmi hdaudioC0D2: HDMI: pin NID 0x5 not registered
May 20 17:12:59 kernel: snd_hda_codec_hdmi hdaudioC0D2: HDMI: pin NID 0x6 not registered
May 20 17:30:34 kernel: snd_hda_codec_hdmi hdaudioC0D2: HDMI: pin NID 0x6 not registered
May 20 17:31:47 kernel: snd_hda_codec_hdmi hdaudioC0D2: HDMI: pin NID 0x7 not registered
May 20 18:08:44 kernel: snd_hda_codec_hdmi hdaudioC0D2: HDMI: pin NID 0x7 not registered
May 20 18:08:44 kernel: snd_hda_codec_hdmi hdaudioC0D2: HDMI: pin NID 0x7 not registered
May 20 18:08:59 kernel: snd_hda_codec_hdmi hdaudioC0D2: HDMI: pin NID 0x7 not registered
May 20 19:06:13 kernel: mei_hdcp 0000:00:16.0-b638ab7e-94e2-4ea2-a552-d1c54b627f04: bound 0000:00:02.0 (ops i915_hdcp_ops [i915])
May 20 19:06:13 kernel: snd_hda_codec_hdmi hdaudioC0D2: HDMI: pin NID 0x7 not registered
—truncated —>

As regards the idea of forcing it at boot with

acpi_osi=‘Windows 2015’

iasl found a few errors in parsing but did create the following in dsdt.dsl:

> $ grep _OSI dsdt.dsl
>             If (CondRefOf (\_OSI))
>                 If (_OSI ("Linux"))
>                 If (_OSI ("Windows 2001"))
>                 If (_OSI ("Windows 2001 SP1"))
>                 If (_OSI ("Windows 2001 SP2"))
>                 If (_OSI ("Windows 2006"))
>                 If (_OSI ("Windows 2009"))
>                 If (_OSI ("Windows 2012"))
>                 If (_OSI ("Windows 2013"))
>                 If (_OSI ("Windows 2015"))
>                 If (_OSI ("Windows 2016"))
>                 If (_OSI ("Windows 2017"))
>             If (CondRefOf (\_OSI, Local0))
>                 If (_OSI ("Linux"))
>                 If (_OSI ("Windows 2001"))
>                 If (_OSI ("Windows 2001 SP1"))
>                 If (_OSI ("Windows 2001 SP2"))
>                 If (_OSI ("Windows 2001.1"))
>                 If (_OSI ("Windows 2006"))
>                 If (_OSI ("Windows 2009"))
>                 If (_OSI ("Windows 2012"))
>                 If (_OSI ("Windows 2013"))
>                 If (_OSI ("Windows 2015"))
>                 If (_OSI ("Processor Aggregator Device"))

which Windows supported value do you recommend I use? Should it be the newest? Or should I use acpi_osi=‘Linux’ ?

Best Regards

my guess is as good as yours :slight_smile:

I am surprised to see Linux still being used. It’s worth a try, and Windows 2015, this is the GA release of Windows 10. WIndows 2017 references Win10 17.3 release.

I looked up the system, and it has a full size DP1.4 port. Why not use this port instead and connect a USB cable to the monitor? I guess the old Apple display had audio connected to this DP port?

Is the USB-C port located on an expansion card? From the info I could find about the HP elitedesk 800 G6 mini-pc, it does not appear to be a standard port.

You could also try to force the snd_hda_codec_hdmi module to enable all pins.

$ modinfo -p snd_hda_codec_hdmi
static_hdmi_pcm:Don't restrict PCM parameters per ELD info (bool)
enable_acomp:Enable audio component binding (default=yes) (bool)
enable_silent_stream:Enable Silent Stream for HDMI devices (bool)
enable_all_pins:Forcibly enable all pins (bool)

check with systool which parameters are used

# systool  -vm snd_hda_codec_hdmi
Module = "snd_hda_codec_hdmi"

  Attributes:
    coresize            = "102400"
    initsize            = "0"
    initstate           = "live"
    refcnt              = "2"
    taint               = ""
    uevent              = <store method only>

  Parameters:
    enable_acomp        = "Y"
    enable_all_pins     = "N"
    enable_silent_stream= "Y"
    static_hdmi_pcm     = "N"

Does monitor switch audio automatically to the active video-in port?

Thanks - I could use the fullsize HDMI port but the audio doesn’t come across, (although as you know it will do on windows). The monitor asks if I want to switch ports when I move from USB C to HDMI, but this wouldn’t be necessary if I only used the USB C port.

I added a “USB C flexio card” (HP 13L59AA) to the standard G6 hardware so that I could have the one cable, the keyboard, mouse and printer on the monitor’s built in hub and easily swap between the Mac and this PC. If the audio was working it would be an elegant solution.

My check on systools showed the exact same default module parameters as you have. I’ll try setting them all to “Y” and also the forced acpi_os parameter, then report back.

Thanks everyone for your help and suggestions. I’ve also gone through another round of AI diagnosis and fix attempts with Gemini and ended up with the same conclusion: it’s a deep low-level driver or firmware issue.

So next up I’m going to try to engage directly with the Linux kernel and distribution communities. But first I’ll give it a few days to see if any of the i915 changes in the 6.15 kernel solve my issue. Hopefully it will be out for Fedora soon.

If you are in the i915 development community or know who I can contact to streamline the reporting process then please let me know. It looks a bit daunting for a lay person :slight_smile:

FYI here’s a summary of what we found, any comments welcome:

Analysis of the ALSA Information Script

  1. System and Hardware Confirmation: The report confirms your system is an HP EliteDesk 800 G6 Desktop Mini PC running Fedora release 42 with kernel 6.14.6-300.fc42.x86_64 . It also clearly identifies your primary audio and graphics hardware:
  • 00:02.0 VGA compatible controller: Intel Corporation CometLake-S GT2 [UHD Graphics 630]
  • 00:1f.3 Audio device: Intel Corporation Comet Lake PCH cAVS [8086:06c8]
  1. Missing HDMI/DisplayPort Audio Device: The most critical finding remains consistent with our previous observations:
  • Under “Soundcards recognised by ALSA,” only 0 [PCH]: HDA-Intel - HDA Intel PCH is listed.
  • There is no separate ALSA sound card entry for an HDMI or DisplayPort audio device, which would typically be present if the graphics card’s audio output was successfully enumerated.
  • The aplay -l output within the report also confirms that only the PCH audio device (Realtek ALC897) is available, exposing analog outputs (Headphone, Speaker) and some generic digital output nodes (like Node 0x06 and 0x10) that appear to be part of the Realtek codec, not the dedicated Intel HDMI audio.
  1. Intel Graphics Audio Component Binding: The dmesg section within the ALSA report shows this crucial line: snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915]) This message indicates that the snd_hda_intel driver (for your PCH audio) successfully attempted to bind to the i915 graphics driver’s audio component. This is the expected behavior for Intel graphics-based HDMI/DisplayPort audio.

What This Means

The fact that the snd_hda_intel driver binds to the i915 audio component, but no HDMI/DisplayPort audio device appears in ALSA, strongly indicates a deeper, low-level driver or firmware issue.

It suggests that while the i915 driver is aware of its audio capabilities and presents them for binding, something in the subsequent steps—either within the i915 driver’s exposure of these capabilities or the snd_hda_intel driver’s interpretation and creation of an ALSA device—is failing specifically for your Comet Lake GPU on this HP EliteDesk 800 G6.

This is a common challenge with newer Intel integrated graphics on Linux, as precise hardware quirks sometimes require specific driver patches or updated firmware that may not yet be in the stable kernel or distribution packages. The “Node has no capability” error you observed with hdajackretask further supports this, as it implies the low-level audio hardware isn’t reporting the expected functionalities for its digital pins.

Next Steps and Recommendations

Given these insights, the most effective path forward is to engage directly with the Linux kernel and distribution communities: