===== HDMI event handler for SBC Tinkerboard =====
We use **ARMBIAN** Linux for Tinkerboards.
We found HDMI events are not handled by default in Armbian. As a result monitor might go to "Power Safe" mode after Power On, HDMI cable connected or resolution changed.
We added HDMI event handler to solve this problem.
1. Script **hdmi-toggle** to handle HDMI is placed in /usr/local/bin folder
!/usr/bin/env bash
USER="$(who | grep :0\) | cut -f 1 -d ' ')"
echo USER ${USER}
sudo chown operator:operator /home/operator/hdmi-toggle.log
echo HDMI-TOGGLE >>/home/operator/hdmi-toggle.log
export XAUTHORITY=/home/$USER/.Xauthority
export DISPLAY=:0
########### Settings ###########
# Use 'xrandr' to find these
#DP="DP-1"
#VGA="VGA-1"
HDMI="HDMI-1"
#INTERNAL_DISPLAY="LVDS-1"
# Check /sys/class/drm for the exact location
#DP_STATUS="$(cat /sys/class/drm/card0-DP-1/status)"
#VGA_STATUS="$(cat /sys/class/drm/card0-VGA-1/status)"
HDMI_STATUS="$(cat /sys/class/drm/card0-HDMI-A-1/status)"
echo ${HDMI_STATUS} >>/home/operator/hdmi-toggle.log
# Do no change!
EXTERNAL_DISPLAY=""
# Check to see if the external display is connected
if [ "${DP_STATUS}" = connected ]; then
EXTERNAL_DISPLAY=$DP
fi
if [ "${VGA_STATUS}" = connected ]; then
EXTERNAL_DISPLAY=$VGA
fi
if [ "${HDMI_STATUS}" = connected ]; then
EXTERNAL_DISPLAY=$HDMI
fi
# The external display is connected
if [ "$EXTERNAL_DISPLAY" != "" ]; then
# Set the display settings
xrandr
xrandr --output HDMI-1 --auto
# xrandr -s 1368x768
else
# Restore to single display
xrandr --output HDMI-1 --off
fi
exit 0
2. **UDEV** rule should be setup to catch events from HDMI. File "99-hdmi.rules" is added to "/etc/udev/rules.d" folder. HDMI rules are
SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/local/bin/hdmi-toggle"
{{tinker:mycnc-tinker--10.png}}