Saya mencoba membuat laptop saya untuk mengganti audio ke HDMI saat dicolokkan, dan kembali ke analog standar saat dilepas.
Saya membuat aturan udev untuk memicu skrip untuk melakukan peralihan, namun saya mengalami masalah saat menjalankannya:
- Tampaknya sampai saya memilih output Audio HDMI di Pengaturan Suara, itu tidak dikenali sebagai wastafel yang tersedia, juga setelah output Audio HDMI dipilih, output analog tidak lagi terdaftar.
Lihat di bawah ini:
# 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
Script yang saya gunakan toggle output adalah sebagai berikut:
#!/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
Script memberikan kesalahan tentang tidak ada wastafel seperti itu ketika saya memicu sebelum saya memilih HDMI dalam pengaturan suara.
sound
14.04
pulseaudio
hdmi
Kingamajick
sumber
sumber
Jawaban:
Periksa kartu & profil yang tersedia
Tambahkan perintah berikut ke skrip untuk mengubah profil sebelum mengatur bak default & stream bergerak
(Jadi tidak perlu beralih secara manual dari Pengaturan Suara)
Referensi:
pactl -h
&man pactl
sumber
Berbasis di ini Link dan ini Link ... i diuji dan bekerja dengan baik ubuntu 14.04
Anda harus membuat aturan di
/etc/udev/rules.d/100-hdmi_sound.rules
dengan konten ini
lalu buat
dengan konten Anda
Saya harap dapat membantu .. maaf untuk bahasa inggris saya saya berbicara bahasa spanyol
sumber
Saya mengalami sedikit kesulitan untuk mengikuti ini. Saya menyalin naskah asli dan memodifikasinya seperti yang disarankan dan sekarang berfungsi.
Saya memasukkannya di sini untuk memudahkan orang lain menggunakannya.
Sekarang, saya hanya ingin memicunya dengan udev, tapi saya tidak tahu bagaimana melakukannya.
sumber
Skrip yang disediakan tidak berfungsi untuk saya dengan udev di luar kotak pada Ubuntu 14.04, saya harus menambahkan:
di awal, konversikan dua perintah pacmd ke pactl dan akhirnya jalankan skrip menggunakan sudo -s -u (pengguna) dari aturan udev.
sumber
Ya, semua skrip yang disediakan tidak berfungsi untuk saya (Ubuntu 16.04), tetapi saya menemukan indikator aplikasi ini yang memungkinkan Anda untuk mengubah output suara hanya dalam satu klik:
https://github.com/lkettenb/sound-output-switcher
(catatan: Anda perlu menginstal paket appindicator pertama:
sudo apt-get install python-appindicator
)Hanya berpikir saya akan meninggalkan ini di sini untuk orang lain yang mungkin berada dalam situasi yang sama dengan saya, meskipun ini merupakan solusi alternatif ... tapi itu membuatnya sangat mudah dan itu terpisah ;-)
sumber
Sekali lagi solusi lain (diuji bekerja pada 16,04) berdasarkan sebelumnya tetapi dengan beberapa perbaikan yang berfungsi menggunakan
pactl
menunjuk tepat ke server yang tepat (dapat ditingkatkan untuk secara otomatis mendapatkan nama kartu dan profil, merujuk kepactl list
ataupactl info
untuk saat ini).Intisari terkait ada di sini .
sumber
card0
tetapi suatu hari beralih kecard1
jadi saya mengubah skrip kemudian hari berikutnya berubah kembali kecard0
. Pada akhirnya saya mengubah kodecard*
dan semuanya baik-baik saja sejak itu. Hanya kepala jika sesuatu yang serupa terjadi pada Anda.Skrip Udev dijalankan sebagai root, tetapi Anda juga harus tahu pengelola tampilan mana yang Anda gunakan. Skrip ini harus berfungsi, tetapi Anda harus mengesahkan manajer tampilan untuk melakukannya.
Temukan DM yang Anda gunakan:
Lihat opsi -auth, itu akan menampilkan manajer tampilan. Ini bisa berupa sddm atau lightdm dalam rilis Ubuntu terbaru.
Baris ini harus diekspor sebagai variabel XAUTHORITY, seperti ini:
misalnya, ini bisa menjadi output yang valid:
/var/lib/mdm/*.Xauth (Ini akan digunakan oleh skrip)
Seperti inilah bentuk skrip Anda:
Ini akan memungkinkan manajer display Anda untuk mengubah output HDMI. Ikuti petunjuk untuk membuat file aturan udev dan membuat skrip dapat dieksekusi.
sumber