Navigation

    Recalbox Forum

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

    SOLVED Carte wm8960 et bouton on/off PIN56PUSH

    Recalbox Général
    wm8960 onoff pin56push
    2
    3
    96
    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.
    • MisterAngus
      MisterAngus last edited by

      Bonjour,

      J'ai installé la carte wm9860 et modifié le boot.config, ça fonctionne nickel.
      J'ai ajouté un bouton poussoir on/off et configuré le recallbox.conf (PIN56PUSH) nickel.

      Mais l'un ne marche pas avec l'autre. C'est soit la carte son, soit le bouton mais pas les deux en même temps !

      Je me doute qu'il y'a un conflit avec le GPIO3(5) et ground(6) mais y'a t'il un moyen de les modifier ?
      Par exemple 13/14, 29/30 etc ...
      Je n'ai pas trouvé les gpio utilisés par la carte son

      Merci d'avance !

      ian57 1 Reply Last reply Reply Quote 0
      • ian57
        ian57 Staff
        Developer
        Global moderator
        Creator
        Team
        @MisterAngus
        last edited by ian57

        @MisterAngus le hat wm8960 utilise l'i2c et bien sur ... PIN56PUSH utilise une pin utilsée par l'I2C, il lya donc conflit. Le seul moyen pour l'instant de régler le soucis est de modifier les scripts de gestion du bouton. Mais à la prochaine mise à jour il faudra refaire la manip.

        Bouton ON/Off
        Pour le bouton on/off tout est déjà prévu dans Recalbox : https://github.com/recalbox/recalbox-os/wiki/Ajouter-un-bouton-on-off-a-votre-recalbox-(FR)

        cependant cela utilise les pin 5 et 6 qui sont utilisées par le module wm8960.

        Il faut donc décaler les pins utilisées à 29 et 30, (GPIO5 et masse) (cf. le brochage du GPIO http://www.pinout.xyz )

        le script est lancé par le fichier S92switch qui utilise le fichier : /recalbox/scripts/powerswitch.sh. Ce dernier définit des fonctions à utiliser en fonction de la méthode choisie dans le fichier recalbox.conf :

        # ------------ A - System Options ----------- #
        #    Uncomment the system.power.switch you use
        ;system.power.switch=ATX_RASPI_R2_6      # http://lowpowerlab.com/atxraspi/#installation
        ;system.power.switch=MAUSBERRY           # http://mausberry-circuits.myshopify.com/pages/setup
        ;system.power.switch=REMOTEPIBOARD_2003  # http://www.msldigital.com/pages/support-for-remotepi-board-2013
        ;system.power.switch=REMOTEPIBOARD_2005  # http://www.msldigital.com/pages/support-for-remotepi-board-plus-2015
        ;system.power.switch=WITTYPI             # http://www.uugear.com/witty-pi-realtime-clock-power-management-for-raspberry-pi
        ;system.power.switch=PIN56ONOFF          # https://github.com/recalbox/recalbox-os/wiki/Add-a-start-stop-button-to-your-recalbox-(EN)
        system.power.switch=PIN56PUSH           # https://github.com/recalbox/recalbox-os/wiki/Add-a-start-stop-button-to-your-recalbox-(EN)
        ;system.power.switch=PIN356ONOFFRESET    # https://github.com/recalbox/recalbox-os/wiki/Add-a-start-stop-button-to-your-recalbox-(EN)
        ;system.power.switch=PIN356PUSHRESET     # https://github.com/recalbox/recalbox-os/wiki/Add-a-start-stop-button-to-your-recalbox-(EN)
        

        Nous allons ici choisir la méthode system.power.switch=PIN56PUSH car on utilise une bouton poussoir temporaire.

        les fonctions sont les suivantes dans le script :

        pin56_start()
        {
            mode=$1                 
            python /recalbox/scripts/rpi-pin56-power.py -m "$mode" &
            pid=$!
            echo "$pid" > /tmp/rpi-pin56-power.pid
            wait "$pid"
        }
        pin56_stop()
        {
            if [[ -f /tmp/rpi-pin56-power.pid ]]; then
                kill `cat /tmp/rpi-pin56-power.pid`
            fi
        }
        

        La fonction utilise le script rpi-pin56-power.py qu'il va nous falloir modifier comme suit pour utiliser les nouveau GPIO :

        import RPi.GPIO as GPIO
        import os
        import argparse
         
        parser = argparse.ArgumentParser(description='power manager')
        parser.add_argument("-m", help="mode onoff or push", type=str, required=True)
        args = parser.parse_args()
         
        mode = args.m
         
        GPIO.setmode(GPIO.BCM)
        # GPIO on pin 29 is the GPIO 5 in BCM mode
        GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_UP)
         
        def shutdown():
          os.system("shutdown -h now")
         
        try:
          if mode == "onoff" :
            GPIO.wait_for_edge(5, GPIO.RISING)
            shutdown()
          elif mode == "push":
            GPIO.wait_for_edge(5, GPIO.FALLING)
            shutdown()
          else:
            print("Unrecognized mode")
        except KeyboardInterrupt:
            print ""
         
        finally:
            print "cleaning up gpio"
            GPIO.cleanup()
        

        la fonction On/Off est cablée sur les pin 29 et 30.

        "UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." Dennis Ritchie

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

          @ian57
          Merci pour ta réponse, sans la voir j'ai cherché et trouvé le script python que j'ai modifié sur le GPIO13 et ça fonctionne !! mais que pour le shut down et d'après ce que j'ai pu lire, le wake up ne peut se faire que sur le GPIO3.
          Donc j'ai un bouton qui fonctionne qu'a moitié 🙂
          Merci pour ta réponse !

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

          Want to support us ?

          59
          Online

          88.3k
          Users

          26.2k
          Topics

          179.8k
          Posts

          Copyright © 2021 recalbox.com