RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login
    Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

    Software Shutdown using Atxraspi

    Scheduled Pinned Locked Moved Help and Support
    atxraspishutdown
    28 Posts 3 Posters 6.9k 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.
    • cyperghostC
      cyperghost
      last edited by cyperghost

      At first try the solution posted by @meleu --> Posted here

      If this does not work take the lines above


      Okay.... in your python script:
      Edit the line os.system("sudo poweroff") to os.system("sudo /etc/es_shutdown.sh")

      copy this to /etc/es_shutdown.sh
      then sudo chmod +x /etc/es_shutdown.sh

      #!/bin/bash
      
      # End Emulationstation if condition of running binary is true (v1.59)
      # 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 // cyperghost
      # v1.2 07/23/17 - Some small improvments, easier to maintain, removed echo, removed else branch // cyperghost
      # v1.5 07/27/17 - Great step to exit ES even if emulators is running by runcommand.sh are started // meleu
      # v1.55 07/29/17 - all kudos go to @meleu for his alltime genious RegEx hack! // meleu
      # v1.56 07/30/17 - All emulators will be detected. // meleu
      # v1.58 08/02/17 - generel method: Use PPID to detect child PIDs now (ScummVM fix) // cyperghost
      # v1.59 08/03/17 - nothing new, just polishing the code // meleu
      # I just checked with SSH command - it saved my metadata! Maybe you need to extend sleeptimer!
      # greetings @pjft for his famous favorits and @meleu for his RegEx sniplets and his constant help!
       
              emucall="$(sed -n 4p /dev/shm/runcommand.info | tr -d '\\"' | tr '^$[]*.()|+?{}' '.')"
              if [[ -n "$emucall" ]]; then
                  emupid="$(pgrep -f "$emucall")" 
                  pkill -P "$emupid"
                  kill "$emupid"
                  sleep 4
              fi    
      
              espid="$(pgrep -f "/opt/retropie/supplementary/.*/emulationstation([^.]|$)")"
              if [[ -n "$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
      
      poweroff
      
      C 1 Reply Last reply Reply Quote 0
      • C
        crazydude2 @cyperghost
        last edited by

        @cyperghost Hi. I have just given this a go. Now when i press the shutdown button the status flashes and nothing happens then after a bit of time it is like the power has been cut.

        cyperghostC 1 Reply Last reply Reply Quote 0
        • cyperghostC
          cyperghost @crazydude2
          last edited by cyperghost

          @crazydude2
          What did you try?

          1. This one
          2. or this one

          Is your metadata saved in your usecase? What do you mean with "status flashes"?

          C 1 Reply Last reply Reply Quote 0
          • C
            crazydude2 @cyperghost
            last edited by

            @cyperghost I tried the 1st one which did not work and then the 2nd one causes it to just cut the power. The atxraspi has a status led which flashes when in shutdown. At a guess it times out and just cuts the power if its not received the success signal. Perhaps that shutdown script takes too long? Nothing seems to happen in retropi before the power just cuts. The rest signal still works so i assume its still going through the python script

            cyperghostC 1 Reply Last reply Reply Quote 0
            • cyperghostC
              cyperghost @crazydude2
              last edited by cyperghost

              @crazydude2 So you press the button 4 seconds right?
              And then a shutdown is performed, right?

              Can you restart ES and type in SSH sudo /etc/es_shutdown.sh?
              ES should shutoff and metadata is saved.

              C 1 Reply Last reply Reply Quote 0
              • C
                crazydude2 @cyperghost
                last edited by

                @cyperghost When i run from ssh i get this error message and then it shuts down
                pi@retropie:~ $ sudo /etc/es_shutdown.sh
                sed: can't read /dev/shm/runcommand.info: No such file or directory

                It seems to shutdown correct if no metadata has changed from the switch. For example freshly turned on and then off. If i load a game exit back to check it is in last played when i use the power switch it just cuts the power rather than shutdown

                cyperghostC 1 Reply Last reply Reply Quote 0
                • cyperghostC
                  cyperghost @crazydude2
                  last edited by cyperghost

                  @crazydude2 I have to take a look ... as I have not the atx here it's hard to suggest.

                  If you can switch to the install bash script it would be much easier

                  sudo wget https://raw.githubusercontent.com/LowPowerLab/ATX-Raspi/master/shutdownchecksetup.sh
                  sudo bash shutdownchecksetup.sh
                  sudo rm shutdownchecksetup.sh
                  sudo reboot
                  

                  I guess the bash shutdown script can be changed to this ...

                  with sudo nano /etc/shutdowncheck.sh
                  https://ghostbin.com/paste/bo2vu

                  C 1 Reply Last reply Reply Quote 0
                  • C
                    crazydude2 @cyperghost
                    last edited by

                    @cyperghost Thanks for the help. This seems to work. I just need to remember to hold the button long enough as restart just shutdowns and leaves the atxraspi on which isn't ideal. Tomorrow i need to look into the software shutdown but i am not as worried about this as i probably wont use very often

                    1 Reply Last reply Reply Quote 0
                    • cyperghostC
                      cyperghost
                      last edited by cyperghost

                      @crazydude2
                      I made a small rework to the script to make reboot and shutdown for this script available here

                      For software shutdown with the transistor you have to edit
                      sudo nano /opt/retropie/supplementary/emulationstation/emulationstation.sh
                      delete all content and add new one posted down in this posting.

                      be aware... if you update RetroPie you may loose this script! as it is part of the RetroPie package!

                      Can you post your outfindings please?

                      #!/bin/sh
                      
                      esdir="$(dirname $0)"
                      while true; do
                          rm -f /tmp/es-restart /tmp/es-sysrestart /tmp/es-shutdown
                          "$esdir/emulationstation" "$@"
                          ret=$?
                          [ -f /tmp/es-restart ] && continue
                          if [ -f /tmp/es-sysrestart ]; then
                              rm -f /tmp/es-sysrestart
                              sudo /usr/bin/local/softshutdown.sh 1
                              sudo reboot
                              break
                          fi
                          if [ -f /tmp/es-shutdown ]; then
                              rm -f /tmp/es-shutdown
                              sudo /usr/bin/local/softshutdown.sh 4
                              sudo poweroff
                              break
                          fi
                          break
                      done
                      
                      C 1 Reply Last reply Reply Quote 0
                      • C
                        crazydude2 @cyperghost
                        last edited by crazydude2

                        @cyperghost Hi I think it is now working well. Thanks for all your help. What do you mean by posting outfindings? Just so people know
                        nano /opt/retropie/supplementary/emulationstation/emulationstation.sh had to be changed to sudo nano /opt/retropie/supplementary/emulationstation/emulationstation.sh to allow editing

                        and the script also had to be altered to

                        #!/bin/sh
                        
                        esdir="$(dirname $0)"
                        while true; do
                            rm -f /tmp/es-restart /tmp/es-sysrestart /tmp/es-shutdown
                            "$esdir/emulationstation" "$@"
                            ret=$?
                            [ -f /tmp/es-restart ] && continue
                            if [ -f /tmp/es-sysrestart ]; then
                                rm -f /tmp/es-sysrestart
                                sudo /usr/local/bin/softshutdown.sh 1
                                sudo reboot
                                break
                            fi
                            if [ -f /tmp/es-shutdown ]; then
                                rm -f /tmp/es-shutdown
                                sudo /usr/local/bin/softshutdown.sh 4
                                sudo poweroff
                                break
                            fi
                            break
                        done
                        cyperghostC 1 Reply Last reply Reply Quote 0
                        • cyperghostC
                          cyperghost @crazydude2
                          last edited by cyperghost

                          @crazydude2 Outfindings? ... tell me if it works ;)

                          make 3 backticks liker here ```
                          in beginning and ending of codeblock
                          One backtick ` in beginning and ending of line or word makes it red
                          __ makes bold
                          ~~ makes striceout
                          _ makes italic

                          I'm wondering that you need root-access for editing this file!

                          can you post me output of ls -l /opt/retropie/supplementary/emulationstation please

                          C 1 Reply Last reply Reply Quote 0
                          • C
                            crazydude2 @cyperghost
                            last edited by

                            @cyperghost
                            pi@retropie:~ $ ls -l /opt/retropie/supplementary/emulationstation
                            total 4756
                            -rw-r--r-- 1 root root 451 Jul 11 15:38 CREDITS.md
                            -rwxr-xr-x 1 root root 4804496 Jul 11 15:38 emulationstation
                            -rwxr-xr-x 1 root root 526 Sep 19 20:56 emulationstation.sh
                            -rwxr-xr-x 1 root root 527 Sep 19 20:56 emulationstation.sh.save
                            -rw-r--r-- 1 root root 5667 Jul 11 15:38 GAMELISTS.md
                            -rw-r--r-- 1 root root 10181 Jul 11 15:38 README.md
                            drwxr-xr-x 3 root root 4096 Jul 21 23:18 scripts
                            -rw-r--r-- 1 root root 27979 Jul 11 15:38 THEMES.md

                            cyperghostC 1 Reply Last reply Reply Quote 1
                            • cyperghostC
                              cyperghost @crazydude2
                              last edited by

                              @crazydude2 Okay correct... yes we need sudo for editing - forget that! thx

                              Now you can test shutdown via ES MainMenu... it should work like you press the button.
                              Have fun

                              C 1 Reply Last reply Reply Quote 0
                              • C
                                crazydude2 @cyperghost
                                last edited by

                                @cyperghost Yes i can confirm it now works as it should. I have tried all combinations i can think of all with success. Thanks for all the help.

                                cyperghostC 1 Reply Last reply Reply Quote 0
                                • cyperghostC
                                  cyperghost @crazydude2
                                  last edited by cyperghost

                                  @crazydude2 Okay, keep in mind that if you update RetroPie it may happen you will loose settings to /opt/retropie/supplementary/emulationstation/emulationstation.sh as the two lines I added will be erased. So you have to add them manually....

                                  This will only affect the software-shutdown. Does the LED also blink if you choose software shutdown? I'm just interested to know ;) It should so as it triggers the same GPIO as the button press ;)

                                  C 1 Reply Last reply Reply Quote 0
                                  • C
                                    crazydude2 @cyperghost
                                    last edited by

                                    @cyperghost Yes the led does still flash on software shutdown

                                    1 Reply Last reply Reply Quote 0
                                    • cyperghostC
                                      cyperghost
                                      last edited by

                                      @crazydude2 Wow awesome! So have fun...

                                      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.