Tag Archives: hdmi

Automatyczne przełączanie dźwięku na HDMI

Najczęściej podłączam laptopa do telewizora, aby coś na nim wyświetlić. Chcę wtedy aby obraz i dźwięk szły po kablu HDMI. O ile z obrazem nie ma problemu większego, bo jest automatycznie przełączany, to dźwięk trzeba ustawić samemu.
Jako, że Linuksy mnie rozleniwiły, wolę by robiło sie to samo. Nie jest to skomplikowane.

Tworzymy wykonywalny plik /usr/local/bin/toggle_hdmi_sound z zawartością:

#!/bin/sh
 
USER=`who | grep " :0 " | cut -f1 -d' '`
HDMI_STATUS=`cat /sys/class/drm/card0/*HDMI*/status`
 
export PULSE_SERVER="`pactl info | grep -oE 'unix:.+'`"
 
if [ $HDMI_STATUS = "connected" ]
then
    su $USER -c"pactl --server $PULSE_SERVER set-card-profile 0 output:hdmi-stereo+input:analog-stereo" 
else
    su $USER -c"pactl --server $PULSE_SERVER set-card-profile 0 output:analog-stereo+input:analog-stereo" 
fi

Następnie tworzymy plik /etc/udev/rules.d/hdmi_sound.rules – regułę udev do uruchamiania powyższego polecenia:

KERNEL=="card0", SUBSYSTEM=="drm", ENV{DISPLAY}=":0",  RUN+="/usr/local/bin/hdmi_sound_toggle"

Na koniec wystarczy przeładowac reguły udev:

udevadm control --reload-rules

Dźwięk po HDMI w Arch

Podczas puszczania dźwięku po HDMI w Archu słychać “bzyknięcie” co 10-15 sekund. Bierze się to z różnego próbkowania dźwięku. System domyślnie operuje na 44100 kHz, natomiast po kablu HDMI musi iść dźwięk 48000 kHz.

Jako, że cały dźwięk w Arch obsługuje pulse, najłatwiej to poprawić w nim.  Otwieramy plik /etc/pulse/daemon.conf i odnajdujemy w nim linię:

; default-sample-rate = 44100

Zmieniamy ją na:

default-sample-rate = 48000

Po tym wystarczy uruchomić ponownie komputer i gotowe.