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

    METADATA not saving - Favorites will never remain tagged

    Scheduled Pinned Locked Moved Help and Support
    nespi casemetadata issuesfavoritesshutdown scriptgameslist.xml
    121 Posts 7 Posters 17.6k 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.
    • S
      Semper 5 @cyperghost
      last edited by Semper 5

      @cyperghost more developments, still just cuts the power. and this is the only script I'm running on a fresh image.

      Output:
      switch.sh: line 10: $'\r': command not found
      switch.sh: line 13: $'\r': command not found
      switch.sh: line 16: $'\r': command not found
      : Permission denied /sys/class/gpio/export
      : No such file or directoryass/gpio/gpio24
      : Permission denied /sys/class/gpio/export
      : No such file or directoryass/gpio/gpio25
      : No such file or directoryass/gpio/gpio25
      switch.sh: line 22: $'\r': command not found
      cat: '/sys/class/gpio/gpio24'$'\r''/value': No such file or directory
      switch.sh: line 26: $'\r': command not found
      switch.sh: line 46: syntax error near unexpected token `fi'

      'witch.sh: line 46: `fi

      mituM 1 Reply Last reply Reply Quote 0
      • mituM
        mitu Global Moderator @Semper 5
        last edited by

        @semper-5 You copied the contents of the script in Notepad by any chance ? Use Notepad++ to create/edit the scripts in Windows and set the line endings to Unix (LF), Notepad saves with Win/DOS line endings (the extra \r character in the script file).

        S 1 Reply Last reply Reply Quote 1
        • S
          Semper 5 @mitu
          last edited by Semper 5

          @mitu yup that's what I've been using the whole time (Notepad ++)
          I've made scripts with no problems many times before. but its just getting hung up on this one

          anyway I can get this script in RAW? I could clear up just a few of the errors but not the rest. :/

          cyperghostC J 2 Replies Last reply Reply Quote 0
          • cyperghostC
            cyperghost @Semper 5
            last edited by cyperghost

            @semper-5 The best way would be to edit with SSH connection and nano.

            use putty, don't use WINSCP

            1. cd /home/pi/RetroPie/scripts
              1.1 if directory scripts does not exists use mkdir /home/pi/RetroPie/scripts
              1.2 then try again with cd /home/pi/RetroPie/scripts
            2. rm switch.sh this will remove script
            3. nano switch.sh copy text from code box below
              3.1 After inserting code with left mouse button
              3.2 Press CTRL+X and press Y to save script
            4. chmod +x switch.sh makes script executable
            5. sudo ./switch.sh & to start script in background with root privileges ;)

            switch.sh CODEBOX

            #!/bin/bash
            # End Emulationstation if condition of running binary is true (v1.599)
            # v1.0 07/21/17 by cyperghost - Inital run 
            # v1.5 07/27/17 - Great step to exit ES even if emulators is running by runcommand.sh are started // 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.595 11/14/17 - Inserted newest emucall detection // meleu
            # v1.599 04/18/18 - NESPI case
            # v1.6 04/20/18 - added kill -9 to terminate emulators // julenvitoria
            # greetings @pjft for his famous favorits and @meleu for his RegEx sniplets and his constant help! 
            
            #this is the GPIO pin connected to POWER SWITCH
            GPIOpin1=24
            
            #this is the GPIO pin connected to POWER ON CONTROL
            GPIOpin2=25
            
            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
            
            power=$(cat /sys/class/gpio/gpio$GPIOpin1/value)
            [[ $power == 0 ]] && switchtype="1" #Not a momentary button
            [[ $power == 1 ]] && switchtype="0" #Momentary button
            
            until [[ $power == $switchtype ]]; do
                power=$(cat /sys/class/gpio/gpio$GPIOpin1/value)
                sleep 1
            done
            # Detect PID or EMULATOR NAMES
            emucall="$(sed '4!d; s/\([\\"]\|[[:alnum:]_]\+=[^ ]* \)//g; s/[][(){}^$*.|+? ]/\\&/g' /dev/shm/runcommand.info)"
            espid="$(pgrep -f "/opt/retropie/supplementary/.*/emulationstation([^.]|$)")"
            
            echo "Button Pressed: $power - Switchtype: $switchtype"
            echo "ES-PID: $espid"
            sleep 5
            
            # Handle calls and send TERM signal
            
            if [[ -n "$emucall" ]]; then
                emupid="$(pgrep -f "$emucall" | tr '\n' ' ')"
                pkill -P "$(echo $emupid | tr ' ' ',')"
                kill -9 "$emupid"
                sleep 4
            fi    
            
            if [[ -n "$espid" ]]; then
                touch /tmp/es-shutdown && chown pi:pi /tmp/es-shutdown
                kill "$espid"
                exit
            fi
            
            echo "Script terminated not by ES!"
            
            1 Reply Last reply Reply Quote 0
            • J
              julenvitoria Banned @Semper 5
              last edited by

              @semper-5 It's very strange... for example lines 10, 13, 16, 22 and 26 are blank... It works for me but not in the totality of the emulators.

              @cyperghost As I mentioned it really works for me, but not in the totality of the emulators... For example it works with retroarch and advancemame but doesn't work with pifba, pcsx-rearmed or mame4all. If I try the commands separately pgrep -f doesn't detect this emulators... pgrep -f "$emucall" doesn't show any pid. Any suggestion for detect the emulators properly?

              Thanks

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

                @julenvitoria Thanks for the headup. As I wrote this is just a basic script! meleu is the RegEx wizard out here. I changed codebox.... please try again.
                I added emupid="$(pgrep -f "$emucall" | tr '\n' ' ')" pkill -P "$(echo $emupid | tr ' ' ',')"
                PS: That are the outfindings of @meleu

                I'm working on annother emulator detection - Shutdown script some input for better emulator detection

                The errors @Semper-5 descripes are caused because these "empty" lines contain Carriage Return (CR) character (0x0D, \r) ... Windows uses linefeed (LF) and carrige return (CR) for creating a new line.

                1 Reply Last reply Reply Quote 0
                • J
                  julenvitoria Banned
                  last edited by

                  @cyperghost said in METADATA not saving - Favorites will never remain tagged:

                  emupid="$(pgrep -f "$emucall" | tr '\n' ' ')" pkill -P "$(echo $emupid | tr ' ' ',')"

                  Hi! I tried your new code but don't work with pifba nor mame4 all. However it worked with pcsx-rearmed emulator. I tried kill -9 "$emupid" and then it works. I dont know if it is advisable or not to do this. If you know any other way I would appreciate it.

                  Thanks!

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

                    @julenvitoria said in METADATA not saving - Favorites will never remain tagged:

                    @cyperghost said in METADATA not saving - Favorites will never remain tagged:

                    emupid="$(pgrep -f "$emucall" | tr '\n' ' ')" pkill -P "$(echo $emupid | tr ' ' ',')"

                    Hi! I tried your new code but don't work with pifba nor mame4 all. However it worked with pcsx-rearmed emulator. I tried kill -9 "$emupid" and then it works. I dont know if it is advisable or not to do this. If you know any other way I would appreciate it.

                    Thanks!

                    Really don't know why this is happening. I just copied some text parts.
                    But you may test this script here, please?
                    All you have to do is to copy from textbox into a bashfile. Maybe emu_shutdown.sh, make it executable with chmod +x emu_shutdown.sh and execute it via SSH if an emulator is running?

                    Maybe you will get better results then? It will only terminate emulators, not more not less.

                    1 Reply Last reply Reply Quote 0
                    • J
                      julenvitoria Banned
                      last edited by julenvitoria

                      @cyperghost Hi, I tried your emulator detector too and the result was the same more or less. There were some emulators that dont stop... If you prefer I could write you throug the other thread.

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

                        @julenvitoria Thanks! You are right the signal levels are ignored by some emulators.
                        I would suggest to use kill -9 <PID>

                        I will update both scripts. So you see - once again something new explored .... ;)

                        J 1 Reply Last reply Reply Quote 0
                        • S
                          Semper 5
                          last edited by

                          Ok, so no errors to report. But the power switch doesn't work now.
                          I temporarily took out the entry in autostart.sh just to see what would happen in putty. and like I said, no errors. but when i press the power button (off) it does nothing

                          cyperghostC 1 Reply Last reply Reply Quote 0
                          • J
                            julenvitoria Banned @cyperghost
                            last edited by

                            @cyperghost wow! It’s perfect!! I’ll try the other script later

                            Thanks!

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

                              @semper-5 Please do so as you wrote. Take auto entry from autostart.sh!
                              and do a manuel start via SSH to see error messages. I need the routine how the POLOLU acts with the switch.

                              Please use sudo /path/to/switch.sh & command with the latest script version.

                              @julenvitoria You are welcome! Thank you for testing. The other script is also working! I tested several times.

                              S 1 Reply Last reply Reply Quote 0
                              • S
                                Semper 5 @cyperghost
                                last edited by

                                @cyperghost it doesn't output any errors.

                                I enter: sudo bash /home/pi/RetroPie/scripts/switch.sh &
                                output: [1] 10921

                                I think it s working to some extent because if I try to run it again it will tell line 18 & 20 write protection due to device being busy

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

                                  @semper-5 That's okay ... this [10921] thing is the process number.
                                  So what happens if you press the power button? With the script in background running?

                                  You should see a message like:
                                  Switch press 0 - Switchtype 1
                                  ES-PID: 1232

                                  S 1 Reply Last reply Reply Quote 0
                                  • S
                                    Semper 5 @cyperghost
                                    last edited by

                                    @cyperghost no message, no activity, no error. nothing :/

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

                                      @semper-5 What is the output of
                                      cat /sys/class/gpio/gpio24/value

                                      if the power button is pressed, and then if the power button is released?
                                      It should be 1 if pressed and 0 if released

                                      The script must be active for this ;)

                                      S 1 Reply Last reply Reply Quote 0
                                      • S
                                        Semper 5 @cyperghost
                                        last edited by

                                        @cyperghost it's 0 on both being pressed and released

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

                                          @semper-5 That's the error here ... but tell me why? That's not possible! The python scripts are working?

                                          Maybe @Yahmez knows the answer?
                                          If we watch for input of GPIO24 (=power button), why there is no change in input value?

                                          S YahmezY mituM 3 Replies Last reply Reply Quote 0
                                          • S
                                            Semper 5 @cyperghost
                                            last edited by

                                            @cyperghost I know! Our frustration is real. I mean it works as it should with Yahmez's script. And just to be sure I am following your instructions immaculately, yours is the ONLY script I'm running on this fresh image.

                                            Geez it was embarrassing you guys telling me to use Notepad++ and how to invoke the script LOL. but I do appreciate all your efforts to walk me through it. I'm just thinking you guys must be getting as frustrated with me as I'm getting frustrated with this not working - I'm yelling at this damn box like "you're making an idiot out of me in front of the community, damn you!" haha

                                            1 Reply Last reply Reply Quote 1
                                            • 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.