Sto cercando di convincere il mio laptop a cambiare l'audio su HDMI quando è collegato e tornare all'analogo standard quando viene rimosso.
Ho impostato una regola udev per attivare uno script per eseguire il passaggio, tuttavia ho problemi a farlo funzionare:
- Sembra che fino a quando non seleziono l'uscita audio HDMI nelle Impostazioni audio, non venga riconosciuto come un sink disponibile, anche una volta selezionata l'uscita HDMI Audio, l'uscita analogica non viene più elencata.
Vedi sotto:
# HDMI plugged in, not selected in Sound settings.
$ pactl list short sinks
5 alsa_output.pci-0000_00_1b.0.analog-stereo module-alsa-card.c s16le 2ch 44100Hz SUSPENDED
kingamajick@kingamajick-laptop: ~
# HDMI selected in sound settings
$ pactl list short sinks
7 alsa_output.pci-0000_00_1b.0.hdmi-stereo module-alsa-card.c s16le 2ch 48000Hz SUSPENDED
kingamajick@kingamajick-laptop: ~
# HDMI removed
$ pactl list short sinks
9 alsa_output.pci-0000_00_1b.0.analog-stereo module-alsa-card.c s16le 2ch 48000Hz SUSPENDED
Lo script che sto usando per attivare / disattivare l'output è il seguente:
#!/bin/bash
HDMI_STATUS=`cat /sys/class/drm/card0/*HDMI*/status`
INPUTS=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))
if [ $HDMI_STATUS = "connected" ]
then
pactl set-default-sink alsa_output.pci-0000_00_1b.0.hdmi-stereo
for i in ${INPUTS[*]}; do pacmd move-sink-input $i alsa_output.pci-0000_00_1b.0.hdmi-stereo &> /dev/null; done
else
pactl set-default-sink alsa_output.pci-0000_00_1b.0.analog-stereo
for i in ${INPUTS[*]}; do pacmd move-sink-input $i alsa_output.pci-0000_00_1b.0.analog-stereo &> /dev/null; done-server $PULSE_SERVER set-card-profile 0 output:analog-stereo+input:analog-stereo
fi
Lo script fornisce un errore su tale sink quando lo innesco prima di selezionare HDMI nelle impostazioni audio.