mirror of
https://github.com/okunze/Argon40-ArgonOne-Script.git
synced 2025-06-30 00:37:30 +02:00
Automated Change by GitHub Action
This commit is contained in:
committed by
github-actions[bot]
parent
1a7ab2e005
commit
755a2ca262
345
source/scripts/argonone-irconfig.sh
Normal file
345
source/scripts/argonone-irconfig.sh
Normal file
@ -0,0 +1,345 @@
|
||||
#!/bin/bash
|
||||
|
||||
|
||||
if [ -e /boot/firmware/config.txt ] ; then
|
||||
FIRMWARE=/firmware
|
||||
else
|
||||
FIRMWARE=
|
||||
fi
|
||||
CONFIG=/boot${FIRMWARE}/config.txt
|
||||
|
||||
CHECKGPIOMODE="libgpiod" # gpiod or rpigpio
|
||||
|
||||
# Check if Raspbian
|
||||
CHECKPLATFORM="Others"
|
||||
if [ -f "/etc/os-release" ]
|
||||
then
|
||||
source /etc/os-release
|
||||
if [ "$ID" = "raspbian" ]
|
||||
then
|
||||
CHECKPLATFORM="Raspbian"
|
||||
elif [ "$ID" = "debian" ]
|
||||
then
|
||||
# For backwards compatibility, continue using raspbian
|
||||
CHECKPLATFORM="Raspbian"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
echo "-----------------------------"
|
||||
echo " Argon IR Configuration Tool"
|
||||
echo "------------------------------"
|
||||
echo "WARNING: This only supports NEC"
|
||||
echo " protocol only."
|
||||
echo -n "Press Y to continue:"
|
||||
read -n 1 confirm
|
||||
echo
|
||||
|
||||
if [ "$confirm" = "y" ]
|
||||
then
|
||||
confirm="Y"
|
||||
fi
|
||||
|
||||
if [ "$confirm" != "Y" ]
|
||||
then
|
||||
echo "Cancelled"
|
||||
exit
|
||||
fi
|
||||
echo "Thank you."
|
||||
|
||||
get_number () {
|
||||
read curnumber
|
||||
if [ -z "$curnumber" ]
|
||||
then
|
||||
echo "-2"
|
||||
return
|
||||
elif [[ $curnumber =~ ^[+-]?[0-9]+$ ]]
|
||||
then
|
||||
if [ $curnumber -lt 0 ]
|
||||
then
|
||||
echo "-1"
|
||||
return
|
||||
elif [ $curnumber -gt 100 ]
|
||||
then
|
||||
echo "-1"
|
||||
return
|
||||
fi
|
||||
echo $curnumber
|
||||
return
|
||||
fi
|
||||
echo "-1"
|
||||
return
|
||||
}
|
||||
|
||||
irexecrcfile=/etc/lirc/irexec.lircrc
|
||||
irexecshfile=/etc/argon/argonirexec
|
||||
irdecodefile=/etc/argon/argonirdecoder
|
||||
kodiuserdatafolder="$HOME/.kodi/userdata"
|
||||
kodilircmapfile="$kodiuserdatafolder/Lircmap.xml"
|
||||
remotemode=""
|
||||
needinstallation=0
|
||||
|
||||
loopflag=1
|
||||
while [ $loopflag -eq 1 ]
|
||||
do
|
||||
echo
|
||||
echo "Select remote control to configure:"
|
||||
echo " 1. Configure Remote ON/OFF Button"
|
||||
if [ "$CHECKPLATFORM" = "Raspbian" ]
|
||||
then
|
||||
echo " 2. Configure Other Remote Buttons"
|
||||
if [ ! -f "$irexecshfile" ]
|
||||
then
|
||||
echo " 3. Cancel"
|
||||
echo -n "Enter Number (1-3):"
|
||||
|
||||
newmode=$( get_number )
|
||||
if [[ $newmode -ge 1 && $newmode -le 3 ]]
|
||||
then
|
||||
loopflag=0
|
||||
if [ $newmode -eq 3 ]
|
||||
then
|
||||
newmode=4
|
||||
fi
|
||||
fi
|
||||
|
||||
else
|
||||
echo " 3. Uninstall Other Remote Buttons"
|
||||
echo " 4. Cancel"
|
||||
echo -n "Enter Number (1-4):"
|
||||
newmode=$( get_number )
|
||||
if [[ $newmode -ge 1 && $newmode -le 4 ]]
|
||||
then
|
||||
loopflag=0
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo " 2. Cancel"
|
||||
echo -n "Enter Number (1-2):"
|
||||
|
||||
newmode=$( get_number )
|
||||
if [[ $newmode -ge 1 && $newmode -le 2 ]]
|
||||
then
|
||||
loopflag=0
|
||||
if [ $newmode -eq 2 ]
|
||||
then
|
||||
newmode=4
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
echo
|
||||
if [ $newmode -eq 3 ]
|
||||
then
|
||||
irtmpconfigfile=/dev/shm/argonirconfig.txt
|
||||
sudo systemctl stop irexec.service
|
||||
sudo systemctl disable irexec.service
|
||||
sudo apt-get -y remove lirc
|
||||
sudo rm $irexecshfile
|
||||
sudo rm $irdecodefile
|
||||
|
||||
sudo cat $CONFIG | grep -v 'dtoverlay=gpio-ir,gpio_pin=23' > $irtmpconfigfile
|
||||
cat $irtmpconfigfile | sudo tee $CONFIG 1> /dev/null
|
||||
sudo rm $irtmpconfigfile
|
||||
|
||||
echo "Uninstall Completed"
|
||||
echo "Please reboot for changes to take effect"
|
||||
exit
|
||||
elif [ $newmode -eq 1 ]
|
||||
then
|
||||
loopflag=1
|
||||
while [ $loopflag -eq 1 ]
|
||||
do
|
||||
echo
|
||||
echo "Select remote control to configure:"
|
||||
echo " 1. Use Argon Remote ON/OFF Button"
|
||||
echo " 2. Use Custom Remote ON/OFF Button"
|
||||
echo " 3. Cancel"
|
||||
echo -n "Enter Number (1-3):"
|
||||
newmode=$( get_number )
|
||||
if [[ $newmode -ge 1 && $newmode -le 4 ]]
|
||||
then
|
||||
loopflag=0
|
||||
fi
|
||||
done
|
||||
|
||||
if [ $newmode -eq 3 ]
|
||||
then
|
||||
echo "Cancelled"
|
||||
exit
|
||||
elif [ $newmode -eq 1 ]
|
||||
then
|
||||
remotemode="resetpower"
|
||||
elif [ $newmode -eq 2 ]
|
||||
then
|
||||
remotemode="power"
|
||||
fi
|
||||
elif [ $newmode -eq 2 ]
|
||||
then
|
||||
echo "-----------------------------"
|
||||
echo " Argon IR Configuration Tool"
|
||||
echo "-----------------------------"
|
||||
echo "WARNING: This will install LIRC"
|
||||
echo " and related libraries."
|
||||
echo -n "Press Y to agree:"
|
||||
read -n 1 confirm
|
||||
echo
|
||||
|
||||
if [ "$confirm" = "y" ]
|
||||
then
|
||||
confirm="Y"
|
||||
fi
|
||||
|
||||
if [ "$confirm" != "Y" ]
|
||||
then
|
||||
echo "Cancelled"
|
||||
exit
|
||||
fi
|
||||
echo "Thank you."
|
||||
|
||||
|
||||
needinstallation=1
|
||||
loopflag=1
|
||||
while [ $loopflag -eq 1 ]
|
||||
do
|
||||
echo
|
||||
echo "Select remote control to configure:"
|
||||
echo " 1. Use Argon Remote Buttons"
|
||||
echo " 2. Use Custom Remote Buttons"
|
||||
echo " 3. Cancel"
|
||||
echo -n "Enter Number (1-3):"
|
||||
newmode=$( get_number )
|
||||
if [[ $newmode -ge 1 && $newmode -le 4 ]]
|
||||
then
|
||||
loopflag=0
|
||||
fi
|
||||
done
|
||||
|
||||
if [ $newmode -eq 3 ]
|
||||
then
|
||||
echo "Cancelled"
|
||||
exit
|
||||
elif [ $newmode -eq 1 ]
|
||||
then
|
||||
remotemode="default"
|
||||
elif [ $newmode -eq 2 ]
|
||||
then
|
||||
remotemode="custom"
|
||||
fi
|
||||
else
|
||||
echo "Cancelled"
|
||||
exit
|
||||
fi
|
||||
|
||||
needrestart=0
|
||||
if [ $needinstallation -eq 1 ]
|
||||
then
|
||||
if [ ! -f "$irexecshfile" ]
|
||||
then
|
||||
needrestart=1
|
||||
sudo apt-get -y update
|
||||
sudo apt-get -y install lirc
|
||||
|
||||
echo "dtoverlay=gpio-ir,gpio_pin=23" | sudo tee -a $CONFIG 1> /dev/null
|
||||
|
||||
sudo /usr/share/lirc/lirc-old2new
|
||||
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable irexec.service
|
||||
sudo systemctl start irexec.service
|
||||
|
||||
echo "" | sudo tee $irexecrcfile 1> /dev/null
|
||||
for keyname in UP DOWN LEFT RIGHT BACK PLAYPAUSE MENU HOME OK MUTE VOLUMEUP VOLUMEDOWN
|
||||
do
|
||||
echo 'begin' | sudo tee -a $irexecrcfile 1> /dev/null
|
||||
echo ' remote=argon' | sudo tee -a $irexecrcfile 1> /dev/null
|
||||
echo ' prog=irexec' | sudo tee -a $irexecrcfile 1> /dev/null
|
||||
echo ' button=KEY_'$keyname | sudo tee -a $irexecrcfile 1> /dev/null
|
||||
echo ' config='$irexecshfile' "'$keyname'"' | sudo tee -a $irexecrcfile 1> /dev/null
|
||||
echo 'end' | sudo tee -a $irexecrcfile 1> /dev/null
|
||||
done
|
||||
|
||||
|
||||
echo "#!/bin/bash" | sudo tee $irexecshfile 1> /dev/null
|
||||
|
||||
echo '' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
echo 'if [ -z "$1" ]' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
echo 'then' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
echo ' exit' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
echo 'fi' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
|
||||
echo '' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
|
||||
echo '# Handlers for different key codes' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
echo '# Key codes: UP DOWN LEFT RIGHT BACK PLAYPAUSE MENU HOME OK MUTE VOLUMEUP VOLUMEDOWN' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
echo '' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
|
||||
echo 'amixerdevice=$(/usr/bin/amixer scontrols | sed -n "s/^.*'"'\(.*\)'"'.*$/\1/p")' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
echo 'if [ $1 == "VOLUMEUP" ]' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
echo 'then' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
echo ' /usr/bin/amixer set $amixerdevice -- $[$(/usr/bin/amixer get $amixerdevice|grep -o [0-9]*%|sed '"'s/%//'"')+5]%' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
echo 'elif [ $1 == "VOLUMEDOWN" ]' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
echo 'then' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
echo ' /usr/bin/amixer set $amixerdevice -- $[$(/usr/bin/amixer get $amixerdevice|grep -o [0-9]*%|sed '"'s/%//'"')-5]%' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
echo 'elif [ $1 == "MUTE" ]' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
echo 'then' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
echo ' /usr/bin/amixer set $amixerdevice toggle' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
echo 'fi' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
|
||||
echo '' | sudo tee -a $irexecshfile 1> /dev/null
|
||||
|
||||
sudo chmod 755 $irexecshfile
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$CHECKGPIOMODE" = "rpigpio" ]
|
||||
then
|
||||
sudo wget https://download.argon40.com/argonone-irdecoder.py -O $irdecodefile --quiet
|
||||
else
|
||||
sudo wget https://download.argon40.com/scripts/argonone-irdecoder-libgpiod.py -O $irdecodefile --quiet
|
||||
fi
|
||||
|
||||
sudo python3 $irdecodefile $remotemode
|
||||
|
||||
if [ ! -d $kodiuserdatafolder ]
|
||||
then
|
||||
if [ ! -d "$HOME/.kodi" ]
|
||||
then
|
||||
mkdir "$HOME/.kodi"
|
||||
fi
|
||||
mkdir $kodiuserdatafolder
|
||||
fi
|
||||
|
||||
if [ -d $kodiuserdatafolder ]
|
||||
then
|
||||
echo "<lircmap>" | tee $kodilircmapfile 1> /dev/null
|
||||
echo ' <remote device="argon">' | tee -a $kodilircmapfile 1> /dev/null
|
||||
echo ' <left>KEY_LEFT</left>' | tee -a $kodilircmapfile 1> /dev/null
|
||||
echo ' <right>KEY_RIGHT</right>' | tee -a $kodilircmapfile 1> /dev/null
|
||||
echo ' <up>KEY_UP</up>' | tee -a $kodilircmapfile 1> /dev/null
|
||||
echo ' <down>KEY_DOWN</down>' | tee -a $kodilircmapfile 1> /dev/null
|
||||
echo ' <select>KEY_OK</select>' | tee -a $kodilircmapfile 1> /dev/null
|
||||
echo ' <start>KEY_HOME</start>' | tee -a $kodilircmapfile 1> /dev/null
|
||||
# 20240611: User reported mapping is incorrect
|
||||
#echo ' <rootmenu>KEY_MENUBACK</rootmenu>' | tee -a $kodilircmapfile 1> /dev/null
|
||||
echo ' <rootmenu>KEY_MENU</rootmenu>' | tee -a $kodilircmapfile 1> /dev/null
|
||||
echo ' <back>KEY_BACK</back>' | tee -a $kodilircmapfile 1> /dev/null
|
||||
echo ' <volumeplus>KEY_VOLUMEUP</volumeplus>' | tee -a $kodilircmapfile 1> /dev/null
|
||||
echo ' <volumeminus>KEY_VOLUMEDOWN</volumeminus>' | tee -a $kodilircmapfile 1> /dev/null
|
||||
echo ' </remote>' | tee -a $kodilircmapfile 1> /dev/null
|
||||
echo '</lircmap>' | tee -a $kodilircmapfile 1> /dev/null
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "Thank you."
|
||||
if [ $needrestart -eq 1 ]
|
||||
then
|
||||
echo "Changes should take after reboot."
|
||||
elif [ $needinstallation -eq 1 ]
|
||||
then
|
||||
sudo systemctl restart lircd.service
|
||||
sudo systemctl restart irexec.service
|
||||
fi
|
||||
|
Reference in New Issue
Block a user