08-05-2019, 21:43
(Ten post był ostatnio modyfikowany: 26-05-2019, 21:38 przez yahoob3.
Powód edycji: jakieś świeczki?!
)
1
.Standardowo, po instalacji systemu jeśli chcemy przełączyć obraz i dźwięk na, np. telewizor przez port HDMI, z obrazem zasadniczo nie ma większego problemu. Dźwięk natomiast musimy ręcznie przełączyć w applecie "Dźwięk".
Jest sposób aby dźwięk przełączał się automatycznie (jak w Windows) po podpięciu wtyczki HDMI do komputera.
Oto on.
UWAGA! Komendy terminala przedstawione są w "nowej wersji", jakiej Mint używa od wydania 19.0.
Sprawdzamy, jaką mamy kartę dźwiękową w komputerze:
Powinno pojawić się coś podobnego w terminalu:
Nazwy karty dźwiękowej w systemie (po kropce!):
Sprawdzamy, jaki numer ma ostatnia reguła w lokalizacji /lib/udev/rules.d/
Jak widzimy ostatnia reguła ma nr 99.
Tworzymy kolejną czyli w tym przypadku 100 ale w lokalizacji /etc/udev/rules.d o nazwie 100-hdmi_sound.rules.
Tworzymy plik ww.:
Otwieramy go do edycji:
Gdzie xed, to nazwa edytora tekstu jaki zainstalowany mamy w systemie. Można użyć także innego graficznego jak: mousepad, pluma, gedit czy innego edytora tekstu, w zależności od tego, jaki dostępny jest w systemie.
Otworzy nam się puste okno edytora, w które wklejamy następujący kod:
Zapisujemy zmiany i zamykamy okno edytora.
Teraz tworzymy skrypt, który będzie przełączał dźwięk.
Tworzymy plik:
Otwieramy go do edycji:
Znów otworzy się puste okno edytora, w które wklejamy przygotowany specjalnie dla naszego sprzętu kod skryptu (to tu jest potrzebny wynik komendy z początku tego poradnika).
Linijki kodu, które należy zmodyfikować, opisane są zakomentowanym tekstem (#), aby był ignorowany podczas wykonywania kodu.
Zapisujemy i zamykamy okno edytora.
Następnie nadajemy temu plikowi prawa wykonania (w końcu to skrypt - ma się _wykonać_ )
Musimy jeszcze odświeżyć listę reguł poleceniem:
i zrestartować komputer, np. sudo reboot
Po ponownym uruchomieniu komputera powinno działać mniej więcej tak: http://venco.com.pl/~yahoob3/priv/tajne/HDMI.mp4
Przepis i treść jednego ze skryptów zaczerpnąłem ze strony: http://askubuntu.com/questions/458194/sw...ptop-14-04
Posiłkowałem się jednak jeszcze takimi materiałami:
- UDEV, czyli jak pisać reguły dla urządzeń,
- https://pl.wikipedia.org/wiki/Filesystem...y_Standard
- https://pl.wikibooks.org/wiki/Linux/Syst...log%C3%B3w
- https://forum.linuxmint.pl/showthread.php?tid=36 dzięki @magnus
Jest sposób aby dźwięk przełączał się automatycznie (jak w Windows) po podpięciu wtyczki HDMI do komputera.
Oto on.
UWAGA! Komendy terminala przedstawione są w "nowej wersji", jakiej Mint używa od wydania 19.0.
Sprawdzamy, jaką mamy kartę dźwiękową w komputerze:
Kod:
pactl list cards
Powinno pojawić się coś podobnego w terminalu:
Cytat:jw@MINT ~ $ pactl list cardsaby automatycznie przełączyć dźwięk na TV potrzebujemy dwóch informacji:
0. karta
Nazwa: alsa_card.pci-0000_00_1b.0
Sterownik: module-alsa-card.c
Właściciel modułu: 6
Właściwości:
alsa.card = "0"
alsa.card_name = "HDA Intel PCH"
alsa.long_card_name = "HDA Intel PCH at 0xd3610000 irq 29"
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 = "1e20"
device.product.name = "7 Series/C210 Series Chipset Family High Definition Audio Controller"
device.form_factor = "internal"
device.string = "0"
device.description = "Wbudowany dźwięk"
module-udev-detect.discovered = "1"
device.icon_name = "audio-card-pci"
Profile:
input:analog-stereo: Wejście Analogowe stereo (odpływy: 0, źródła: 1, priorytet: 60, dostępne: tak)
output:analog-stereo: Wyjście Analogowe stereo (odpływy: 1, źródła: 0, priorytet: 6000, dostępne: tak)
output:analog-stereo+input:analog-stereo: Analogowy dupleks stereo (odpływy: 1, źródła: 1, priorytet: 6060, dostępne: tak)
output:hdmi-stereo: Wyjście Digital Stereo (HDMI) (odpływy: 1, źródła: 0, priorytet: 5400, dostępne: tak)
output:hdmi-stereo+input:analog-stereo: Wyjście Digital Stereo (HDMI) + Wejście Analogowe stereo (odpływy: 1, źródła: 1, priorytet: 5460, dostępne: tak)
output:hdmi-surround: Wyjście Digital Surround 5.1 (HDMI) (odpływy: 1, źródła: 0, priorytet: 300, dostępne: tak)
output:hdmi-surround+input:analog-stereo: Wyjście Digital Surround 5.1 (HDMI) + Wejście Analogowe stereo (odpływy: 1, źródła: 1, priorytet: 360, dostępne: tak)
output:hdmi-surround71: Wyjście Digital Surround 7.1 (HDMI) (odpływy: 1, źródła: 0, priorytet: 300, dostępne: tak)
output:hdmi-surround71+input:analog-stereo: Wyjście Digital Surround 7.1 (HDMI) + Wejście Analogowe stereo (odpływy: 1, źródła: 1, priorytet: 360, dostępne: tak)
off: Wyłączone (odpływy: 0, źródła: 0, priorytet: 0, dostępne: tak)
Aktywny profil: output:analog-stereo
Porty:
analog-input-internal-mic: Wewnętrzny mikrofon (priority: 8900, latency offset: 0 usec)
Właściwości:
device.icon_name = "audio-input-microphone"
Część profilu: input:analog-stereo, output:analog-stereo+input:analog-stereo, output:hdmi-stereo+input:analog-stereo, output:hdmi-surround+input:analog-stereo, output:hdmi-surround71+input:analog-stereo
analog-input-mic: Mikrofon (priority: 8700, latency offset: 0 usec, not available)
Właściwości:
device.icon_name = "audio-input-microphone"
Część profilu: input:analog-stereo, output:analog-stereo+input:analog-stereo, output:hdmi-stereo+input:analog-stereo, output:hdmi-surround+input:analog-stereo, output:hdmi-surround71+input:analog-stereo
analog-output-speaker: Głośniki (priority: 10000, latency offset: 0 usec)
Właściwości:
device.icon_name = "audio-speakers"
Część profilu: output:analog-stereo, output:analog-stereo+input:analog-stereo
analog-output-headphones: Słuchawki (priority: 9000, latency offset: 0 usec, not available)
Właściwości:
device.icon_name = "audio-headphones"
Część profilu: output:analog-stereo, output:analog-stereo+input:analog-stereo
hdmi-output-0: HDMI / DisplayPort (priority: 5900, latency offset: 0 usec, not available)
Właściwości:
device.icon_name = "video-display" Część profilu: output:hdmi-stereo, output:hdmi-stereo+input:analog-stereo, output:hdmi-surround, output:hdmi-surround+input:analog-stereo, output:hdmi-surround71, output:hdmi-surround71+input:analog-stereo[
Nazwy karty dźwiękowej w systemie (po kropce!):
Cytat:Nazwa: alsa_card.pci-0000_00_1b.0oraz nazw profili, pomiędzy którymi skrypt będzie przełączał dźwięk:
Cytat:Profile:
output:analog-stereo: Wyjście Analogowe stereo (odpływy: 1, źródła: 0, priorytet: 6000, dostępne: tak)
output:hdmi-stereo: Wyjście Digital Stereo (HDMI) (odpływy: 1, źródła: 0, priorytet: 5400, dostępne: tak)
Sprawdzamy, jaki numer ma ostatnia reguła w lokalizacji /lib/udev/rules.d/
Jak widzimy ostatnia reguła ma nr 99.
Tworzymy kolejną czyli w tym przypadku 100 ale w lokalizacji /etc/udev/rules.d o nazwie 100-hdmi_sound.rules.
Tworzymy plik ww.:
Kod:
sudo touch /etc/udev/rules.d/100-hdmi_sound.rules
Otwieramy go do edycji:
Kod:
xed admin:///etc/udev/rules.d/100-hdmi_sound.rules
Gdzie xed, to nazwa edytora tekstu jaki zainstalowany mamy w systemie. Można użyć także innego graficznego jak: mousepad, pluma, gedit czy innego edytora tekstu, w zależności od tego, jaki dostępny jest w systemie.
Otworzy nam się puste okno edytora, w które wklejamy następujący kod:
Kod:
ACTION=="change", SUBSYSTEM=="drm", RUN+="/usr/bin/hdmi_sound_toggle.sh"
Teraz tworzymy skrypt, który będzie przełączał dźwięk.
Tworzymy plik:
Kod:
sudo touch /usr/bin/hdmi_sound_toggle.sh
Otwieramy go do edycji:
Kod:
xed admin:///usr/bin/hdmi_sound_toggle.sh
Znów otworzy się puste okno edytora, w które wklejamy przygotowany specjalnie dla naszego sprzętu kod skryptu (to tu jest potrzebny wynik komendy z początku tego poradnika).
Linijki kodu, które należy zmodyfikować, opisane są zakomentowanym tekstem (#), aby był ignorowany podczas wykonywania kodu.
Kod:
#!/bin/bash
USER_NAME=$(who | grep tty$(sudo fgconsole) | cut -f1 -d' ')
USER_ID=$(id -u "$USER_NAME")
HDMI_STATUS=$(</sys/class/drm/card0/*HDMI*/status)
HDMI_CARD="pci-0000_00_1b.0" # Tu wstawiamy nazwę karty dźwiękowej - zgodnie z danymi z pierwszej komendy.
HDMI_PROFILE="hdmi-stereo" # Tu wstawiamy nazwę profilu HDMI, na który dźwięk będzie przełączany po podpięciu wtyczki HDMI.
INTERNAL_CARD="pci-0000_00_1b.0" # Tu wstawiamy jeszcze raz nazwę karty dźwiękowej - zgodnie z danymi z pierwszej komendy.
INTERNAL_PROFILE="analog-stereo" # Tu wstawiamy nazwę profilu domyślnego (głośniki), który będzie używany gdy wtyczka HDMI nie będzie podpięta.
export LANG=C
export PULSE_SERVER="unix:/run/user/$USER_ID/pulse/native"
function pactl_cmd() {
sudo -u $USER_NAME pactl --server $PULSE_SERVER $*
}
if [ "$HDMI_STATUS" = "connected" ]; then
CARD=$HDMI_CARD
OUTPUT=$HDMI_PROFILE
else
CARD=$INTERNAL_CARD
OUTPUT=$INTERNAL_PROFILE
fi
pactl_cmd set-default-sink alsa_output.$CARD.$OUTPUT
pactl_cmd set-card-profile alsa_card.$CARD output:$OUTPUT
INPUTS=($(pactl_cmd list sink-inputs | grep "^Sink Input #"|cut -d# -f2))
for i in ${INPUTS[*]}; do
pactl_cmd move-sink-input $i alsa_output.$CARD.$OUTPUT
done
Zapisujemy i zamykamy okno edytora.
Następnie nadajemy temu plikowi prawa wykonania (w końcu to skrypt - ma się _wykonać_ )
Kod:
sudo chmod +x /usr/bin/hdmi_sound_toggle.sh
Musimy jeszcze odświeżyć listę reguł poleceniem:
Kod:
sudo udevadm control --reload-rules
i zrestartować komputer, np. sudo reboot
Po ponownym uruchomieniu komputera powinno działać mniej więcej tak: http://venco.com.pl/~yahoob3/priv/tajne/HDMI.mp4
Przepis i treść jednego ze skryptów zaczerpnąłem ze strony: http://askubuntu.com/questions/458194/sw...ptop-14-04
Posiłkowałem się jednak jeszcze takimi materiałami:
- UDEV, czyli jak pisać reguły dla urządzeń,
- https://pl.wikipedia.org/wiki/Filesystem...y_Standard
- https://pl.wikibooks.org/wiki/Linux/Syst...log%C3%B3w
- https://forum.linuxmint.pl/showthread.php?tid=36 dzięki @magnus