Debian – How to setup pulseaudio to use both digital and analog ports from 2 profiles

debianpulseaudioxfce

I have recently installed Debian Testing with Xfce as my desktop environment. I use the built-in Realtek sound card of my motherboard.

On Windows, or when I tried Debian with GNOME, I was able to easily switch between the digital and analog outputs (S/PDIF and Headphones), however so far I have only been able to do that by switching profiles using pavucontrol.

The Digital Stereo (IEC958) Output profile shows only one port: Digital Output (S/PDIF).
The Analog Stereo Output profile shows two ports: Line Out (unplugged) and Headphones (plugged in).

Is there a way to have the Headphones and S/PDIF ports on one profile or is that the way pulseaudio works?

Here's the relevant section of pacmd list-cards:

index: 1
name: <alsa_card.pci-0000_00_1b.0>
driver: <module-alsa-card.c>
owner module: 7
properties:
    alsa.card = "0"
    alsa.card_name = "HDA Intel PCH"
    alsa.long_card_name = "HDA Intel PCH at 0xf7130000 irq 30"
    alsa.driver_name = "snd_hda_intel"
    device.bus_path = "pci-0000:00:1b.0"
    sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card0"
    device.bus = "pci"
    device.vendor.id = "8086"
    device.vendor.name = "Intel Corporation"
    device.product.id = "8c20"
    device.product.name = "8 Series/C220 Series Chipset High Definition Audio Controller"
    device.form_factor = "internal"
    device.string = "0"
    device.description = "Built-in Audio"
    module-udev-detect.discovered = "1"
    device.icon_name = "audio-card-pci"
profiles:
    input:analog-stereo: Analog Stereo Input (priority 60, available: unknown)
    input:iec958-stereo: Digital Stereo (IEC958) Input (priority 55, available: unknown)
    output:analog-stereo: Analog Stereo Output (priority 6000, available: unknown)
    output:analog-stereo+input:analog-stereo: Analog Stereo Duplex (priority 6060, available: unknown)
    output:analog-stereo+input:iec958-stereo: Analog Stereo Output + Digital Stereo (IEC958) Input (priority 6055, available: unknown)
    output:analog-surround-21: Analog Surround 2.1 Output (priority 800, available: no)
    output:analog-surround-21+input:analog-stereo: Analog Surround 2.1 Output + Analog Stereo Input (priority 860, available: unknown)
    output:analog-surround-21+input:iec958-stereo: Analog Surround 2.1 Output + Digital Stereo (IEC958) Input (priority 855, available: unknown)
    output:analog-surround-40: Analog Surround 4.0 Output (priority 700, available: no)
    output:analog-surround-40+input:analog-stereo: Analog Surround 4.0 Output + Analog Stereo Input (priority 760, available: unknown)
    output:analog-surround-40+input:iec958-stereo: Analog Surround 4.0 Output + Digital Stereo (IEC958) Input (priority 755, available: unknown)
    output:analog-surround-41: Analog Surround 4.1 Output (priority 800, available: no)
    output:analog-surround-41+input:analog-stereo: Analog Surround 4.1 Output + Analog Stereo Input (priority 860, available: unknown)
    output:analog-surround-41+input:iec958-stereo: Analog Surround 4.1 Output + Digital Stereo (IEC958) Input (priority 855, available: unknown)
    output:analog-surround-50: Analog Surround 5.0 Output (priority 700, available: no)
    output:analog-surround-50+input:analog-stereo: Analog Surround 5.0 Output + Analog Stereo Input (priority 760, available: unknown)
    output:analog-surround-50+input:iec958-stereo: Analog Surround 5.0 Output + Digital Stereo (IEC958) Input (priority 755, available: unknown)
    output:analog-surround-51: Analog Surround 5.1 Output (priority 800, available: no)
    output:analog-surround-51+input:analog-stereo: Analog Surround 5.1 Output + Analog Stereo Input (priority 860, available: unknown)
    output:analog-surround-51+input:iec958-stereo: Analog Surround 5.1 Output + Digital Stereo (IEC958) Input (priority 855, available: unknown)
    output:iec958-stereo: Digital Stereo (IEC958) Output (priority 5500, available: unknown)
    output:iec958-stereo+input:analog-stereo: Digital Stereo (IEC958) Output + Analog Stereo Input (priority 5560, available: unknown)
    output:iec958-stereo+input:iec958-stereo: Digital Stereo Duplex (IEC958) (priority 5555, available: unknown)
    off: Off (priority 0, available: unknown)
active profile: <output:iec958-stereo>
sinks:
    alsa_output.pci-0000_00_1b.0.iec958-stereo/#36: Built-in Audio Digital Stereo (IEC958)
sources:
    alsa_output.pci-0000_00_1b.0.iec958-stereo.monitor/#46: Monitor of Built-in Audio Digital Stereo (IEC958)
ports:
    analog-input-front-mic: Front Microphone (priority 8500, latency offset 0 usec, available: yes)
        properties:
            device.icon_name = "audio-input-microphone"
    analog-input-rear-mic: Rear Microphone (priority 8200, latency offset 0 usec, available: no)
        properties:
            device.icon_name = "audio-input-microphone"
    analog-input-linein: Line In (priority 8100, latency offset 0 usec, available: no)
        properties:

    iec958-stereo-input: Digital Input (S/PDIF) (priority 0, latency offset 0 usec, available: unknown)
        properties:

    analog-output-lineout: Line Out (priority 9900, latency offset 0 usec, available: no)
        properties:

    analog-output-headphones: Headphones (priority 9000, latency offset 0 usec, available: yes)
        properties:
            device.icon_name = "audio-headphones"
    iec958-stereo-output: Digital Output (S/PDIF) (priority 0, latency offset 0 usec, available: unknown)
        properties:

Best Answer

For anyone else finding this question in search of a solution, this is what worked for me.

Open /usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf, and add this to it:

[Profile output:analog-stereo+output:iec958-stereo+input:analog-stereo]
description = Digital Stereo (IEC958) Output + Analog Stereo Duplex
output-mappings = analog-stereo iec958-stereo
input-mappings = analog-stereo

This will create a profile that'll include Analog Stereo Input + Output and Digital Stereo Output.

To apply the changes restart the PulseAudio daemon:

pulseaudio --kill
pulseaudio --start

Now you should see be able to use the new profile in pavucontrol, and use both outputs at the same time.

Related Question