[Résolu][Tuto]Circuit Mausberry et recalbox



  • Bonjour, Tout d'abord félicitation pour cette distrib retrogaming. C'est du très beau travail ! Je pense d'ailleurs faire un don en soutient 🙂 J'ai en projet d'intégrer un rasp dans le boitier d'une nes hs et utiliser les switch en facade. pour gérer tout ca, je voudrais intégrer entre l'alim et le pi un circuit mausberry pour contrôler le démarrage/arret et reset. Mausberry circuit met à dispo des scripts pour raspbian/debian et variante (raspbmc par exemple..), openelec , arch. Est ce que recalbox est basé sur raspbian/debian ? je me demande si le script debian sera compatible avec recalbox. les liens de la page de setup du mausberry circuit : http://mausberry-circuits.myshopify.com/pages/setup http://mausberry-circuits.myshopify.com/products/shutdown-circuit-use-your-own-switch sinon je bricole un trucs juste pour couper l'alim 5v.. mais c'est moins propre Merci d'avance 🙂 Edit : Tutoriel : http://blog.recalbox.com/forums/topic/circuit-mausberry-et-recalbox/page/2/#post-5225 A lire : http://blog.recalbox.com/forums/topic/circuit-mausberry-et-recalbox/page/2/#post-7616


  • Staff
    Developer
    Global moderator
    Team

    Alors les scripts devraient fonctionner comme ils utilisent l'interface de /sys des gpio. Au pire on installera le support dans le kernel. Fonce.



  • Merci pour ton retour. Je vais commander 🙂



  • re 🙂 j'ai avancé sur mon projet. j'ai tout les éléments. J'ai testé le mausberry circuit sur une raspbian/raspbmc. Il fonctionne parfaitement. demarrage / arret / reset . C'est parfait pour contrôler l'alimentation de son pi 🙂 cependant je viens d'essayer de mettre en route le script sur la recalbox et ca ne fonctionne pas. J'ai utilisé le script pour raspbian. voila les erreurs que j'ai : 1er : il n'y a pas sudo d'installé => solution j'ai édité le script avec nano pour enlever les sudo. => je ne sais psa si cela pourrait influencer le fonctionnement du script apres ? 2éme erreur et la je bloque : ""sed: /etc/rc.local: No such file or directory"" apparemment ce répertoire n'existe pas. y a t-il un equivalent sur la recalbox ? je pense qu'une fois placé dans le rc.local, le script se lance a chaque démarrage ? Merci d'avance pour ton aide 🙂 ps je suis encore en 3.2.7 .. pas refait ma sd..


  • Tester



  • Possible que ce soit bien ca merci en plus j'avais deja vu ca dans le wiki.. je vais essayer d'adapter 🙂


  • Staff
    Global moderator
    Team

    Merci pour tes recherches. Tiens nous au courant et si tu arrives à bien faire fonctionner ce switch. J'en ai acheté un moi aussi pour un projet perso et ton retour d’expérience et pourquoi pas, un petit tuto 😛 sera le bienvenue :).



  • oui pas de souci. je posterai mes modifications 🙂 par contre je sais pas si avant ce week j'aurais le temps de revoir ça 😕 pour l'instant rien n'est intégré et je dois tout débrancher/rebrancher à chaque test 🙂 En attenant si quelqu'un à un autre avis. notamment sur le fait de supprimer les sudo du script ?


  • Staff
    Global moderator
    Team

    Ba sur plusieurs tutos, ils recommandent justement d'executer les commandes sans sudo sous recalbox. Donc je pense que c'est normal sur ce point... (et pour ma part, je ne suis pas pressé, j'ai déjà d'autres projets en cours qui ne nécessites pas de switch donc rien ne presse ^^).


  • Staff
    Global moderator
    Team

    Bonjour Recalbox a déjà un accès root donc le sudo est inutile dans le script , il suffit juste de mettre les droits d'execution chmod 755 sed: /etc/rc.local: No such file or directory Le dossier qui remplace ceci est /etc/init.d



  • 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 ?


  • Staff
    Global moderator
    Team

    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


  • Staff
    Global moderator
    Team

    Ç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/


Log in to reply
 

Want to support us ?

234
Online

82.0k
Users

22.5k
Topics

163.0k
Posts