Estou tentando fazer com que meu laptop mude o áudio para HDMI quando estiver conectado e de volta ao analógico padrão quando for removido.
Eu configurei uma regra do udev para acionar um script para executar a alternância, no entanto, estou tendo problemas para fazê-lo funcionar:
- Parece que até eu selecionar a saída de áudio HDMI nas Configurações de som, ela não é reconhecida como um coletor disponível, também quando a saída de áudio HDMI é selecionada, a saída analógica não está mais listada.
Veja abaixo:
# 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
O script que estou usando para alternar a saída é o seguinte:
#!/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
O script apresenta um erro sobre esse coletor quando o aciono antes de selecionar HDMI nas configurações de som.
sound
14.04
pulseaudio
hdmi
Kingamajick
fonte
fonte
Respostas:
Verifique os cartões e perfis disponíveis
Inclua o seguinte comando no script para alterar o perfil antes de configurar o coletor padrão e os fluxos em movimento
(Portanto, não é necessário alternar manualmente nas Configurações de som)
Referência:
pactl -h
&man pactl
fonte
Baseado neste link e neste link ... eu testei e funciona bem ubuntu 14.04
você deve criar uma regra em
/etc/udev/rules.d/100-hdmi_sound.rules
com este conteúdo
então crie
com seu conteúdo
Espero que possa ajudar .. desculpe pelo meu inglês eu falava espanhol
fonte
Eu tive um pouco de dificuldade em seguir isso. Copiei o script original e modifiquei-o conforme sugerido e agora funciona.
Estou incluindo aqui para facilitar o uso de outra pessoa.
Agora, eu gostaria de acioná-lo com o udev, mas não tenho noção de como fazer isso.
fonte
Os scripts fornecidos não funcionaram para mim com o udev pronto para uso no Ubuntu 14.04, tive que adicionar:
no início, converta os dois comandos pacmd em pactl e, finalmente, execute o script usando sudo -s -u (user) da regra udev.
fonte
Bem, todos os scripts fornecidos não funcionaram para mim (Ubuntu 16.04), mas eu achei este indicador de aplicativo que permite alterar a saída de som com apenas um clique:
https://github.com/lkettenb/sound-output-switcher
(nota: você precisa instalar o pacote appindicator primeiro:
sudo apt-get install python-appindicator
)Só pensei em deixar isso aqui para outras pessoas que possam estar na mesma situação que eu, mesmo que seja uma solução alternativa ... mas facilita e é discreto ;-)
fonte
Mais uma vez, outra solução (testada em 16.04) com base nas anteriores, mas com algumas melhorias que funcionam usando o
pactl
apontador adequado para o servidor certo (pode ser aprimorada para obter automaticamente nomes dos cartões e perfis, consultepactl list
oupactl info
por enquanto).A essência relacionada está aqui .
fonte
card0
mas um dia ele mudou para,card1
então eu mudei o script e, no dia seguinte, mudei novamente paracard0
. No final, mudei o código paracard*
e está tudo bem desde então. Apenas um alerta se algo semelhante acontecer com você.Os scripts do Udev são executados como raiz, mas você também precisa saber qual gerenciador de exibição está usando. Esses scripts devem funcionar, mas você deve autorizar o gerenciador de exibição a fazê-lo.
Encontre o DM que você está usando:
Veja a opção -auth, ela mostrará o gerenciador de exibição. Pode ser sddm ou lightdm nos últimos lançamentos do Ubuntu.
Esta linha deve ser exportada como variável XAUTHORITY, assim:
por exemplo, isso poderia ser uma saída válida:
/var/lib/mdm/{.Xauth (Isso será usado pelo script)
É assim que seu script deve ficar:
Isso permitirá que o seu gerente de exibição altere a saída HDMI. Siga as instruções para criar os arquivos de regras do udev e tornar o script executável.
fonte