Mausberry Shutdown Script Doesn't Save Metadata
-
bug report
Our method to kill the command placed on the 4th line of
/dev/shm/runcommand.info
fails to kill ScummVM emulator. This is why:[prompt]$ sed -n 4p /dev/shm/runcommand.info bash /home/meleu/RetroPie/roms/scummvm/+Start\ ScummVM.sh "ft"
Then our approach kills
bash
processes.I'm currently trying to find a strong solution. Will post it soon...
-
@hansolo77 @lostless @cyperghost
Can you guys test this one? Let's call it v1.7:
#!/bin/bash -x # Before using this script you need to install inotify-tools: # # sudo apt-get install inotify-tools # # I'm just trying to help with the script logic here. # I DON'T HAVE A MAUSBERRY AND DIDN'T TEST THE GPIO STUFF HERE! # ######################################################### # U S E I T A T Y O U R O W N R I S K ! ! ! # ######################################################### # # meleu - July/2017 # kudos for @cyperghost , who is very persistent in help you guys! :-) #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" # up to here this code is executed at booting (/etc/rc.local) # let's wait for the creation of the "/sys/class/gpio/gpio$GPIOpin1/value" sleep 30 # not sure if 30 seconds is a good value... while inotifywait -qq -e modify "$file" ; do power="$(cat "$file")" [[ "$power" == 0 ]] && continue # explaining the crazy command below: # 1. get 4th line of runcommand.info (aka "emulator command") # 2. delete backslash '\' character # 3. replace every character that has a special meaning in a regex context with a dot '.' emu_command="$(sed -n 4p /dev/shm/runcommand.info | tr -d '\\"' | tr '^$[]*.()|+?{}' '.')" [[ -n "$emu_command" ]] && pkill -f "$emu_command" && sleep 10 espid=$(pgrep -f "/opt/retropie/supplementary/.*/emulationstation([^.]|$)") if [[ "$espid" ]]; then touch /tmp/es-shutdown && chown pi:pi /tmp/es-shutdown kill "$espid" exit fi sudo poweroff done
I did a trick for debugging, then if this script doesn't work, please perform this command:
grep 'rc\.local' /var/log/syslog > debug.log
It creates a file named
debug.log
paste its conten in ghostbin.com or something similar. -
@meleu still did not work. I did the grep thing and can't find the syslog directory to find debug.log. also i don't have the /sys/class/gpio/gpio$GPIOpin1 directory. not sure if thats useful, but trying to help.
-
@lostless please, paste here the output of these commands:
ls -l /var/log/syslog
and
ls -lah /sys/class/gpio/*
-
first
-rw-r----- 1 root adm 2281836 Jul 29 03:38 /var/log/syslog
second
-rwxrwx--- 1 root gpio 4.0K Jul 29 02:50 /sys/class/gpio/export lrwxrwxrwx 1 root gpio 0 Jul 29 02:50 /sys/class/gpio/gpio23 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio23 lrwxrwxrwx 1 root gpio 0 Jul 29 02:50 /sys/class/gpio/gpio24 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio24 lrwxrwxrwx 1 root gpio 0 Jul 29 02:50 /sys/class/gpio/gpiochip0 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0 lrwxrwxrwx 1 root gpio 0 Jul 29 02:50 /sys/class/gpio/gpiochip100 -> ../../devices/gpiochip2/gpio/gpiochip100 lrwxrwxrwx 1 root gpio 0 Jul 29 02:50 /sys/class/gpio/gpiochip128 -> ../../devices/gpiochip1/gpio/gpiochip128 -rwxrwx--- 1 root gpio 4.0K Jul 29 02:50 /sys/class/gpio/unexport
-
-
-rw-r--r-- 1 pi pi 16656 Jul 29 03:44 debug.log
i found a debug.log in the home (~) directory
-
@lostless open this file on your Windows (I'm assuming you're using Windows), select all text and paste on ghostbin.com
-
@meleu nope mac. I can boot into windows if need be.
-
@lostless nop, I just need you to copy the entire file
-
@meleu
its just/var/log/syslog:Jul 23 06:28:29 genepi systemd[1]: Starting /etc/rc.local Compatibility... /var/log/syslog:Jul 23 06:28:29 genepi systemd[1]: Started /etc/rc.local Compatibility.
over and over with different dates and times. nothing else.
-
@lostless now I need you to do the same thing for
/etc/rc.local
and/etc/switch.sh
(the last one is supposed to be my v1.7 script, but please, paste it on ghostbin so I can really check if everything is fine) -
/etc/rc.local
https://ghostbin.com/paste/goucc/switch.sh
https://ghostbin.com/paste/5agap -
ls -l /etc/switch.sh
-
@meleu said in Mausberry Shutdown Script Doesn't Save Metadata:
ls -l /etc/switch.sh
-rwxrwxrwx 1 root root 1889 Jul 29 02:42 /etc/switch.sh
-
@lostless
damn! I'm not getting what's wrong! Let's try this:sudo bash -x /etc/switch.sh & 2> /home/pi/script-debug.txt
And then press the f%#&ing button. Pretty please... :)
It should turn off your pi...
-
@meleu aaaaaaaaaaaaaannnnnnnddddd...................
...........NO GOOD. >:( sorry man.
-
+ GPIOpin1=23 + GPIOpin2=24 + echo 23 /etc/switch.sh: line 22: echo: write error: Device or resource busy + echo in + echo 24 /etc/switch.sh: line 24: echo: write error: Device or resource busy + echo out + echo 1 + file=/sys/class/gpio/gpio23/value + sleep 30 + inotifywait -qq -e modify /sys/class/gpio/gpio23/value
the readout of that and its stuck. My terminal has not finished what its doing.
-
@lostless are you able to use IRC? maybe it's better than this forum for an online conversation... :P
edit I'm at #retropie at irc.freenode.net
-
@meleu never used IRC. But willing to learn. Just need a client I assume? and somehow the #retropie is relevant somehow.
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.