PulseAudio reports HDMI Audio is unplugged from the Nvidia MCP79 device

I am running Fedora 18 and PulseAudio won’t let me select HDMI Audio output. From looking at the logs, it appears that PulseAudio thinks that the HDMI audio jack is unplugged. However, aplay and speaker-test work just fine when I specify the HDMI audio device. My guess is that the Nvidia driver is failing to report that the HDMI is plugged in. Is there a way to see what the Nvidia driver thinks about the presence of the HDMI audio? Or, have any other suggestions / work arounds?

nvidia-bug-report.sh and logs and other information is at the bug report at https://bugzilla.redhat.com/show_bug.cgi?id=903869 . If you prefer, I can duplicate these files here as well.

I have similar HDMI audio problems with Nvidia MCP79. Latest drivers wont work, but I have sound on previous releases (304.64) with very strange workaround: after xrandr -s 0 (or try to set any other resolution) hdmi ports became available. Below output of pacmd list-sinks, first before xrandr call and second after.

  1. pacmd list-sinks

    name: <alsa_output.pci-0000_03_00.1.hdmi-stereo>
    driver: <module-alsa-card.c>
    flags: HARDWARE DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
    state: SUSPENDED
    suspend cause: IDLE
    priority: 9050
    volume: 0: 100% 1: 100%
    0: 0,00 dB 1: 0,00 dB
    balance 0,00
    base volume: 100%
    0,00 dB
    volume steps: 65537
    muted: no
    current latency: 0,00 ms
    max request: 0 KiB
    max rewind: 0 KiB
    monitor source: 2
    sample spec: s16le 2ch 48000??
    channel map: front-left,front-right
    ???
    used by: 0
    linked by: 0
    configured latency: 0,00 ms; range is 0,50 … 341,33 ms
    card: 1 <alsa_card.pci-0000_03_00.1>
    module: 5
    properties:
    alsa.resolution_bits = “16”
    device.api = “alsa”
    device.class = “sound”
    alsa.class = “generic”
    alsa.subclass = “generic-mix”
    alsa.name = “HDMI 0”
    alsa.id = “HDMI 0”
    alsa.subdevice = “0”
    alsa.subdevice_name = “subdevice #0
    alsa.device = “3”
    alsa.card = “1”
    alsa.card_name = “HDA NVidia”
    alsa.long_card_name = “HDA NVidia at 0xfcf7c000 irq 16”
    alsa.driver_name = “snd_hda_intel”
    device.bus_path = “pci-0000:03:00.1”
    sysfs.path = “/devices/pci0000:00/0000:00:1c.3/0000:03:00.1/sound/card1”
    device.bus = “pci”
    device.vendor.id = “10de”
    device.vendor.name = “NVIDIA Corporation”
    device.product.name = “High Definition Audio Controller”
    device.string = “hdmi:1”
    device.buffering.buffer_size = “65536”
    device.buffering.fragment_size = “32768”
    device.access_mode = “mmap+timer”
    device.profile.name = “hdmi-stereo”
    device.profile.description = “Digital Stereo (HDMI)”
    device.description = “High Definition Audio Controller Digital Stereo (HDMI)”
    alsa.mixer_name = “Nvidia GPU 0b HDMI/DP”
    alsa.components = “HDA:10de000b,10de0101,00100200”
    module-udev-detect.discovered = “1”
    device.icon_name = “audio-card-pci”
    ports:
    hdmi-output-0: HDMI / DisplayPort (priority 5900, available: no)
    properties:

    active port:

  • there are no available ports
  1. xrandr -s 0; pacmd list-sinks

    name: <alsa_output.pci-0000_03_00.1.hdmi-stereo-extra1>
    driver: <module-alsa-card.c>
    flags: HARDWARE DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
    state: SUSPENDED
    suspend cause: IDLE
    priority: 9050
    volume: 0: 100% 1: 100%
    0: 0,00 dB 1: 0,00 dB
    balance 0,00
    base volume: 100%
    0,00 dB
    volume steps: 65537
    muted: no
    current latency: 0,00 ms
    max request: 0 KiB
    max rewind: 0 KiB
    monitor source: 3
    sample spec: s16le 2ch 48000??
    channel map: front-left,front-right
    ???
    used by: 0
    linked by: 0
    configured latency: 0,00 ms; range is 0,50 … 341,33 ms
    card: 1 <alsa_card.pci-0000_03_00.1>
    module: 5
    properties:
    alsa.resolution_bits = “16”
    device.api = “alsa”
    device.class = “sound”
    alsa.class = “generic”
    alsa.subclass = “generic-mix”
    alsa.name = “HDMI 0”
    alsa.id = “HDMI 0”
    alsa.subdevice = “0”
    alsa.subdevice_name = “subdevice #0
    alsa.device = “7”
    alsa.card = “1”
    alsa.card_name = “HDA NVidia”
    alsa.long_card_name = “HDA NVidia at 0xfcf7c000 irq 16”
    alsa.driver_name = “snd_hda_intel”
    device.bus_path = “pci-0000:03:00.1”
    sysfs.path = “/devices/pci0000:00/0000:00:1c.3/0000:03:00.1/sound/card1”
    device.bus = “pci”
    device.vendor.id = “10de”
    device.vendor.name = “NVIDIA Corporation”
    device.product.name = “High Definition Audio Controller”
    device.string = “hdmi:1,1”
    device.buffering.buffer_size = “65536”
    device.buffering.fragment_size = “32768”
    device.access_mode = “mmap+timer”
    device.profile.name = “hdmi-stereo-extra1”
    device.profile.description = “Digital Stereo (HDMI)”
    device.description = “High Definition Audio Controller Digital Stereo (HDMI)”
    alsa.mixer_name = “Nvidia GPU 0b HDMI/DP”
    alsa.components = “HDA:10de000b,10de0101,00100200”
    module-udev-detect.discovered = “1”
    device.icon_name = “audio-card-pci”
    ports:
    hdmi-output-1: HDMI / DisplayPort 2 (priority 5800, available: yes)
    properties:

    active port:

We can see that after xrandr call port hdmi-output-1 became available. Maybe this helps too in your situation.

I tried your trick with drive 304.64, but, unfortunately, it did not work for me. Thanks for the tip! Anything else that you tried?

I wrote a script for my kiosk linux distribution which switch sound output to hdmi if hdmi display connection detected. Try to use it, I have no more ideas… Rename script to .sh and run (pulseaudio-utils and alsa-utils must be installed).

T H A N K S ! ! !

Because of your script, I found the command that worked to enable HDMI on my laptop:
pacmd set-card-profile 0 output:hdmi-surround

It appears that PulseAudio (or ALSA or Nvidia) is always reporting that the HDMI jack is unplugged instead of unavailable. I figure that this is a bug - most likely in the Nvidia driver, right?

I think that Nvidia driver developers broke something in hdmi audio code in 304.* and later drivers. We can see several complains in this forum. And no visible Nvidia activity to fix bugs. I understand that for graphic drivers developers it is very boring to dig audio code but I hope that they’ll find time sooner or later.

Excellent news. It is working now! :-)

Can confirm that I am experiencing the same issue. When I unplug my display port monitor and restart X, all of a sudden I can use HDMI sound from my TV.