[Résolu][Tuto]Circuit Mausberry et recalbox
-
edit je me suis trop emballé
-
rebonjour j'ai fait les modifs nécessaires cependant mon script fonctionne en faisant :
/etc/init.d/S99sw start
mais maintenant j'ai flingué le Systeme j'ai l'impression au reboot et impossible de redémarrer je flash mon image .. voici ce que le script contient :#!/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 poweroff fi done
Donc le problème est que le script est prit en compte apparemment car les gpio sont busy si je refais un start du script mais ca ne fonctionne pas comme quand je fais un start pour la première fois. Quand je démarre avec start en ssh, le script doit être en mode daemon ou "actif"? un truc du genre sinon les changements d'états des gpio ne sont pas capté par le script. le setup d'origine :
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' > /etc/switch.sh sudo chmod 777 /etc/switch.sh sudo sed -i '$ i /etc/switch.sh &' /etc/rc.local
le setup que j'ai modifié :
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 poweroff fi done' > /etc/init.d/s99sw chmod 777 /etc/init.d/s99sw sed -i '$ i /etc/init.d/s99sw &' /etc/init.d/
J'ai une erreur sur la dernière commande sed. mais le script est tout de meme copié. que fait la commande sed, je n'arrive pas bien à comprendre?
-
up personne pour m'aider svp ? plus qu'a finaliser ce point sur ma recalbox
-
quelqu'un pour m'aider à faire en sorte que le script s’exécute en tache de fond svp ?
-
Bonjour si je me base un peu sur les deux scripts existants pour connecter ma manette avec un service qui lanche le bash j'aurai fait ainsi C'est de la pure théorie, sauvegarde ton image avant. Je n'ai pas compris si switch.sh était juste un fichier d'installation ou d’exécution script switch.sh
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' > /recalbox/scripts/switch.sh chmod 777 /recalbox/scripts/switch.sh
Puis basé sur le Btservice de ma manette que j'ai adapté , A nommer S92sw
#!/bin/bash ### BEGIN INIT INFO # Provides: switch.sh # Required-Start: $network $local_fs $remote_fs # Required-Stop: $network $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: switch init script. # Description: Starts and stops SwitchDaemon service. ### END INIT INFO #VAR RUN="/recalbox/scripts/switch.sh" BTD_PID=$(ps -eo pid,command | grep "/bin/bash $RUN" | grep -v grep | awk '{print $1}') serviceStatus() { if [ ! -z "$BTD_PID" ]; then echo -e '33[0mservice switch.sh ['$BTD_PID'] [33[33;32m OK 33[0m]' else echo -e '33[0mservice switch.sh [33[33;31m KO 33[0m]' fi } # Carry out specific functions when asked to by the system case "$1" in start) echo "Starting script $RUN ..." if [ -z "$BTD_PID" ]; then nice -n 19 $RUN& if [ $? -eq 0 ]; then echo -e "33[0mscript $RUN [33[33;32m STARTED 33[0m]" fi else echo "script $RUN already started ['$BTD_PID']!" fi #serviceStatus ;; stop) echo "Stopping script $RUN ..." if [ ! -z "$BTD_PID" ]; then kill $BTD_PID if [ $? -eq 0 ]; then echo -e "33[0mscript $RUN [33[33;31m STOPPED 33[0m]" fi fi #serviceStatus ;; status) serviceStatus ;; *) echo "Usage: /etc/init.d/SwitchService {start | stop | status}" exit 1 ;; esac exit 0
Faire un
chmod 777 /etc/init.d/S92sw
Ensuite tester :/etc/init.d/S92sw start /etc/init.d/S92sw stop /etc/init.d/S92sw status
et ensuite redémarre le rpi2 pour voir si ça lance tout seul. attention il faut attendre quelques secondes pour que le service démarre.
-
Merci beaucoup !! j'avais vu des trucs du genre en cherchant comment passer un script en mode deamon mais je trouvais ca ouf juste pour ca ! Je vais tester ce week end merci beaucoup !
-
je viens de tester le script supplémentaire et ca fonctionne apparemment bien je confirme ce week end et je fais un petit tuto si d'autres achetent ce circuit de control power/reset merci beaucoup pour ton aide / votre aide
-
Ça serait en effet très sympa de ta part @n1kod. Bonne soirée
-
j'en avais déjà préparé un jusqu'au moment ou je me suis rendu compte que ca ne fonctionnait pas au reboot.. y a plus qu'a adapter
-
je ferais bien l'essais sur mon script que je n'ai pas réussi à faire fonctionner. http://blog.recalbox.com/forums/topic/bouton-on-off-reboot/
-
Bonjour n1kod super contente que mon adaptation a pu t'aider J'aj hâte de ton retour de test et tuto final pour aider la communauté Antipode X j'ai modifié une ou deux choses dans ton script et ajouter aussi un fichier "service" si tu en as besoin. A tester Have fun !
-
voici mon petit tuto : Un grand merci a tous et plus particulièrement à "Acris" pour le script à placer dans /etc/init.d. Je vous présente toutes les étapes nécessaires pour faire fonctionner son mausberry circuit avec recalbox. prérequis : 1) un rpib/b+/2 2) un mausberry circuit commandé sur : http://mausberry-circuits.myshopify.com/collections/frontpage/products/shutdown-circuit-use-your-own-switch 3) un interrupteur pour le power et le reset soudé à votre mausberry circuit (ici j'utilise mes boutons d'une Nes récupérée). Etape 1 : Connectez-vous en root sur recalbox en ssh via putty sur windows ou via une console/terminal sur linux/max (ssh root@ip_local_recal_box) Etaoe 2 : Télécharger le script pour raspbian/raspbmc/dérivé
wget http://files.mausberrycircuits.com/setup.sh
Vous êtes en root pas besoin de sudo et de toute facon le paquet "sudo" n'est pas installé sur recalbox. Etape 3 : éditer le script que nous venons de récupérernano setup.sh
faire une copie de sauvegarde :cp setup.sh setup.sh.old
1) Supprimer les sudo et la dernière ligne du script 2) modifier la destination du script et son nom (je veux créer le script dans /etc) le script doit être comme ci-dessous maintenant :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 poweroff fi done' > /etc/mausberry.sh chmod 777 /etc/mausberry.sh
Enregistrer le script (ctrl+x+y avec nano) A noter que vous pouvez modifier les numéros des gpio si besoin (Si ils sont utilisés pour une manette par exemple).. Etape 4 : exécuter setup.sh
bash setup.sh
si il n'y a pas d'erreur, un fichier mausberry.sh est créé dans /etc Etape 5 : Créer le script qui va lancer mausberry.sh au démarrage de votre recalboxnano /etc/init.d/S99maus
Copier le code suivant :#!/bin/bash ### BEGIN INIT INFO # Provides: mausberry.sh # Required-Start: $network $local_fs $remote_fs # Required-Stop: $network $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: switch mausberry init script. # Description: Starts and stops SwitchDaemon service. ### END INIT INFO #VAR RUN="/etc/mausberry.sh" BTD_PID=$(ps -eo pid,command | grep "/bin/bash $RUN" | grep -v grep | awk '{print $1}') serviceStatus() { if [ ! -z "$BTD_PID" ]; then echo -e '33[0mservice mausberry.sh ['$BTD_PID'] [33[33;32m OK 33[0m]' else echo -e '33[0mservice mausberry.sh [33[33;31m KO 33[0m]' fi } # Carry out specific functions when asked to by the system case "$1" in start) echo "Starting script $RUN ..." if [ -z "$BTD_PID" ]; then nice -n 19 $RUN& if [ $? -eq 0 ]; then echo -e "33[0mscript $RUN [33[33;32m STARTED 33[0m]" fi else echo "script $RUN already started ['$BTD_PID']!" fi #serviceStatus ;; stop) echo "Stopping script $RUN ..." if [ ! -z "$BTD_PID" ]; then kill $BTD_PID if [ $? -eq 0 ]; then echo -e "33[0mscript $RUN [33[33;31m STOPPED 33[0m]" fi fi #serviceStatus ;; status) serviceStatus ;; *) echo "Usage: /etc/init.d/SwitchService {start | stop | status}" exit 1 ;; esac exit 0
Enregistrer le fichier avec ctrl+x+y faire un chmod sur le fichier généré pour eviter tout problème de droit :
chmod 777 /etc/init.d/S99maus
Etape 6 : rebootez recalbox ou lancer le script 1)reboot
2)/etc/init.d/S99maus start
Après avoir terminé l'une de ces deux dernières étapes au chois. Votre mausberry circuit doit être fonctionnel. le fait de repasser le powerswitch en position haute devrait arrêter votre recalbox électriquement et proprement. si vous avez des remarques à apporter? je ne suis pas un expert. Je sais qu'il y a plus simple notamment pour générer le mausberry.sh -
Bonjour Merci pour le tutoriel pourquoi avoir placer le fichier dans /etc/mausberry.sh ? et non dans /recalbox/scripts ? J'ai peur que ce soit en partie réinitialisé lors de mise à jour A confirmer.
-
Aucune raison particulière à vrai dire. oui a voir en cas de maj effectivement !
-
Im sorry, I do not understand. Could you add a step by step tutorial? Thanks!
-
Hello Rico it's already a tutorial explained step by step Attention les emplacements ci dessous pour les scripts sont différents. du tuto pour éviter une suppression lors de la mise à jour. Via putty in SSH : login (root) / password (recalboxroot)
wget https://app.box.com/s/znhbk1crgdxbc6x8fh866tnkeimabfr4 bash setup.sh wget https://app.box.com/s/b1i4j3w2lr4lkabdqg6zsohurzrh6ww8 cp ~/S99maus /etc/init.d/ chmod 775 /etc/init.d/S99maus reboot
-
Thanks Acris
-
bonjour, j'ai suivi toutes les étapes. j'ai brancher un bouton poussoir pour le reset et un bouton coulissant on-off pour la mise en marche. Mais des que j'appuie sur le reset la console s'éteint mais ne redémarre pas, et si je fait coulisser mon bouton que ce soit de on à off ou l'inverse la console s'allume. Mais je ne peux pas éteindre la console avec le bouton on-off.
-
Bonjour les scripts ont été créé pour le mausberry, ils ne sont pas adaptés à tes boutons apparemment. Sur quel pin as tu branché ton bouton reset ? si effectivement tu n'as pas de mausberry as tu essayé ce script : http://blog.recalbox.com/forums/topic/bouton-on-off-reboot/#post-5114
-
Re, j'ai bien un mausberry. J'ai brancher le bouton reset sur les 2 trou prévu a cet effet ( rst ). Je vais re testé dans l'après midi. Et en même temps comment puis-je brancher une leds sur le mausberry, j'ai vu qu'il y avait un trou seulement ?! Comment je fait pour brancher mon + et - de ma leds moi ^^ . je dois brancher la masse ailleurs ? Sur les gpio?