Estoy tratando de hacer que mi computadora portátil cambie el audio a HDMI cuando está enchufado, y vuelva a ser analógico estándar cuando se quite.
Configuré una regla udev para activar un script para realizar el cambio, sin embargo, tengo problemas para que funcione:
- Parece que hasta que seleccione la salida de audio HDMI en la configuración de sonido, no se reconoce como un receptor disponible, también una vez que se selecciona la salida de audio HDMI, la salida analógica ya no aparece en la lista.
Mira lo siguiente:
# 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
El script que estoy usando para alternar la salida es el siguiente:
#!/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
El script da un error acerca de que no hay tal sumidero cuando lo disparo antes de seleccionar HDMI en la configuración de sonido.
sound
14.04
pulseaudio
hdmi
Kingamajick
fuente
fuente
Respuestas:
Verifique las tarjetas y perfiles disponibles
Agregue el siguiente comando al script para cambiar el perfil antes de configurar las transmisiones de sumidero y movimiento predeterminadas
(Por lo tanto, no es necesario cambiarlo manualmente desde la Configuración de sonido)
Referencia:
pactl -h
Yman pactl
fuente
Basado en este enlace y este enlace ... probé y FUNCIONA BIEN ubuntu 14.04
deberías crear una regla en
/etc/udev/rules.d/100-hdmi_sound.rules
con este contenido
luego crea
con tu contenido
Espero poder ayudar ... lo siento por mi inglés hablé español
fuente
Tuve algunos problemas para seguir esto. Copié el guión original y lo modifiqué según lo sugerido y ahora funciona.
Lo incluyo aquí para que sea más fácil de usar para otra persona.
Ahora, me gustaría activarlo con udev, pero no tengo idea de cómo hacerlo.
fuente
Los scripts proporcionados no funcionaron para mí con udev listo para usar en Ubuntu 14.04, tuve que agregar:
al principio, convierta los dos comandos pacmd a pactl y finalmente ejecute el script usando sudo -s -u (usuario) de la regla udev.
fuente
Bueno, todos los scripts proporcionados no funcionaron para mí (Ubuntu 16.04), pero encontré este indicador de aplicación que le permite cambiar la salida de sonido con solo un clic:
https://github.com/lkettenb/sound-output-switcher
(nota: es necesario instalar el paquete appindicator primero:
sudo apt-get install python-appindicator
)Solo pensé en dejar esto aquí para otros que podrían estar en la misma situación que yo, a pesar de que es una solución alternativa ... pero lo hace bastante fácil y es discreto ;-)
fuente
Una vez más, otra solución (probada en 16.04) basada en la anterior pero con algunas mejoras que funciona con la
pactl
orientación adecuada al servidor correcto (se puede mejorar para obtener automáticamente los nombres de las tarjetas y los perfiles, consultepactl list
opactl info
por ahora).La esencia relacionada está aquí .
fuente
card0
pero un día se cambió acard1
modo que cambié el script y al día siguiente volvió a cambiarcard0
. Al final cambié el código acard*
y todo está bien desde entonces. Solo un aviso si algo similar te sucede.Los scripts Udev se ejecutan como root, pero también debe saber qué administrador de pantalla está utilizando. Estas secuencias de comandos deberían funcionar, pero debe autorizar a este administrador de pantalla para que lo haga.
Encuentra el DM que estás usando:
Vea la opción -auth, le mostrará el administrador de pantalla. Podría ser sddm ou lightdm en las últimas versiones de Ubuntu.
Esta línea debe exportarse como variable XAUTHORITY, como esta:
por ejemplo, esto podría ser una salida válida:
/var/lib/mdm/:0.Xauth (Esto será utilizado por el script)
Así es como debe verse su script:
Esto permitirá que su administrador de pantalla cambie la salida HDMI. Siga las instrucciones para crear los archivos de reglas de udev y hacer que el script sea ejecutable.
fuente