노트북을 연결하면 오디오를 HDMI로 전환하고 제거 할 때 표준 아날로그로 다시 전환하려고합니다.
전환을 수행하기 위해 스크립트를 트리거하도록 udev 규칙을 설정했지만 작동시키는 데 문제가 있습니다.
- 사운드 설정에서 HDMI 오디오 출력을 선택할 때까지 사용 가능한 싱크로 인식되지 않으며 HDMI 오디오 출력을 선택하면 아날로그 출력이 더 이상 표시되지 않습니다.
아래를보십시오 :
# 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
토글을 사용하는 스크립트 출력은 다음과 같습니다.
#!/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
사운드 설정에서 HDMI를 선택하기 전에 트리거 할 때 스크립트가 이러한 싱크가 없다는 오류를 표시합니다.