Last active
October 22, 2023 12:32
-
-
Save macninja/6c13596f06206eec162f9dce1fc4313b to your computer and use it in GitHub Desktop.
Enable and disable the HDMI port on the Raspberry Pi. Uses cec-hdmi. Works on Raspberry Pi 4 as well.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Enable and disable HDMI output on the Raspberry Pi | |
# The script uses the cec-hdmi command to manage the hdmi interface. | |
# https://pimylifeup.com/raspberrypi-hdmi-cec/ | |
# On a Raspberry Pi 4 i could only get this to work if i used the hdmi 2 port. | |
# To setup the script run "echo 'scan' | cec-client -s -d 1" to identify the adress of the HDMI unit. | |
_CEC_="0.0.0.0" | |
_LOG_="/home/pi/rpi-hdmi.log" | |
is_off() { | |
if [ "$(echo "$(echo "pow $_CEC_" | cec-client -s -d 1)" | awk '/power/ { print $3 }')" != on ] | |
then | |
return 0 | |
else | |
return 1 | |
fi | |
} | |
turn_on() { | |
echo "on $_CEC_" | cec-client -s -d 1 | |
sleep 5 | |
if is_off | |
then | |
# If TV did not turn on exit functin with error | |
return 1 | |
else | |
echo "$(date +"%b %d %T") TV turned on" >> "$_LOG_" | |
fi | |
} | |
turn_off() { | |
echo "standby $_CEC_" | cec-client -s -d 1 | |
sleep 5 | |
if is_off | |
then | |
echo "$(date +"%b %d %T") TV turned off" >> "$_LOG_" | |
else | |
# If TV did not turn off exit functin with error | |
return 1 | |
fi | |
} | |
case $1 in | |
off) | |
while ! turn_off | |
do | |
echo "$(date +"%b %d %T") waiting for tv to turn off" >> "$_LOG_" | |
sleep 5 | |
done | |
;; | |
on) | |
if is_off | |
then | |
while ! turn_on | |
do | |
echo "$(date +"%b %d %T") waiting for tv to turn on" >> "$_LOG_" | |
sleep 5 | |
done | |
curr_vt=$(fgconsole) | |
if [ "$curr_vt" = "1" ] | |
then | |
chvt 2 | |
chvt 1 | |
else | |
chvt 1 | |
chvt "$curr_vt" | |
fi | |
fi | |
;; | |
status) | |
if is_off | |
then | |
echo "off" | |
else | |
echo "on" | |
fi | |
;; | |
*) | |
echo "Usage: $0 on|off|status" >&2 | |
exit 2 | |
;; | |
esac | |
exit $? |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment