#!/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 One 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=/usr/bin/argonirexec irdecodefile=/usr/bin/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 pip3 uninstall lirc -y 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 One 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 sudo pip3 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 "" | tee $kodilircmapfile 1> /dev/null echo ' ' | tee -a $kodilircmapfile 1> /dev/null echo ' KEY_LEFT' | tee -a $kodilircmapfile 1> /dev/null echo ' KEY_RIGHT' | tee -a $kodilircmapfile 1> /dev/null echo ' KEY_UP' | tee -a $kodilircmapfile 1> /dev/null echo ' KEY_DOWN' | tee -a $kodilircmapfile 1> /dev/null echo ' ' | tee -a $kodilircmapfile 1> /dev/null echo ' KEY_HOME' | tee -a $kodilircmapfile 1> /dev/null echo ' KEY_MENUBACK' | tee -a $kodilircmapfile 1> /dev/null echo ' KEY_VOLUMEUP' | tee -a $kodilircmapfile 1> /dev/null echo ' KEY_VOLUMEDOWN' | tee -a $kodilircmapfile 1> /dev/null echo ' ' | tee -a $kodilircmapfile 1> /dev/null echo '' | 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