2013-05-19 17:43:14 +02:00
|
|
|
#!/bin/sh
|
|
|
|
|
2014-02-23 00:01:50 +01:00
|
|
|
## This script is Linux only.
|
|
|
|
##
|
2013-06-08 17:05:08 +02:00
|
|
|
## This script will toggle HDMI Audio (and set video properly). To do this
|
2014-02-23 00:01:50 +01:00
|
|
|
## automatically when the cable is plugged, add the following udev rule:
|
2013-06-08 17:05:08 +02:00
|
|
|
##
|
2013-05-19 17:43:14 +02:00
|
|
|
## $ cat /etc/udev/rules.d/hdmi.rules
|
|
|
|
## SUBSYSTEM=="drm", ACTION=="change", RUN+="/bin/sh /usr/local/bin/hdmi-switch"
|
2013-06-08 17:05:08 +02:00
|
|
|
##
|
|
|
|
## To get audio working on radeon, you may need to boot with the following
|
|
|
|
## kernel paremeter:
|
|
|
|
##
|
|
|
|
## radeon.audio=1
|
2013-05-19 17:43:14 +02:00
|
|
|
|
2013-05-21 21:57:54 +02:00
|
|
|
if [ $(id -u) -ne 0 ]; then
|
2014-11-12 16:15:39 +01:00
|
|
|
echo "You must be root to run this script."
|
|
|
|
exit
|
2013-05-21 21:57:54 +02:00
|
|
|
fi
|
2013-05-19 17:43:14 +02:00
|
|
|
|
|
|
|
ALSACONF="/etc/asound.conf"
|
2014-02-23 00:01:50 +01:00
|
|
|
HDMI_STATUS="$(cat /sys/class/drm/card0-HDMI-A-1/status)"
|
|
|
|
[ -z "$HDMI_STATUS" ] && exit
|
2013-05-19 17:43:14 +02:00
|
|
|
|
2014-02-23 00:01:50 +01:00
|
|
|
BUF="$(aplay -l | grep HDMI)"
|
|
|
|
_getprop() {
|
2014-11-12 16:15:39 +01:00
|
|
|
echo "$BUF" | awk -v prop="$1" '{for(i=1; i<NF; i++) if ($i == prop) { print substr($(i+1), 1,1); exit}}'
|
2014-02-23 00:01:50 +01:00
|
|
|
}
|
2013-05-19 17:43:14 +02:00
|
|
|
|
2014-02-23 00:01:50 +01:00
|
|
|
CARD="$(_getprop card)"
|
|
|
|
DEVICE="$(_getprop device)"
|
2013-05-19 17:43:14 +02:00
|
|
|
|
2013-12-09 01:44:02 +01:00
|
|
|
udevadm settle --quiet --timeout=2
|
2013-05-21 21:57:54 +02:00
|
|
|
|
2013-05-19 17:43:14 +02:00
|
|
|
## Video
|
|
|
|
for i in $(xrandr | awk '/^[[:alnum:]-]+ connected/ {print $1}'); do
|
2014-11-12 16:15:39 +01:00
|
|
|
xrandr --output "$i" --auto
|
2013-05-19 17:43:14 +02:00
|
|
|
done
|
|
|
|
|
|
|
|
## Sound
|
|
|
|
if [ "$HDMI_STATUS" = "connected" ]; then
|
2014-11-12 16:15:39 +01:00
|
|
|
cat<<EOF > "$ALSACONF"
|
2014-02-23 00:01:50 +01:00
|
|
|
pcm.!default {
|
2014-11-12 16:15:39 +01:00
|
|
|
type hw
|
|
|
|
card $CARD
|
|
|
|
device $DEVICE
|
2014-02-23 00:01:50 +01:00
|
|
|
}
|
|
|
|
EOF
|
2014-11-12 16:15:39 +01:00
|
|
|
chmod 644 "${ALSACONF}"
|
|
|
|
echo "HDMI sound enabled"
|
2013-05-19 17:43:14 +02:00
|
|
|
else
|
2014-11-12 16:15:39 +01:00
|
|
|
rm -f "$ALSACONF"
|
|
|
|
echo "HDMI sound disabled"
|
2013-05-19 17:43:14 +02:00
|
|
|
fi
|