Recalbox Forum

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • recalbox.com
    • Gitlab repository
    • Documentation
    • Discord

    Bouton ON / OFF / Reboot

    Manettes/GPIO/Encodeurs
    reboot
    5
    12
    3705
    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.
    • antipode-x-alex
      antipode-x-alex last edited by

      Salutations à tous, je vous contacte car j'aurais besoins d'aide sur un script ! J'achetais ce matériel qui permet d'avoir un bouton "on off reboot" : * https://github.com/LowPowerLab/ATX-Raspi Mais probleme le script ne marche pas sur recalbox, du coup si vous avez une idée ? En retirant tous les sudo le script passe sauf qu'il ne trouve pas le dossier /etc/rc.local

      echo '#!/bin/bash
      
      #This is GPIO 7 (pin 26 on the pinout diagram).
      #This is an input from ATXRaspi to the Pi.
      #When button is held for ~3 seconds, this pin will become HIGH signalling to this script to poweroff the Pi.
      SHUTDOWN=7
      REBOOTPULSEMINIMUM=200      #reboot pulse signal should be at least this long
      REBOOTPULSEMAXIMUM=600      #reboot pulse signal should be at most this long
      echo "$SHUTDOWN" > /sys/class/gpio/export
      echo "in" > /sys/class/gpio/gpio$SHUTDOWN/direction
      
      #Added reboot feature (with ATXRaspi R2.6 (or ATXRaspi 2.5 with blue dot on chip)
      #Hold ATXRaspi button for at least 500ms but no more than 2000ms and a reboot HIGH pulse of 500ms length will be issued
      
      #This is GPIO 8 (pin 24 on the pinout diagram).
      #This is an output from Pi to ATXRaspi and signals that the Pi has booted.
      #This pin is asserted HIGH as soon as this script runs (by writing "1" to /sys/class/gpio/gpio8/value)
      BOOT=8
      echo "$BOOT" > /sys/class/gpio/export
      echo "out" > /sys/class/gpio/gpio$BOOT/direction
      echo "1" > /sys/class/gpio/gpio$BOOT/value
      
      echo "ATXRaspi shutdown script started: asserted pins ($SHUTDOWN=input,LOW; $BOOT=output,HIGH). Waiting for GPIO$SHUTDOWN to become HIGH..."
      
      #This loop continuously checks if the shutdown button was pressed on ATXRaspi (GPIO7 to become HIGH), and issues a shutdown when that happens.
      #It sleeps as long as that has not happened.
      while [ 1 ]; do
        shutdownSignal=$(cat /sys/class/gpio/gpio$SHUTDOWN/value)
        if [ $shutdownSignal = 0 ]; then
          /bin/sleep 0.2
        else  
          pulseStart=$(date +%s%N | cut -b1-13) # mark the time when Shutoff signal went HIGH (milliseconds since epoch)
          while [ $shutdownSignal = 1 ]; do
            /bin/sleep 0.02
            if [ $(($(date +%s%N | cut -b1-13)-$pulseStart)) -gt $REBOOTPULSEMAXIMUM ]; then
              echo "ATXRaspi triggered a shutdown signal, halting Rpi ... "
              sudo poweroff
              exit
            fi
            shutdownSignal=$(cat /sys/class/gpio/gpio$SHUTDOWN/value)
          done
          #pulse went LOW, check if it was long enough, and trigger reboot
          if [ $(($(date +%s%N | cut -b1-13)-$pulseStart)) -gt $REBOOTPULSEMINIMUM ]; then 
            echo "ATXRaspi triggered a reboot signal, recycling Rpi ... "
            sudo reboot
            exit
          fi
        fi
      done' > /etc/shutdowncheck.sh
      sudo chmod 755 /etc/shutdowncheck.sh
      sudo sed -i '$ i /etc/shutdowncheck.sh &' /etc/rc.local
      
      1 Reply Last reply Reply Quote 0
      • acris
        acris last edited by

        Bonjour /etc/rc.localn'existe pas sous recalbox. essaie en plaçant ton script au démarrage du pc dans /etc/init.d/ Lire : https://github.com/digitalLumberjack/recalbox-os/wiki/Ajouter-votre-propre-script-au-demarrage-(FR)

        1 Reply Last reply Reply Quote 0
        • antipode-x-alex
          antipode-x-alex last edited by

          Merci l'ami, j'essaie sa ce soir.

          1 Reply Last reply Reply Quote 0
          • colwyn1978
            colwyn1978 last edited by

            Moi j'ai juste connecté un bouton (le même que sur les bornes d'arcade) sur 2 pins du gpio et je peux allumer sans problème et rebooter mon pi2. Pour l’éteindre je le fais par le menu, c'est bien plus simple et aucun besoin de trifouiller dans des lignes de codes.

            1 Reply Last reply Reply Quote 0
            • antipode-x-alex
              antipode-x-alex last edited by

              Bon pas reussis mais j'abandonne pas... Error :

              ATXRaspi shutdown script started: asserted pins (7=input,LOW; 8=output,HIGH). Waiting for GPIO7 to become HIGH...
              sleep: invalid number '0.02'
              /etc/init.d/shutdowncheck.sh: line 35: 1427321809%N-1427321809%N: division by 0 (error token is "N-1427321809%N")
              
              1 Reply Last reply Reply Quote 0
              • acris
                acris last edited by

                Bonjour J'ai modifié la fin de ton script et j'ai ajouté un script pour que ça tourne en "service" je ne sais pas si ça te sera utile. J'ai supprimé aussi la commande sudo car tu es déjà en root dans recalbox J'ai supprimé la derniere ligne du sed ne sachant pas vraiement à quoi elle sert. essaie ceci : shutdowncheck.sh

                echo '#!/bin/bash
                
                #This is GPIO 7 (pin 26 on the pinout diagram).
                #This is an input from ATXRaspi to the Pi.
                #When button is held for ~3 seconds, this pin will become HIGH signalling to this script to poweroff the Pi.
                SHUTDOWN=7
                REBOOTPULSEMINIMUM=200      #reboot pulse signal should be at least this long
                REBOOTPULSEMAXIMUM=600      #reboot pulse signal should be at most this long
                echo "$SHUTDOWN" > /sys/class/gpio/export
                echo "in" > /sys/class/gpio/gpio$SHUTDOWN/direction
                
                #Added reboot feature (with ATXRaspi R2.6 (or ATXRaspi 2.5 with blue dot on chip)
                #Hold ATXRaspi button for at least 500ms but no more than 2000ms and a reboot HIGH pulse of 500ms length will be issued
                
                #This is GPIO 8 (pin 24 on the pinout diagram).
                #This is an output from Pi to ATXRaspi and signals that the Pi has booted.
                #This pin is asserted HIGH as soon as this script runs (by writing "1" to /sys/class/gpio/gpio8/value)
                BOOT=8
                echo "$BOOT" > /sys/class/gpio/export
                echo "out" > /sys/class/gpio/gpio$BOOT/direction
                echo "1" > /sys/class/gpio/gpio$BOOT/value
                
                echo "ATXRaspi shutdown script started: asserted pins ($SHUTDOWN=input,LOW; $BOOT=output,HIGH). Waiting for GPIO$SHUTDOWN to become HIGH..."
                
                #This loop continuously checks if the shutdown button was pressed on ATXRaspi (GPIO7 to become HIGH), and issues a shutdown when that happens.
                #It sleeps as long as that has not happened.
                while [ 1 ]; do
                  shutdownSignal=$(cat /sys/class/gpio/gpio$SHUTDOWN/value)
                  if [ $shutdownSignal = 0 ]; then
                    /bin/sleep 0.2
                  else  
                    pulseStart=$(date +%s%N | cut -b1-13) # mark the time when Shutoff signal went HIGH (milliseconds since epoch)
                    while [ $shutdownSignal = 1 ]; do
                      /bin/sleep 0.02
                      if [ $(($(date +%s%N | cut -b1-13)-$pulseStart)) -gt $REBOOTPULSEMAXIMUM ]; then
                        echo "ATXRaspi triggered a shutdown signal, halting Rpi ... "
                        poweroff
                        exit
                      fi
                      shutdownSignal=$(cat /sys/class/gpio/gpio$SHUTDOWN/value)
                    done
                    #pulse went LOW, check if it was long enough, and trigger reboot
                    if [ $(($(date +%s%N | cut -b1-13)-$pulseStart)) -gt $REBOOTPULSEMINIMUM ]; then 
                      echo "ATXRaspi triggered a reboot signal, recycling Rpi ... "
                      reboot
                      exit
                    fi
                  fi
                done' > /recalbox/scripts/shutdowncheck.sh
                chmod 775 /recalbox/scripts/shutdowncheck.sh
                

                Création du service à nommer S92shutdownService et à placer dans /etc/init.d/

                #!/bin/bash
                ### BEGIN INIT INFO
                # Provides: shutdowncheck.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 shutdowndeamon service.
                ### END INIT INFO
                
                #VAR
                RUN="/recalbox/scripts/shutdowncheck.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 shutdowncheck.sh ['$BTD_PID'] [33[33;32m OK 33[0m]'
                   else
                      echo -e '33[0mservice shutdowncheck.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/S92shutdownService {start | stop | status}"
                      exit 1
                   ;;
                esac
                
                exit 0
                

                chmod 777 /etc/init.d/S92shutdownService Ensuite tester :

                /etc/init.d/S92shutdownService start
                /etc/init.d/S92shutdownService stop
                /etc/init.d/S92shutdownService status
                

                Tiens nous au courant 😉

                1 Reply Last reply Reply Quote 0
                • mth-richer
                  mth-richer last edited by

                  Bonjour, Du coup cette méthode fonctionne correctement ? Merci.

                  Rpi rev B Dualshock 3 SixAxis

                  1 Reply Last reply Reply Quote 0
                  • antipode-x-alex
                    antipode-x-alex last edited by

                    Désolé j'ai pas eu le temps de tester, j'ai refait entièrement ma salle à manger et cuisine. N'était plutôt hard que soft lol. Je mis remet cet semaine je pense.

                    1 Reply Last reply Reply Quote 0
                    • mth-richer
                      mth-richer last edited by

                      Bonjour, D'accord bah tiens nous au courant dès que tu as fait ça. de mon côté si j'ai le temps je vais essayé aussi.   Merci.

                      Rpi rev B Dualshock 3 SixAxis

                      1 Reply Last reply Reply Quote 0
                      • antipode-x-alex
                        antipode-x-alex last edited by

                        Salut Acris encore desole du temp de reponse, gros travaux chez moi... Donc je viens de faire laisser cela marche tres bien juste une corrections dans ton script .

                        Tu as mis : done' > /recalbox/script/shutdowncheck.sh chmod 755 /recalbox/script/shutdowncheck.sh Et il fallait : done' > /recalbox/scripts/shutdowncheck.sh chmod 755 /recalbox/scripts/shutdowncheck.sh

                        De plus le shutdown ne se fait pas à 3 seconde mais à 7 et le reboot à 8 ! Bizarre je regarderais plus tard.

                        1 Reply Last reply Reply Quote 0
                        • acris
                          acris last edited by

                          Bonjour dans le script il est noté en haut : et si j ai bien compris le reboot se fait entre 3 et 10 secondes non ?

                          #When button is held for ~3 seconds, this pin will become HIGH signalling to this script to poweroff the Pi.
                          SHUTDOWN=7
                          REBOOTPULSEMINIMUM=200      #reboot pulse signal should be at least this long
                          REBOOTPULSEMAXIMUM=600      #reboot pulse signal should be at most this long
                          echo "$SHUTDOWN" > /sys/class/gpio/export
                          echo "in" > /sys/class/gpio/gpio$SHUTDOWN/direction
                          

                          Pour les autres, j ai uploadé les scripts Via putty in SSH : login (root) / password (recalboxroot)

                          wget https://app.box.com/s/79104q7bwlzdvgjt1fjlsf9h7ktmsp3g
                          bash setup.sh
                          wget https://app.box.com/s/uz3sp9ya0ls2e6w825w26slpspeqno0m
                          cp ~/S92shutdownService  /etc/init.d/
                          chmod 775 /etc/init.d/S92shutdownService
                          reboot
                          
                          1 Reply Last reply Reply Quote 0
                          • betobcampos
                            betobcampos last edited by

                            <pre id="tw-target-text" class="tw-data-text vk_txt tw-ta tw-text-small" dir="ltr" style="unicode-bidi: isolate; font-family: inherit; border: none; padding: 0px 0.14em 0px 0px; position: relative; margin-top: 0px; margin-bottom: 0px; resize: none; overflow: hidden; width: 237.5px; white-space: pre-wrap; word-wrap: break-word; color: #212121; height: 288px;" data-placeholder="Tradução" data-fulltext=""><span lang="en">Hello personal , okay ? Unfortunately i do not speak French . Me parece que managed you create script To turn the rasp . Could provide OS Files paragraph download? I could not understand abcos**tamente Nothing Francisca . Thank you and sorry for the inconvenience . Beto .</span>

                            Publicitário, mineiro e Webdesigner. Web e design grafico Gloria Perez e da Dra. Ana Beatriz Barbosa Silva. Pesquisador do tema Deepweb e Cruzeirense!

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            Want to support us ?

                            70
                            Online

                            99.6k
                            Users

                            28.1k
                            Topics

                            187.1k
                            Posts

                            Copyright © 2021 recalbox.com