Debian – How to enable both built-in audio output and HDMI audio output with PulseAudio

audiodebianhdmipulseaudio

I've been searching for this issue for days now and tried various solutions suggested, without any success.

Basically, I have a laptop with built-in audio (the output goes either to the headphone jack or to the built-in speaker) and HDMI. I'm running Debian 7.5 with KDE.

Previously, I was running ALSA only and I was able to configure Skype to ring on the HDMI, but use the headphones for the calls themselves. I'd like to achieve something similar using Pulse.

I'm not sure if Skype still separates ringing and call audio when it sends them to PulseAudio, but as the Linux version of Skype can run arbitrary scripts on events, I would be happy if I could use e.g. aplay to play something on the HDMI port. However, whatever I do, I always see (and can use) a single output device only.

aplay -l:

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

aplay -L:

default
    Playback/recording through the PulseAudio sound server
sysdefault:CARD=PCH
    HDA Intel PCH, ALC269VB Analog
    Default Audio Device
front:CARD=PCH,DEV=0
    HDA Intel PCH, ALC269VB Analog
    Front speakers
surround40:CARD=PCH,DEV=0
    HDA Intel PCH, ALC269VB Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=PCH,DEV=0
    HDA Intel PCH, ALC269VB Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=PCH,DEV=0
    HDA Intel PCH, ALC269VB Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=PCH,DEV=0
    HDA Intel PCH, ALC269VB Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=PCH,DEV=0
    HDA Intel PCH, ALC269VB Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
hdmi:CARD=PCH,DEV=0
    HDA Intel PCH, HDMI 0
    HDMI Audio Output

When I try to use the hdmi device directly, I get the following error:

$ aplay -D hdmi alert.wav
Playing WAVE 'alert.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
aplay: set_params:1087: Channels count non available

In pavucontrol, under the Configuration tab, I see a Profile drop-down with the following options:

Analog Stereo Duplex
Analog Stereo Output
Analog Stereo (HDMI) Output + Analog Stereo Input
Analog Stereo (HDMI) Output
Analog Stereo Input
Off

As far as I can tell, all of these work as (probably) expected: the ones that say HDMI will direct audio output to the HDMI port; the others to the built-in audio card. No matter which one I select, I always see a single output device only under the Output Devices tab.

I've tried adding either the built-in or the HDMI device to /etc/pulse/default.pa using load-module module-alsa-sink device=hw:0,0 and load-module module-alsa-sink device=hw:0,3 – these either seemed to have no effect, or made pulseaudio not display any profiles at all.

Best Answer

I just managed to configure exactly this thanks to the instructions in the ArchLinux wiki :

Set the one sink - HDMI - in pavucontrol/Configuration, and the other - analog output - you specify in default.pa :

load-module module-alsa-sink device=hw:0,0
load-module module-combine-sink sink_name=combined
set-default-sink combined

Maybe you were missing the last two lines?

Addendum: This is OK to add the analog output to HDMI, but what if you want it the other way around? (I want to keep analog input, Pulse calls that "duplex"...) Unfortunately, load-module module-alsa-sink device=hw:0,3 did not work to add HDMI output to Pulse's "Analog Stereo Duplex" configuration. Pulse would start, but no HDMI output.

I compared the output of pacmd list-sinks in the two situations. When I added device=hw:0,3, that one would show up without ports. When HDMI output was chosen in pavucontrol, there would be ports. Looking at the output details, I came up with device=hdmi:0.

Choose "Analog Stereo Duplex" as your pavucontrol configuration, and add to default.pa :

load-module module-alsa-sink device=hdmi:0
load-module module-combine-sink sink_name=combined
set-default-sink combined

Works like a charm. I keep my microphone input, and on pavucontrol/Output Devices I have all options for analog output and for HDMI.

Related Question