Optimus and HDMI audio output

Discussion in 'Linux Compatibility and Software' started by TuxDude, Aug 6, 2012.

Thread Status:
Not open for further replies.
  1. TuxDude

    TuxDude Notebook Deity

    Reputations:
    255
    Messages:
    921
    Likes Received:
    2
    Trophy Points:
    31
    I've got a new ASUS UX32VD which uses an optimus solution consisting of nVidia Geforce 620M and the Intel HD4000 on-die GPU.

    I'm running openSUSE 12.2 RC2 with a 3.6-rc1 kernel. Gnome-shell 3.4 is my Desktop Manager.

    i915 driver handles the intel graphics and is the one rendering all the output currently as far as I understand.
    The nouveau driver also seems to be insmodded during bootup.

    I'm able to connect external displays over VGA and/or HDMI - able to clone or extend my desktop quite easily.

    Next I try to play audio over HDMI but it seems to play only over the speakers. I do not have a dedicated HDMI Digital Output Audio device listed.

    Code:
    ash@StarScream:~> cat /proc/asound/cards
      0 [PCH            ]: HDA-Intel - HDA Intel PCH
                          HDA Intel PCH at 0xf7918000 irq 48
    
    ash@StarScream:~>aplay -l
    **** List of PLAYBACK Hardware Devices ****
    card 0: PCH [HDA Intel PCH], device 0: ALC269VB Analog [ALC269VB Analog]
      Subdevices: 0/1
      Subdevice #0: subdevice #0
    Has anyone been able to get the audio working over HDMI ? Any suggestions ?

    NOTE: I've not installed any bumblebee or ironhide packages. I've also not installed the proprietary nvidia driver.
     
  2. tommytomatoe

    tommytomatoe Notebook Evangelist

    Reputations:
    59
    Messages:
    579
    Likes Received:
    2
    Trophy Points:
    31
    Go to sound settings. Output. There should be two options if the hdmi audio is recognized by your system. I did this for my laptop and it works :)

    Don't forget to switch back to internal speakers after you unplug hdmi. It took me a minute to realize that it did not auto switch the audio to.internal when hdmi is unplugged. Good luck!

    Sent from my EVO using Tapatalk 2
     
  3. TuxDude

    TuxDude Notebook Deity

    Reputations:
    255
    Messages:
    921
    Likes Received:
    2
    Trophy Points:
    31
    Thanks for the info, but I did already try that except to find that my HDMI audio device was not being listed or detected :)

    The detected devices are the same as shown in the output of 'aplay -l' The problem here is the HDMI audio device is not being detected and I do not know why. :|
     
  4. ALLurGroceries

    ALLurGroceries Super Moderator

    Reputations:
    9,616
    Messages:
    6,960
    Likes Received:
    777
    Trophy Points:
    281
    AFAIK optimus HDMI is managed by the intel chipset, audio included.

    Mind posting your kernel .config?
     
  5. TuxDude

    TuxDude Notebook Deity

    Reputations:
    255
    Messages:
    921
    Likes Received:
    2
    Trophy Points:
    31
    Here it is:
    [autoconf] linux-3.6rc .config - Pastebin.com

    Also today I figured out that the Intel's HDMI outputs are being shown in /proc/asound/card0/codec#3

    Code:
    $ cat /proc/asound/card0/codec#3
    Codec: Intel PantherPoint HDMI
    Address: 3
    AFG Function Id: 0x1 (unsol 0)
    Vendor Id: 0x80862806
    Subsystem Id: 0x80860101
    Revision Id: 0x100000
    No Modem Function Group found
    Default PCM:
        rates [0x0]:
        bits [0x0]:
        formats [0x0]:
    Default Amp-In caps: N/A
    Default Amp-Out caps: N/A
    GPIO: io=0, o=0, i=0, unsolicited=0, wake=0
    Node 0x02 [Audio Output] wcaps 0x6611: 8-Channels Digital
      Converter: stream=0, channel=0
      Digital: Enabled
      Digital category: 0x0
      PCM:
        rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000
        bits [0x1e]: 16 20 24 32
        formats [0x5]: PCM AC3
      Power states:  D0 D3 EPSS
      Power: setting=D0, actual=D0
    Node 0x03 [Audio Output] wcaps 0x6611: 8-Channels Digital
      Converter: stream=0, channel=0
      Digital: Enabled
      Digital category: 0x0
      PCM:
        rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000
        bits [0x1e]: 16 20 24 32
        formats [0x5]: PCM AC3
      Power states:  D0 D3 EPSS
      Power: setting=D0, actual=D0
    Node 0x04 [Audio Output] wcaps 0x6611: 8-Channels Digital
      Converter: stream=0, channel=0
      Digital: Enabled
      Digital category: 0x0
      PCM:
        rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000
        bits [0x1e]: 16 20 24 32
        formats [0x5]: PCM AC3
      Power states:  D0 D3 EPSS
      Power: setting=D0, actual=D0
    Node 0x05 [Pin Complex] wcaps 0x40778d: 8-Channels Digital Amp-Out CP
      Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
      Amp-Out vals:  [0x00 0x80]
      Pincap 0x09000094: OUT Detect HBR HDMI DP
      Pin Default 0x58560010: [N/A] Digital Out at Int HDMI
        Conn = Digital, Color = Unknown
        DefAssociation = 0x1, Sequence = 0x0
      Pin-ctls: 0x40: OUT
      Unsolicited: tag=00, enabled=0
      Power states:  D0 D3 EPSS
      Power: setting=D0, actual=D0
      Connection: 1
         0x02
    Node 0x06 [Pin Complex] wcaps 0x40778d: 8-Channels Digital Amp-Out CP
      Control: name="HDMI/DP,pcm=3 Jack", index=0, device=0
      Control: name="IEC958 Playback Con Mask", index=0, device=0
      Control: name="IEC958 Playback Pro Mask", index=0, device=0
      Control: name="IEC958 Playback Default", index=0, device=0
      Control: name="IEC958 Playback Switch", index=0, device=0
      Control: name="ELD", index=0, device=3
      Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
      Amp-Out vals:  [0x00 0x00]
      Pincap 0x09000094: OUT Detect HBR HDMI DP
      Pin Default 0x18560020: [Jack] Digital Out at Int HDMI
        Conn = Digital, Color = Unknown
        DefAssociation = 0x2, Sequence = 0x0
      Pin-ctls: 0x00:
      Unsolicited: tag=01, enabled=1
      Power states:  D0 D3 EPSS
      Power: setting=D0, actual=D0
      Connection: 1
         0x03
    Node 0x07 [Pin Complex] wcaps 0x40778d: 8-Channels Digital Amp-Out CP
      Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
      Amp-Out vals:  [0x00 0x80]
      Pincap 0x09000094: OUT Detect HBR HDMI DP
      Pin Default 0x58560030: [N/A] Digital Out at Int HDMI
        Conn = Digital, Color = Unknown
        DefAssociation = 0x3, Sequence = 0x0
      Pin-ctls: 0x40: OUT
      Unsolicited: tag=00, enabled=0
      Power states:  D0 D3 EPSS
      Power: setting=D0, actual=D0
      Connection: 1
         0x04
    Node 0x08 [Vendor Defined Widget] wcaps 0xf00000: Mono
    Here is the output from the analog output device codec#0
    Code:
    $ cat /proc/asound/card0/codec#0
    Codec: Realtek ALC269VB
    Address: 0
    AFG Function Id: 0x1 (unsol 1)
    Vendor Id: 0x10ec0269
    Subsystem Id: 0x10431507
    Revision Id: 0x100100
    No Modem Function Group found
    Default PCM:
        rates [0x560]: 44100 48000 96000 192000
        bits [0xe]: 16 20 24
        formats [0x1]: PCM
    Default Amp-In caps: N/A
    Default Amp-Out caps: N/A
    GPIO: io=2, o=0, i=0, unsolicited=1, wake=0
      IO[0]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0
      IO[1]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0
    Node 0x02 [Audio Output] wcaps 0x1d: Stereo Amp-Out
      Control: name="Headphone Playback Volume", index=0, device=0
        ControlAmp: chs=3, dir=Out, idx=0, ofs=0
      Device: name="ALC269VB Analog", type="Audio", device=0
      Amp-Out caps: ofs=0x57, nsteps=0x57, stepsize=0x02, mute=0
      Amp-Out vals:  [0x4d 0x4d]
      Converter: stream=0, channel=0
      PCM:
        rates [0x560]: 44100 48000 96000 192000
        bits [0xe]: 16 20 24
        formats [0x1]: PCM
    Node 0x03 [Audio Output] wcaps 0x1d: Stereo Amp-Out
      Control: name="Speaker Playback Volume", index=0, device=0
        ControlAmp: chs=3, dir=Out, idx=0, ofs=0
      Amp-Out caps: ofs=0x57, nsteps=0x57, stepsize=0x02, mute=0
      Amp-Out vals:  [0x4d 0x4d]
      Converter: stream=0, channel=0
      PCM:
        rates [0x560]: 44100 48000 96000 192000
        bits [0xe]: 16 20 24
        formats [0x1]: PCM
    Node 0x04 [Vendor Defined Widget] wcaps 0xf00000: Mono
    Node 0x05 [Vendor Defined Widget] wcaps 0xf00000: Mono
    Node 0x06 [Audio Output] wcaps 0x211: Stereo Digital
      Converter: stream=0, channel=0
      Digital:
      Digital category: 0x0
      PCM:
        rates [0x5e0]: 44100 48000 88200 96000 192000
        bits [0xe]: 16 20 24
        formats [0x1]: PCM
    Node 0x07 [Vendor Defined Widget] wcaps 0xf00000: Mono
    Node 0x08 [Audio Input] wcaps 0x10011b: Stereo Amp-In
      Amp-In caps: ofs=0x0b, nsteps=0x1f, stepsize=0x05, mute=1
      Amp-In vals:  [0x8b 0x8b]
      Converter: stream=0, channel=0
      SDI-Select: 0
      PCM:
        rates [0x560]: 44100 48000 96000 192000
        bits [0xe]: 16 20 24
        formats [0x1]: PCM
      Connection: 1
         0x23
    Node 0x09 [Audio Input] wcaps 0x10011b: Stereo Amp-In
      Control: name="Capture Switch", index=0, device=0
      Control: name="Capture Volume", index=0, device=0
      Device: name="ALC269VB Analog", type="Audio", device=0
      Amp-In caps: ofs=0x0b, nsteps=0x1f, stepsize=0x05, mute=1
      Amp-In vals:  [0x11 0x11]
      Converter: stream=0, channel=0
      SDI-Select: 0
      PCM:
        rates [0x560]: 44100 48000 96000 192000
        bits [0xe]: 16 20 24
        formats [0x1]: PCM
      Connection: 1
         0x22
    Node 0x0a [Vendor Defined Widget] wcaps 0xf00000: Mono
    Node 0x0b [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
      Amp-In caps: ofs=0x17, nsteps=0x1f, stepsize=0x05, mute=1
      Amp-In vals:  [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]
      Connection: 5
         0x18 0x19 0x1a 0x1b 0x1d
    Node 0x0c [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
      Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
      Amp-In vals:  [0x00 0x00] [0x00 0x00]
      Connection: 2
         0x02 0x0b
    Node 0x0d [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
      Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
      Amp-In vals:  [0x00 0x00] [0x00 0x00]
      Connection: 2
         0x03 0x0b
    Node 0x0e [Vendor Defined Widget] wcaps 0xf00000: Mono
    Node 0x0f [Audio Mixer] wcaps 0x20010a: Mono Amp-In
      Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
      Amp-In vals:  [0x00] [0x80]
      Connection: 2
         0x02 0x0b
    Node 0x10 [Vendor Defined Widget] wcaps 0xf00000: Mono
    Node 0x11 [Vendor Defined Widget] wcaps 0xf00000: Mono
    Node 0x12 [Pin Complex] wcaps 0x40000b: Stereo Amp-In
      Control: name="Mic Boost Volume", index=0, device=0
        ControlAmp: chs=3, dir=In, idx=0, ofs=0
      Control: name="Mic Phantom Jack", index=0, device=0
      Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x2f, mute=0
      Amp-In vals:  [0x00 0x00]
      Pincap 0x00000020: IN
      Pin Default 0x90a60930: [Fixed] Mic at Int N/A
        Conn = Digital, Color = Unknown
        DefAssociation = 0x3, Sequence = 0x0
        Misc = NO_PRESENCE
      Pin-ctls: 0x20: IN
    Node 0x13 [Vendor Defined Widget] wcaps 0xf00000: Mono
    Node 0x14 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out
      Control: name="Speaker Playback Switch", index=0, device=0
        ControlAmp: chs=3, dir=Out, idx=0, ofs=0
      Control: name="Speaker Phantom Jack", index=0, device=0
      Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
      Amp-Out vals:  [0x00 0x00]
      Pincap 0x00010014: OUT EAPD Detect
      EAPD 0x2: EAPD
      Pin Default 0x90170110: [Fixed] Speaker at Int N/A
        Conn = Analog, Color = Unknown
        DefAssociation = 0x1, Sequence = 0x0
        Misc = NO_PRESENCE
      Pin-ctls: 0x40: OUT
      Unsolicited: tag=00, enabled=0
      Connection: 2
         0x0c 0x0d*
    Node 0x15 [Vendor Defined Widget] wcaps 0xf00000: Mono
    Node 0x16 [Vendor Defined Widget] wcaps 0xf00000: Mono
    Node 0x17 [Pin Complex] wcaps 0x40010c: Mono Amp-Out
      Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
      Amp-Out vals:  [0x80]
      Pincap 0x00000010: OUT
      Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
        Conn = 1/8, Color = Black
        DefAssociation = 0xf, Sequence = 0x0
        Misc = NO_PRESENCE
      Pin-ctls: 0x00:
      Connection: 1
         0x0f
    Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
      Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x2f, mute=0
      Amp-In vals:  [0x00 0x00]
      Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
      Amp-Out vals:  [0x80 0x80]
      Pincap 0x00001734: IN OUT Detect
        Vref caps: HIZ 50 GRD 80
      Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
        Conn = 1/8, Color = Black
        DefAssociation = 0xf, Sequence = 0x0
        Misc = NO_PRESENCE
      Pin-ctls: 0x20: IN VREF_HIZ
      Unsolicited: tag=00, enabled=0
      Connection: 1
         0x0d
    Node 0x19 [Pin Complex] wcaps 0x40008b: Stereo Amp-In
      Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x2f, mute=0
      Amp-In vals:  [0x00 0x00]
      Pincap 0x00001724: IN Detect
        Vref caps: HIZ 50 GRD 80
      Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
        Conn = 1/8, Color = Black
        DefAssociation = 0xf, Sequence = 0x0
        Misc = NO_PRESENCE
      Pin-ctls: 0x20: IN VREF_HIZ
      Unsolicited: tag=00, enabled=0
    Node 0x1a [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
      Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x2f, mute=0
      Amp-In vals:  [0x00 0x00]
      Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
      Amp-Out vals:  [0x80 0x80]
      Pincap 0x0000003c: IN OUT HP Detect
      Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
        Conn = 1/8, Color = Black
        DefAssociation = 0xf, Sequence = 0x0
        Misc = NO_PRESENCE
      Pin-ctls: 0x20: IN
      Unsolicited: tag=00, enabled=0
      Connection: 2
         0x0c* 0x0d
    Node 0x1b [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
      Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x2f, mute=0
      Amp-In vals:  [0x00 0x00]
      Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
      Amp-Out vals:  [0x80 0x80]
      Pincap 0x00000034: IN OUT Detect
      Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
        Conn = 1/8, Color = Black
        DefAssociation = 0xf, Sequence = 0x0
        Misc = NO_PRESENCE
      Pin-ctls: 0x20: IN
      Unsolicited: tag=00, enabled=0
      Connection: 2
         0x0c* 0x0d
    Node 0x1c [Vendor Defined Widget] wcaps 0xf00000: Mono
    Node 0x1d [Pin Complex] wcaps 0x400000: Mono
      Pincap 0x00000020: IN
      Pin Default 0x40089b2d: [N/A] Line Out at Ext N/A
        Conn = DIN, Color = Pink
        DefAssociation = 0x2, Sequence = 0xd
        Misc = NO_PRESENCE
      Pin-ctls: 0x20: IN
    Node 0x1e [Pin Complex] wcaps 0x400381: Stereo Digital
      Pincap 0x00000014: OUT Detect
      Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
        Conn = 1/8, Color = Black
        DefAssociation = 0xf, Sequence = 0x0
        Misc = NO_PRESENCE
      Pin-ctls: 0x40: OUT
      Unsolicited: tag=00, enabled=0
      Connection: 1
         0x06
    Node 0x1f [Vendor Defined Widget] wcaps 0xf00000: Mono
    Node 0x20 [Vendor Defined Widget] wcaps 0xf00040: Mono
      Processing caps: benign=0, ncoeff=25
    Node 0x21 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out
      Control: name="Headphone Playback Switch", index=0, device=0
        ControlAmp: chs=3, dir=Out, idx=0, ofs=0
      Control: name="Headphone Jack", index=0, device=0
      Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
      Amp-Out vals:  [0x00 0x00]
      Pincap 0x0000001c: OUT HP Detect
      Pin Default 0x04211020: [Jack] HP Out at Ext Right
        Conn = 1/8, Color = Black
        DefAssociation = 0x2, Sequence = 0x0
      Pin-ctls: 0xc0: OUT HP
      Unsolicited: tag=01, enabled=1
      Connection: 2
         0x0c* 0x0d
    Node 0x22 [Audio Selector] wcaps 0x30010b: Stereo Amp-In
      Amp-In caps: N/A
      Amp-In vals:  [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
      Connection: 7
         0x18 0x19 0x1a 0x1b 0x1d 0x0b 0x12*
    Node 0x23 [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
      Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
      Amp-In vals:  [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]
      Connection: 6
         0x18 0x19 0x1a 0x1b 0x1d 0x0b
     
  6. ALLurGroceries

    ALLurGroceries Super Moderator

    Reputations:
    9,616
    Messages:
    6,960
    Likes Received:
    777
    Trophy Points:
    281
    Alright I'll check it out. In the meantime:

    Do you have the snd_hda_codec_hdmi module loaded?

    Also there is aplay -L to list all outputs.
     
  7. TuxDude

    TuxDude Notebook Deity

    Reputations:
    255
    Messages:
    921
    Likes Received:
    2
    Trophy Points:
    31
    I do not have access to the laptop now, but I can post the output of aplay -L after I get back home.

    Meanwhile this is what I found. I installed Ubuntu 12.04 LTS, and HDMI audio plays out-of-the-box as soon as I plug into the TV. Even the gnome sound settings automatically shows the device and lets you pick which device should be used for output.

    /proc/asound/cards shows the HDMI output device too. Only the i915 and nouveau drivers were loaded for this to work. So you're right, proprietary nvidia drivers has nothing to do with HDMI audio :)

    I'm adding the content of all /proc/asound information on Ubuntu and openSUSE.
    Output of /proc/asound from Ubuntu 12.04 LTS and 3.5 kernel - Pastebin.com
    Output of /proc/asound on openSUSE 12.2rc2 linux-3.6rc1 - Pastebin.com

    In terms of difference between the 2 I noticed that the following extra files are being shown in the procfs in Ubuntu:
    Code:
    /proc/asound/card0/pcm3p/sub0/prealloc_max
    /proc/asound/card0/pcm3p/sub0/prealloc
    /proc/asound/card0/pcm3p/sub0/status
    /proc/asound/card0/pcm3p/sub0/sw_params
    /proc/asound/card0/pcm3p/sub0/hw_params
    /proc/asound/card0/pcm3p/sub0/info
    /proc/asound/card0/pcm3p/info
    It looks like pcm3p is the HDMI PCM output device.
    Code:
    $ cat /proc/asound/card0/pcm3p/info
    card: 0
    device: 3
    subdevice: 0
    stream: PLAYBACK
    id: HDMI 0
    name: HDMI 0
    subname: subdevice #0
    class: 0
    subclass: 0
    subdevices_count: 1
    subdevices_avail: 1
    
    $ cat /proc/asound/card0/pcm3p/sub0/info
    card: 0
    device: 3
    subdevice: 0
    stream: PLAYBACK
    id: HDMI 0
    name: HDMI 0
    subname: subdevice #0
    class: 0
    subclass: 0
    subdevices_count: 1
    subdevices_avail: 1
    I also read on the Ubuntu forums that even the 3.2 kernels worked fine for HDMI audio output. So it sounds more like a difference of alsa configuration and how it detects PCM output devices.

    Any ideas how to configure an ALSA device based on this info ?
     
  8. TuxDude

    TuxDude Notebook Deity

    Reputations:
    255
    Messages:
    921
    Likes Received:
    2
    Trophy Points:
    31
    Ok - finally figured out that the kernel I compiled from source was the root cause of the problem.

    The 3.4.6-1.1 kernel that came with openSUSE 12.2 RC2 seems to support HDMI out-of-the-box as well :)

    The reason I was using a custom built 3.6-rc1 kernel was to have better support for the asus-wmi driver to get most of the Fn key combinations working. I'll mess around with the config to see if I can get it working with the newer kernel :)
     
  9. simopal6

    simopal6 Newbie

    Reputations:
    0
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    5
    (Sorry for being late)

    Hi TuxDude,
    did you manage to understand what the problem was with the kernel configuration? I also have a custom kernel and the same problem :(
    Thanks!
     
Loading...
Thread Status:
Not open for further replies.

Share This Page