[pulseaudio-discuss] pactl command to switch sound from speakers to headphone

Wolfram Volpi wolf_volpi at yahoo.com
Fri Mar 9 23:30:58 UTC 2018


I need to quickly switch from speakers to headphone when my PC receives an incoming phone call.
The speakers and headphones are always plugged in.
I am on Fedora 27, Gnome 3.26.2

So I want to write a script that calls a few lines of pactl.
But the pactl commands I tried aren't switching sound from speakers to headphone.

This is what I have tried from the command line:
    $ pactl set-sink-port 1 "analog-output-headphones"
But it didn't effect my speaker or headphone behavior.

I also tried:
    $ pactl set-sink-port 0 "iec958-stereo-output"
    Failure: No such entity

Here are the pactl sinks on my system:
    $ pactl list sinks
    Sink #0
     State: SUSPENDED
     Name: alsa_output.usb-1130_USB_AUDIO-00.iec958-stereo
     Description: USB  AUDIO   Digital Stereo (IEC958)
     Driver: module-alsa-card.c
     Sample Specification: s16le 2ch 48000Hz
     Channel Map: front-left,front-right
     Owner Module: 7
     Mute: no
     Volume: front-left: 15176 /  23% / -38.12 dB,   front-right: 15176 /  23% / -38.12 dB
            balance 0.00
     Base Volume: 65536 / 100% / 0.00 dB
     Monitor Source: alsa_output.usb-1130_USB_AUDIO-00.iec958-stereo.monitor
     Latency: 0 usec, configured 0 usec
     Flags: HARDWARE DECIBEL_VOLUME LATENCY SET_FORMATS 
     Properties:
     alsa.resolution_bits = "16"
    device.api = "alsa"
     device.class = "sound"
    alsa.class = "generic"
     alsa.subclass = "generic-mix"
    alsa.name = "USB Audio"
     alsa.id = "USB Audio"
    alsa.subdevice = "0"
     alsa.subdevice_name = "subdevice #0"
    alsa.device = "0"
     alsa.card = "0"
    alsa.card_name = "USB  AUDIO"
     alsa.long_card_name = "USB  AUDIO at usb-0000:00:14.0-3, full speed"
    alsa.driver_name = "snd_usb_audio"
     device.bus_path = "pci-0000:00:14.0-usb-0:3:1.0"
    sysfs.path = "/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.0/sound/card0"
     udev.id = "usb-1130_USB_AUDIO-00"
    device.bus = "usb"
     device.vendor.id = "1130"
    device.vendor.name = "Tenx Technology, Inc."
     device.product.id = "1620"
    device.product.name = "USB  AUDIO  "
     device.serial = "1130_USB_AUDIO"
    device.string = "iec958:0"
     device.buffering.buffer_size = "384000"
    device.buffering.fragment_size = "192000"
     device.access_mode = "mmap+timer"
    device.profile.name = "iec958-stereo"
     device.profile.description = "Digital Stereo (IEC958)"
     device.description = "USB  AUDIO   Digital Stereo (IEC958)"
     alsa.mixer_name = "USB Mixer"
     alsa.components = "USB1130:1620"
     module-udev-detect.discovered = "1"
     device.icon_name = "audio-card-usb"
     Ports:
     iec958-stereo-output: Digital Output (S/PDIF) (priority: 0)
     Active Port: iec958-stereo-output
     Formats:
     pcm

    Sink #1
     State: SUSPENDED
     Name: alsa_output.pci-0000_00_1b.0.analog-stereo
     Description: Built-in Audio Analog Stereo
     Driver: module-alsa-card.c
     Sample Specification: s16le 2ch 44100Hz
     Channel Map: front-left,front-right
     Owner Module: 8
     Mute: no
     Volume: front-left: 30129 /  46% / -20.25 dB,   front-right: 30129 /  46% / -20.25 dB
            balance 0.00
     Base Volume: 65536 / 100% / 0.00 dB
     Monitor Source: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
     Latency: 0 usec, configured 0 usec
     Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
     Properties:
    alsa.resolution_bits = "16"
     device.api = "alsa"
     device.class = "sound"
     alsa.class = "generic"
     alsa.subclass = "generic-mix"
     alsa.name = "ALC283 Analog"
    alsa.id = "ALC283 Analog"
     alsa.subdevice = "0"
    alsa.subdevice_name = "subdevice #0"
     alsa.device = "0"
    alsa.card = "2"
     alsa.card_name = "HDA Intel PCH"
    alsa.long_card_name = "HDA Intel PCH at 0xf7c30000 irq 47"
     alsa.driver_name = "snd_hda_intel"
    device.bus_path = "pci-0000:00:1b.0"
     sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card2"
    device.bus = "pci"
     device.vendor.id = "8086"
    device.vendor.name = "Intel Corporation"
     device.product.id = "9c20"
    device.product.name = "8 Series HD Audio Controller"
     device.form_factor = "internal"
    device.string = "front:2"
     device.buffering.buffer_size = "352800"
    device.buffering.fragment_size = "176400"
     device.access_mode = "mmap+timer"
    device.profile.name = "analog-stereo"
     device.profile.description = "Analog Stereo"
    device.description = "Built-in Audio Analog Stereo"
     alsa.mixer_name = "Realtek ALC283"
    alsa.components = "HDA:10ec0283,80862054,00100003"
     module-udev-detect.discovered = "1"
    device.icon_name = "audio-card-pci"
     Ports:
    analog-output-headphones: Headphones (priority: 9000, available)
     Active Port: analog-output-headphones
     Formats:
    pcm

Am I on the right track? (I don't know PulseAudio)
set-sink-port only sets the port. What else do I need to set?

Switching sound on Gnome Sound Settings works but it takes a lot of clicks (right-click on Desktop > Settings > Sound).
I have tried "sound-output-device-chooser" but it takes 2 clicks to switch to headphone, and then two more clicks to go back in and adjust the volume.

I posted the question on the LinuxQuestions forum last week, and got 589 views and 0 replies:
https://www.linuxquestions.org/questions/linux-software-2/pactl-command-to-switch-from-speakers-to-headphone-4175624840/


Thank you for your help,

Wolfram Volpi


More information about the pulseaudio-discuss mailing list