RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    Mausberry Shutdown Script Doesn't Save Metadata

    Scheduled Pinned Locked Moved ControlBlock, PowerBlock & Co.
    mausberry
    251 Posts 10 Posters 105.8k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • lostlessL
      lostless @lostless
      last edited by lostless

      @meleu killed all switch functionality. As in it no longer functions as a shutdown switch.

      meleuM 2 Replies Last reply Reply Quote 0
      • meleuM
        meleu @lostless
        last edited by

        @lostless OK. I'll try a little further...

        • Useful topics
        • joystick-selection tool
        • rpie-art tool
        • achievements I made
        lostlessL 1 Reply Last reply Reply Quote 0
        • lostlessL
          lostless @meleu
          last edited by lostless

          @meleu i see you removed some stuff from the original script

          while [ 1 = 1 ]; do
          power=$(cat /sys/class/gpio/gpio$GPIOpin1/value)
          if [ $power = 0 ]; then
          sleep 1
          else
          

          that was removed. any reason to that?

          meleuM 1 Reply Last reply Reply Quote 0
          • meleuM
            meleu @lostless
            last edited by meleu

            @lostless said in Mausberry Shutdown Script Doesn't Save Metadata:

            that was removed. any reason to that?

            yep. This infinite loop is consuming CPU cycles unnecessarily.

            • Useful topics
            • joystick-selection tool
            • rpie-art tool
            • achievements I made
            lostlessL 1 Reply Last reply Reply Quote 0
            • lostlessL
              lostless @meleu
              last edited by

              @meleu that was in the original script from mauseberry. never had any issues. interesting that their code just constantly checks the gpio.

              meleuM 1 Reply Last reply Reply Quote 0
              • meleuM
                meleu @lostless
                last edited by

                @lostless do they have a github repo or something?

                • Useful topics
                • joystick-selection tool
                • rpie-art tool
                • achievements I made
                lostlessL 1 Reply Last reply Reply Quote 0
                • lostlessL
                  lostless @meleu
                  last edited by

                  @meleu they don't. just the download and install instructions on their website. But heres the script you download and install.

                  echo '#!/bin/bash
                  
                  #this is the GPIO pin connected to the lead on switch labeled OUT
                  GPIOpin1=23
                  
                  #this is the GPIO pin connected to the lead on switch labeled IN
                  GPIOpin2=24
                  
                  echo "$GPIOpin1" > /sys/class/gpio/export
                  echo "in" > /sys/class/gpio/gpio$GPIOpin1/direction
                  echo "$GPIOpin2" > /sys/class/gpio/export
                  echo "out" > /sys/class/gpio/gpio$GPIOpin2/direction
                  echo "1" > /sys/class/gpio/gpio$GPIOpin2/value
                  while [ 1 = 1 ]; do
                  power=$(cat /sys/class/gpio/gpio$GPIOpin1/value)
                  if [ $power = 0 ]; then
                  sleep 1
                  else
                  sudo poweroff
                  fi
                  done
                  
                  1 Reply Last reply Reply Quote 0
                  • meleuM
                    meleu @lostless
                    last edited by

                    @lostless said in Mausberry Shutdown Script Doesn't Save Metadata:

                    @meleu killed all switch functionality. As in it no longer functions as a shutdown switch.

                    is it killing the emulator/ES?

                    • Useful topics
                    • joystick-selection tool
                    • rpie-art tool
                    • achievements I made
                    lostlessL 1 Reply Last reply Reply Quote 0
                    • lostlessL
                      lostless @meleu
                      last edited by

                      @meleu its not doing anything.

                      meleuM 1 Reply Last reply Reply Quote 0
                      • meleuM
                        meleu @lostless
                        last edited by

                        @lostless did you install inotify-tools?

                        • Useful topics
                        • joystick-selection tool
                        • rpie-art tool
                        • achievements I made
                        lostlessL 1 Reply Last reply Reply Quote 0
                        • lostlessL
                          lostless @meleu
                          last edited by

                          @meleu yes

                          meleuM 2 Replies Last reply Reply Quote 0
                          • meleuM
                            meleu @lostless
                            last edited by

                            @lostless OK, let's try with that expensive infinite loop just to check if the inotifywait part is bugging the script. Hold on a little...

                            • Useful topics
                            • joystick-selection tool
                            • rpie-art tool
                            • achievements I made
                            lostlessL 1 Reply Last reply Reply Quote 0
                            • lostlessL
                              lostless @meleu
                              last edited by

                              @meleu I'm trying my own Frankenste in script (taking the parts that i see may work)

                              1 Reply Last reply Reply Quote 1
                              • meleuM
                                meleu @lostless
                                last edited by meleu

                                @lostless please, try this one:

                                #!/bin/bash
                                
                                #this is the GPIO pin connected to the lead on switch labeled OUT
                                GPIOpin1=23
                                
                                #this is the GPIO pin connected to the lead on switch labeled IN
                                GPIOpin2=24
                                
                                echo "$GPIOpin1" > /sys/class/gpio/export
                                echo "in" > /sys/class/gpio/gpio$GPIOpin1/direction
                                echo "$GPIOpin2" > /sys/class/gpio/export
                                echo "out" > /sys/class/gpio/gpio$GPIOpin2/direction
                                echo "1" > /sys/class/gpio/gpio$GPIOpin2/value
                                
                                file="/sys/class/gpio/gpio$GPIOpin1/value"
                                
                                while true; do
                                    power="$(cat "$file")"
                                    if [[ "$power" == 0 ]];
                                        sleep 1
                                    else
                                        emu_command="$(sed -n 4p /dev/shm/runcommand.info)"
                                        [[ -n "$emu_command" ]] && pkill -f "${emu_command%% *}" && sleep 5
                                
                                        espid=$(pgrep -f "/opt/retropie/supplementary/.*/emulationstation([^.]|$)")
                                        if [[ "$espid" ]]; then
                                            touch /tmp/es-shutdown && chown pi:pi /tmp/es-shutdown
                                            kill "$espid"
                                        fi
                                
                                        sudo poweroff
                                    fi
                                done
                                
                                • Useful topics
                                • joystick-selection tool
                                • rpie-art tool
                                • achievements I made
                                lostlessL 1 Reply Last reply Reply Quote 0
                                • lostlessL
                                  lostless @meleu
                                  last edited by

                                  @meleu your new script is still doing nothing and mine worked just like the 1.2.

                                  meleuM 1 Reply Last reply Reply Quote 0
                                  • meleuM
                                    meleu @lostless
                                    last edited by

                                    @lostless helping with this blind coding is very hard. I'm giving up...

                                    • Useful topics
                                    • joystick-selection tool
                                    • rpie-art tool
                                    • achievements I made
                                    lostlessL 1 Reply Last reply Reply Quote 0
                                    • lostlessL
                                      lostless @meleu
                                      last edited by

                                      @meleu sounds good man. it was fun. the 1.2 works fine, a lot better then always losing meta data all the time.

                                      meleuM 1 Reply Last reply Reply Quote 0
                                      • meleuM
                                        meleu @lostless
                                        last edited by meleu

                                        @lostless where is this script placed? what directory?

                                        • Useful topics
                                        • joystick-selection tool
                                        • rpie-art tool
                                        • achievements I made
                                        lostlessL 2 Replies Last reply Reply Quote 0
                                        • lostlessL
                                          lostless @meleu
                                          last edited by

                                          @meleu location is /etc/switch.sh

                                          1 Reply Last reply Reply Quote 0
                                          • lostlessL
                                            lostless @meleu
                                            last edited by lostless

                                            @meleu My frankenstein script is working. Thank you so much for giving me insight. I know i didnt contribute anything to the code, but I feel like a kid in the 80/90s, discovering computers before they were made easy to use.
                                            i found you need to give time for retroarch to quit and emulation station to reload before you try quit emulation station. i gave it 12 seconds. 5 was not enough, by the time the emulator quit, emulation station was not fully loaded back in.

                                            here is what i came up with

                                            #!/bin/bash
                                            
                                            #this is the GPIO pin connected to the lead on switch labeled OUT
                                            GPIOpin1=23
                                            
                                            #this is the GPIO pin connected to the lead on switch labeled IN
                                            GPIOpin2=24
                                            
                                            echo "$GPIOpin1" > /sys/class/gpio/export
                                            echo "in" > /sys/class/gpio/gpio$GPIOpin1/direction
                                            echo "$GPIOpin2" > /sys/class/gpio/export
                                            echo "out" > /sys/class/gpio/gpio$GPIOpin2/direction
                                            echo "1" > /sys/class/gpio/gpio$GPIOpin2/value
                                            while [ 1 = 1 ]; do
                                            power=$(cat /sys/class/gpio/gpio$GPIOpin1/value)
                                            if [ $power = 0 ]; then
                                            sleep 1
                                            else
                                            
                                            # End Emulationstation if condition of running binary is true
                                            # v1.0 07/21/17 by cyperghost - Inital run 
                                            # v1.1 07/22/17 - Added chown command to set right user permission for creating es-shutdown
                                            # v1.2 07/23/17 - Some small improvments, easier to maintain, removed echo, removed else branch 
                                            # v1.works 7/27/17 (are we even trying to number this)  @lostless figured it out. More time to quit emulator and reload emulation station before shutdown. @cyperghost  thank you for initial run. @meleu thank you for your insight
                                                    emu_command="$(sed -n 4p /dev/shm/runcommand.info)"
                                                    [[ -n "$emu_command" ]] && pkill -f "${emu_command%% *}" && sleep 12
                                            
                                            espid=$( pgrep -f "/opt/retropie/supplementary/.*/emulationstation([^.]|$)" ) # detect PID of ES binary only
                                            if [ "$espid" ]; then
                                               touch /tmp/es-shutdown && chown pi:pi /tmp/es-shutdown
                                               kill $espid
                                               exit
                                            fi
                                            # End Emulationstation if condition of running binary is true
                                            
                                            sudo poweroff
                                            fi
                                            done
                                            

                                            @cyperghost Thank you for the first script up to 1.2.
                                            @hansolo77 give this a try. its working for me quite well.

                                            meleuM 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

                                            Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.