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

Powerblock proper ES shutdown

Scheduled Pinned Locked Moved ControlBlock, PowerBlock & Co.
powerblockmausberrshutdownswitch
24 Posts 6 Posters 12.1k 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.
  • C
    cyperghost
    last edited by cyperghost 31 Jul 2017, 17:02

    To continue discussion of the Mausberry switch we talk now about the PowerSwitch

    @Capeman
    So edit etc/powerblockswitchoff.sh and just try.
    Can you post content of the file here?

    From the PowerBLock GIT

    Shutdown Script
    
    When the driver observes a shutdown signal from the PowerBlock, a shutdown
    Bash script is called. You can find and edit it at /etc/powerblockswitchoff.sh
    

    So you may add just this to your script! But please post content before.

    #!/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
    # v1.595 11/14/17 - added new method for detecting emucall
    # 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 '^$[]*.()|+?{}' '.')"
            emucall="$(sed '4!d; s/\([\\"]\|[[:alnum:]_]\+=[^ ]* \)//g; s/[][(){}^$*.|+? ]/\\&/g' /dev/shm/runcommand.info)"
            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
    
    shutdown -h now
    
    C 1 Reply Last reply 1 Aug 2017, 00:40 Reply Quote 2
    • C
      Capeman
      last edited by 31 Jul 2017, 17:09

      Thanks! I'll try this tonight after my day's worth of responsibilities are done with, haha.

      Vector Artist, Designer and Maker of Stuff: Laser Cut Atari / Pixel Theme Bartop

      C 1 Reply Last reply 31 Jul 2017, 17:17 Reply Quote 0
      • C
        cyperghost @Capeman
        last edited by 31 Jul 2017, 17:17

        @capeman I've got the script!

        #!/bin/bash
        shutdown -h now
        

        So I've updated to previous posting. It should work!

        1 Reply Last reply Reply Quote 1
        • C
          Capeman
          last edited by 31 Jul 2017, 17:40

          Great! I will test it out tonight and report back.

          Vector Artist, Designer and Maker of Stuff: Laser Cut Atari / Pixel Theme Bartop

          1 Reply Last reply Reply Quote 0
          • C
            Capeman
            last edited by Capeman 8 Jan 2017, 01:34 1 Aug 2017, 00:29

            Interesting, I must be using really old powerblock drivers (i've had the thing for a year and a half now) - and the .sh file isnt located in /etc/... so I'm going through the retropie update and installing the built in driver from source. I hope i don't cause a conflict haha.

            Edit a that did it! the .sh file is there now! Let's do some editing.

            Vector Artist, Designer and Maker of Stuff: Laser Cut Atari / Pixel Theme Bartop

            1 Reply Last reply Reply Quote 0
            • C
              Capeman @cyperghost
              last edited by Capeman 8 Jan 2017, 01:45 1 Aug 2017, 00:40

              @cyperghost Dang you guys are smart! Works with powerblock without a hitch! Beautiful piece of coding!

              One question. I read and noticed that when the power button is switched, retroarch exits out to ES first before shutting down. Is Retroarch exiting cleanly to the point where it will save sram on exit or is it being crashed out and sram will be lost?

              I have my autosave interval set to 10 seconds, but i read somewhere it doesnt write unless theres a change so i might drop it to 3 seconds, but if the switch exits cleanly, then i probably dont have to worry about it.

              Vector Artist, Designer and Maker of Stuff: Laser Cut Atari / Pixel Theme Bartop

              L 1 Reply Last reply 1 Aug 2017, 00:59 Reply Quote 0
              • C
                Capeman
                last edited by 1 Aug 2017, 00:58

                Hmmm i may as well test it, I'll remove autosave interval in my retroarch cfg, start a new game in kirby's adventure on NES (which i am certain autosaves), then use the power switch process to shut down. If Kirby has a save file, then i would assume that retroarch is exiting cleanly and saving sram... right?

                If not i might try switching out KILL with SIGTERM in the code above to see if simulates a clean exit, it's worth seeing what happens. (as detailed in the retroarch.cfg notes).

                # Killing it in any hard way (SIGKILL, etc) will terminate RetroArch without saving RAM, etc.
                # On Unix-likes, SIGINT/SIGTERM allows a clean deinitialization.
                input_exit_emulator = "esc"
                

                I'll let you know what i find and if i need to adjust anything. If this was covered in the mausberry thread and i didn't read it, my bad, that was alot to go back and read and I'm impatient and mostly skimmed.

                Vector Artist, Designer and Maker of Stuff: Laser Cut Atari / Pixel Theme Bartop

                L 1 Reply Last reply 1 Aug 2017, 01:06 Reply Quote 0
                • L
                  lostless @Capeman
                  last edited by 1 Aug 2017, 00:59

                  @capeman Do a test for us all. Turn off auto save. Make a save in game. Then hit the a switch and see if it saves.

                  1 Reply Last reply Reply Quote 0
                  • L
                    lostless @Capeman
                    last edited by 1 Aug 2017, 01:06

                    @capeman find a game that makes it obvious. Like one of the gba castlevania games. Save, kill one enemy. Check the xp before and after. Save and see what the xp is after the shutdown.

                    C 1 Reply Last reply 1 Aug 2017, 01:28 Reply Quote 0
                    • C
                      Capeman @lostless
                      last edited by 1 Aug 2017, 01:28

                      @lostless Right, that was my plan. I'll test it after my wife watches her netflix, and report back.

                      Vector Artist, Designer and Maker of Stuff: Laser Cut Atari / Pixel Theme Bartop

                      L 1 Reply Last reply 1 Aug 2017, 02:06 Reply Quote 0
                      • L
                        lostless @Capeman
                        last edited by 1 Aug 2017, 02:06

                        @capeman i beat you to it. It does save! I will still keep auto on just in case of power outage. But it does solve then default delema of losing my save using a switch because I didn't to exit out of the emulator.

                        1 Reply Last reply Reply Quote 2
                        • C
                          Capeman
                          last edited by Capeman 8 Jan 2017, 03:41 1 Aug 2017, 02:40

                          You indeed beat me to it, but i just got done finishing testing. Appears to be working for me too. I read a bit more into it, apparently KILL when used with a properly running non-frozen application can be ignored by the application and treated as a termination call. Most applications will clean exit on a KILL command and not hard exit when not frozen. So yeah, this seem to work just fine.

                          Vector Artist, Designer and Maker of Stuff: Laser Cut Atari / Pixel Theme Bartop

                          C 1 Reply Last reply 1 Aug 2017, 04:01 Reply Quote 1
                          • C
                            cyperghost @Capeman
                            last edited by cyperghost 8 Jan 2017, 05:01 1 Aug 2017, 04:01

                            @capeman It wasn't possible withouth the great work @meleu and his RegEx hacks.

                            1 Reply Last reply Reply Quote 1
                            • P
                              petrockblog Global Moderator
                              last edited by 1 Aug 2017, 08:37

                              You are doing awesome work here!
                              Do you think that the PowerBlock driver in the repository should be modified or extended in any way?

                              C C 2 Replies Last reply 1 Aug 2017, 11:09 Reply Quote 1
                              • C
                                Capeman @petrockblog
                                last edited by Capeman 8 Jan 2017, 12:10 1 Aug 2017, 11:09

                                @petrockblog I would vote yes on this! It works flawlessly with ES and retroarch. It is such a simple update to the .sh file and even if doesn't clean exit a non retroarch emulator, it will still exit the old fashioned way and clean exit ES for meta save. So either way it seems pretty harmless.

                                Vector Artist, Designer and Maker of Stuff: Laser Cut Atari / Pixel Theme Bartop

                                1 Reply Last reply Reply Quote 0
                                • C
                                  cyperghost @petrockblog
                                  last edited by 1 Aug 2017, 15:28

                                  @petrockblog said in Powerblock proper ES shutdown:

                                  You are doing awesome work here!

                                  This one has several fathers.

                                  Do you think that the PowerBlock driver in the repository should be modified or extended in any way?

                                  Well ... I think the usecase must be cleared. I'm not sure if everybody will take case in the use of emulators. So I would rather prefer you take this sniplet and push it to your github and let the user get the choice to download/use it during driver installation.

                                  @meleu What is your opinion?

                                  meleuM 1 Reply Last reply 1 Aug 2017, 15:57 Reply Quote 0
                                  • meleuM
                                    meleu @cyperghost
                                    last edited by 1 Aug 2017, 15:57

                                    @cyperghost

                                    @meleu What is your opinion?

                                    Well. I got my ego massage receiving a compliment from the RetroPie's creator. :-)

                                    Oh... You're talking about modifying/extending the PowerBlock's driver in the repo... Well, what we made here is very specific for a RetroPie-EmulationStation setup. Some people use Attract Mode and at some point others will use Pegasus, and maybe there are PowerBlock owners that don't even run RetroPie.

                                    Maybe you can put this code in the repo as an option, not as default.

                                    That is my opinion.

                                    • Useful topics
                                    • joystick-selection tool
                                    • rpie-art tool
                                    • achievements I made
                                    P 1 Reply Last reply 2 Aug 2017, 07:51 Reply Quote 0
                                    • P
                                      petrockblog Global Moderator @meleu
                                      last edited by 2 Aug 2017, 07:51

                                      @meleu I agree. I will put that script into the repository as alternative shutdown script. Thanks!

                                      C 1 Reply Last reply 3 Aug 2017, 19:20 Reply Quote 2
                                      • C
                                        cyperghost @petrockblog
                                        last edited by cyperghost 8 Mar 2017, 20:46 3 Aug 2017, 19:20

                                        @petrockblog
                                        There's a update to the code!

                                        Version 1.59 --- I update forst posting!

                                        Version 1.58 Introduced a method to kill child processes via PPID @cyperghost
                                        Version 1.59 is a code polishing done by @meleu

                                        SaturnXS 1 Reply Last reply 9 Feb 2021, 15:20 Reply Quote 0
                                        • SaturnXS
                                          SaturnX @cyperghost
                                          last edited by 9 Feb 2021, 15:20

                                          @cyperghost @petrockblog

                                          I know this topic a bit old - but I wanted to ask if this is still the best approach for a proper shutdown of a RetroPie/EmulationStation/PowerBlock combo?

                                          @petrockblog you mentioned above that you were going to add this into your repo, but it looks like it's not there?

                                          I just installed the PowerBlock on my Pi4 last night and it's working well, but I just wanted to add the proper shutdown of ES.

                                          Thanks! Apologies for reviving an old thread.

                                          L 1 Reply Last reply 10 Feb 2021, 20:48 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.

                                            This community forum collects and processes your personal information.
                                            consent.not_received