Problème power script
-
@lainbebop J'ai fait la dernière Maj aussi mais j'ai pas installer le script.
-
@lainbebop Hi,
J'ai refait un test hier sur une recalbox fraîchement mise à jour et j'ai bien le comportement attendu sur les deux boutons.Peux tu re-verifier ton recalbox.conf et ton cablage?
-
(on doit tagger et mettre le text dans 2 posts séparés sinon "flagged as spam )
-
This post is deleted! -
Voici le recalbox.conf ! A noter qu'avant la MAJ ne n'avais pas le PIN356PUSHRESET que je l'ai ajouté, et qu'après la MAJ j'avais 10fois cette ligne et plus les autres (qui étaient commentés ";"!) j'ai donc tout supprimé pour ne laisser que celui là :
# System Variable # You can configure your recalbox from here # To set a variable, remove the first ; on the line # ------------ A - System Options ----------- # # Uncomment the system.power.switch you use system.power.switch=PIN356PUSHRESET ## fbcp FrameBuffer Copy Program ## For small TFT screen on GPIO and SPI ## See https://github.com/recalbox/recalbox-os/wiki/Utility---Use-of-fbcp-for-small-TFT-screen-%28EN%29 for details ## Needed for Waveshare 3.2" 3.5" TFT screen, 2.8" Adafruit screen ## See https://github.com/recalbox/recalbox-os/wiki/TFT-Screen-SPI-Bus-%28EN%29 ## for support and configuration details needed by /boot/config.txt system.fbcp.enabled=0 ## Recalbox Manager (http manager) system.manager.enabled=1 ## 1 or 2, depending on the manager version you wish system.manager.version=2 ## Recalbox security # enforce security # samba password required # disable virtual gamepads system.security.enabled=0 ## Recalbox API (REST) system.api.enabled=0 ## Allow a specific resolution for ES only from the command : tvservice -m [MODE] ## Leave commented for the default usual behaviour ;system.es.videomode=CEA 4 HDMI ## EmulationStation ### menu style ### default -> default all options menu ### none -> no menu except the game search menu ### bartop -> less menu, only needed for bartops emulationstation.menu=default ### Select a system to show on boot (use rom directory name) (string) emulationstation.selectedsystem=favorites ### Show the gamelist of the first or selected system on boot (0,1) emulationstation.bootongamelist=0 ### Disable system view ES will boot and show ONLY the first or selected system (0,1) emulationstation.hidesystemview=0 ### Pa**e Gamelists only. Show only games listed in gamelist.xml files (0,1) emulationstation.gamelistonly=0 ### Force basicgameList view to be displayed, even if your game systems are scraped (0,1) emulationstation.forcebasicgamelistview=0 ## Emulator special keys ## default -> default all special keys ## nomenu -> cannot popup the emulator menu ## none -> no special keys in emulators system.emulators.specialkeys=default ## Show or hide kodi in emulationstation (0,1) kodi.enabled=1 ## Start kodi at launch (0,1) kodi.atstartup=0 ## set x button shortcut (0,1) kodi.xbutton=0 ## Allow a specific resolution for Kodi only from the command : tvservice -m [MODE] ## By default is using the default resolution of your screen kodi.videomode=default ## Kodi can wait for a network component before starting ## waithost is the ip or hostname that must answer to a ping to validate the availability ## waittime is the maximum time waited when kodi boots ## if waitmode is required, kodi will not start if the component is not available ## if waitmode is wish, kodi will start if the component is not available ## if waitmode is not set or has another value, kodi will start immediately ;kodi.network.waitmode=required ;kodi.network.waittime=10 ;kodi.network.waithost=192.168.0.50 ## Hyperion ## Hyperion allows you to use an ambilight like led system on your recalbox ## Use hypercon to create your configuration file, and copy it in /recalbox/share/system/configs/hyperion/hyperion.config.json hyperion.enabled=0 # ------------ B - Network ------------ # ## Set system hostname system.hostname=RECALBOX ## Activate wifi (0,1) wifi.enabled=1 ## Wifi SSID (string) wifi.ssid=Livebox-CF56 ## Wifi KEY (string) ## after rebooting the recalbox, the "new key" is replace by a hidden value "enc:xxxxx" ## you can edit the "enc:xxxxx" value to replace by a clear value, it will be updated again at the following reboot ## Escape your special chars (# ; $) with a backslash : $ => \$ wifi.key=enc:U2FsdGVkX19bTpsXwvHmV1S+UUKJMMot/DmZYLtq8TNmN0c3xQdMHgSLwcUFCnxi # secondary wifi (not configurable via the user interface) ;wifi2.ssid=new ssid ;wifi2.key=new key # third wifi (not configurable via the user interface) ;wifi3.ssid=new ssid ;wifi3.key=new key ## Samba share system.samba.enabled=1 ### Virtual Gamepads system.virtual-gamepads.enabled=1 ### SSH system.ssh.enabled=1 # ------------ C - Audio ------------ # ## Set the audio device (auto, hdmi, jack) audio.device=jack ## Set system volume (0..100) audio.volume=77 ## Enable or disable system sounds in ES (0,1) audio.bgmusic=1 # -------------- D - Controllers ----------------- # # Enable support for standard bluetooth controllers controllers.bluetooth.enabled=1 ## Please enable only one of these # -------------- D1 - PS3 Controllers ------------ # ##Enable PS3 controllers support controllers.ps3.enabled=1 ## Choose a driver between bluez, official and shanwan ## bluez -> bluez 5 + kernel drivers, support official and shanwan sisaxis ## official -> sixad drivers, support official and gasia sisaxis ## shanwan -> shanwan drivers, support official and shanwan sisaxis controllers.ps3.driver=bluez # ------------ D2 - GPIO Controllers ------------ # ## GPIO Controllers ## enable controllers on GPIO with mk_arcarde_joystick_rpi (0,1) controllers.gpio.enabled=0 ## mk_gpio arguments, map=1 for one controller, map=1,2 for 2 (map=1,map=1,2) controllers.gpio.args=map=1,2 # ------------ D3 - Steam Controllers ------------ # ## Enable steam controller service controllers.steam.enabled=0 ## DB9 Controllers ## Enable DB9 drivers for atari, megadrive, amiga controllers (0,1) controllers.db9.enabled=0 ## db9 arguments controllers.db9.args=map=1 ## Gamecon controllers ## Enable gamecon controllers, for nes, snes psx (0,1) controllers.gamecon.enabled=0 ## gamecon_args controllers.gamecon.args=map=1 ## XGaming's XArcade Tankstik and other compatible devices controllers.xarcade.enabled=1 # ------------ F - Language and keyboard ------------ # ## Set the language of the system (fr_FR,en_US,en_GB,de_DE,pt_BR,es_ES,it_IT,eu_ES,tr_TR,zh_CN) system.language=fr_FR ## set the keyboard layout (fr,en,de,us,es) system.kblayout=fr ## Set you local time ## Select your timezone from : ls /usr/share/zoneinfo/ (string) system.timezone=Europe/Paris # ------------ G - UPDATES ------------ # ## Automatically check for updates at start (0,1) updates.enabled=1 # Update type : default to stable updates.type=stable # ------------ H - HERE IT IS - GLOBAL EMULATOR CONFIGURATION ------------ # ## The global value will be used for all emulators, except if the value ## is redefined in the emulator ## Set game resolution for emulators ## select your mode from the command : tvservice -m [MODE] ## CEA 5 HDMI : 1920x1080 @ 60Hz 16:9, clock:74MHz interlaced ## CEA 4 HDMI : 1280x720 @ 60Hz 16:9, clock:74MHz progressive ## use 'default' for using the default resolution ## use 'auto' : switches to CEA 4 HDMI if supported, else keep the current resolution ## (string) global.videomode=DMT 9 HDMI ## Shader set ## Automatically select shaders for all systems ## (none, retro, scanlines) global.shaderset=none ## Once enabled, your screen will be cropped, and you will have a pixel perfect image (0,1) global.integerscale=0 ## Set gpslp shader for all emulators (prefer shadersets above). Absolute path (string) global.shaders= ## Set ratio for all emulators (auto,4/3,16/9,16/10,custom) global.ratio=auto ## Set smooth for all emulators (0,1) global.smooth=1 ## Set rewind for all emulators (0,1) global.rewind=0 ## Set autosave/load savestate for all emulators (0,1) global.autosave=0 ## Enable retroarchievements (0,1) ## Set your www.retroachievements.org username/password ## Escape your special chars (# ; $) with a backslash : $ => \$ global.retroachievements=0 global.retroachievements.hardcore=0 global.retroachievements.username= global.retroachievements.password= ## Set retroarch input driver (auto, udev, sdl2) ## If you don't have issues with your controllers, let auto global.inputdriver=auto ## If you do not want recalboxOS to generate the configuration for all emulators (string) ;global.configfile=/path/to/my/configfile.cfg # ------------ I - EMULATORS CHOICES ----------- # ## You can override the global configuration here ## Here is the snes example ;snes.videomode=CEA 4 HDMI snes.core=snes9x_next ;snes.shaders=/recalbox/share/shaders/shaders_glsl/mysnesshader.gplsp snes.ratio=4/3 ;snes.smooth=0 ;snes.rewind=1 ;snes.autosave=0 ;snes.emulator=libretro ;snes.integerscale=0 ## If you do not want recalboxOS to generate the configuration for the emulator : ;snes.configfile=/path/to/my/configfile.cfg ## Default cores for RPi3 snes.core=snes9x_next gba.core=mgba mame.core=mame078 nes.core=quicknes ## NeoGeo emulator ## You can use pifba or a libretro core (fba2x,libretro) neogeo.emulator=libretro ## If you set libretro as neogeo.emulator, the line below sets the retroarch core (fba,imame4all) neogeo.core=fba ## N64 emulator is configured to display a screen with a 640x480 resolution (native n64 resolution) ## So you must use one of these video modes (DMT 4 HDMI,CEA 1 HDMI). ## If your screen is not compatible with one of these video modes, please check the recalbox's wiki. n64.videomode=DMT 4 HDMI ## If you are using a CRT screen, please change the setting above with this one : # n64.videomode=default ## Dreamcast emulator ## Like N64, such a CPU intensive emulator needs a small resolution ## Consider DMT 4 HDMI (640*480) or DMT 9 HDMI (800*600). If you have a black screen on dreamcast, try DMT 9 HDMI here dreamcast.videomode=DMT 4 HDMI ## Configurations generated by Recalbox system.es.menu=default controllers.xboxdrv.enabled=0 controllers.xboxdrv.nbcontrols=2 fba.ratio=4/3 mame.ratio=4/3 nes.ratio=auto nes.emulator=libretro psx.ratio=4/3 psx.rewind=0 fba.rewind=0
Pour les branchements, j'ai juste 2 fils qui partent du bouton, directements branchés sur le GPIO :
Merci de ton aide !
-
@lainbebop la conf et les branchements sont bons
Peux-tu vérifier que le fichier existe bien?
Tu dois avoir un fichier
rpi-pin356-power.py
sous/recalbox/scripts/
-
Je pense que oui ?
-
@lainbebop désolé mais là je suis à court d'idées
un petit
ps
pour voir si le script tourne bien en arrière plan? -
Voilà ce que j'obtiens avec le ps :
PID USER COMMAND 1 root init [3] 2 root [kthreadd] 3 root [ksoftirqd/0] 4 root [kworker/0:0] 5 root [kworker/0:0H] 6 root [kworker/u8:0] 7 root [rcu_sched] 8 root [rcu_bh] 9 root [migration/0] 10 root [migration/1] 11 root [ksoftirqd/1] 12 root [kworker/1:0] 13 root [kworker/1:0H] 14 root [migration/2] 15 root [ksoftirqd/2] 16 root [kworker/2:0] 17 root [kworker/2:0H] 18 root [migration/3] 19 root [ksoftirqd/3] 20 root [kworker/3:0] 21 root [kworker/3:0H] 22 root [kdevtmpfs] 23 root [netns] 24 root [perf] 25 root [khungtaskd] 26 root [writeback] 27 root [crypto] 28 root [bioset] 29 root [kblockd] 30 root [kworker/0:1] 31 root [rpciod] 32 root [kswapd0] 33 root [vmstat] 34 root [fsnotify_mark] 35 root [nfsiod] 44 root [kthrotld] 45 root [bioset] 46 root [bioset] 47 root [bioset] 48 root [bioset] 49 root [bioset] 50 root [bioset] 51 root [bioset] 52 root [bioset] 53 root [bioset] 54 root [bioset] 55 root [bioset] 56 root [bioset] 57 root [bioset] 58 root [bioset] 59 root [bioset] 60 root [bioset] 61 root [bioset] 62 root [bioset] 63 root [bioset] 64 root [bioset] 65 root [bioset] 66 root [bioset] 67 root [bioset] 68 root [bioset] 69 root [VCHIQ-0] 70 root [VCHIQr-0] 71 root [VCHIQs-0] 72 root [iscsi_eh] 73 root [dwc_otg] 74 root [kworker/1:1] 75 root [DWC Notificatio] 76 root [kworker/u8:1] 77 root [irq/92-mmc1] 78 root [VCHIQka-0] 79 root [SMIO] 80 root [deferwq] 81 root [kworker/u8:2] 82 root [bioset] 83 root [mmcqd/0] 84 root [kworker/2:1] 85 root [jbd2/mmcblk0p2-] 86 root [ext4-rsv-conver] 87 root [kworker/2:1H] 88 root [kworker/1:2] 91 root [kworker/0:1H] 92 root [kworker/3:1] 114 root /sbin/syslogd -n 117 root /sbin/klogd -n 155 root dbus-daemon --fork --print-address 5 --print-pid 6 --session 162 root [kworker/3:1H] 165 root [kworker/1:1H] 166 root [kworker/0:2] 167 root /sbin/udevd -d 204 root [cfg80211] 206 root [brcmf_wq/mmc1:0] 207 root [brcmf_wdog/mmc1] 210 root [kworker/3:2] 242 dbus dbus-daemon --system 255 root /usr/sbin/connmand -n 310 root [ipv6_addrconf] 317 root /usr/sbin/wpa_supplicant -u 319 root [kworker/3:3] 411 root [jbd2/mmcblk0p3-] 412 root [ext4-rsv-conver] 531 root /usr/sbin/lircd -n --driver=default --device=/dev/lirc0 --output 921 root {emulationstatio} /usr/bin emulationstation 1009 root /usr/libexec/bluetooth/bluetoothd --noplugin=sixaxispair 1093 root /usr/sbin/ntpd -g 1099 avahi avahi-daemon: running [RECALBOX.local] 1109 root /usr/sbin/dropbear -R 1122 root smbd -D --configfile=/etc/samba/smb.conf 1124 root {smbd-notifyd} smbd -D --configfile=/etc/samba/smb.conf 1125 root {cleanupd} smbd -D --configfile=/etc/samba/smb.conf 1140 root nmbd -D --configfile=/etc/samba/smb.conf 1154 root {powerswitch.sh} /bin/bash /recalbox/scripts/powerswitch.sh star 1164 root python /recalbox/scripts/rpi-pin356-power.py -m push 1170 root node virtualgamepads.js 1189 root {S94manager} /bin/sh /etc/init.d/S94manager start 1191 root node dist/server.js 1207 root /sbin/getty 38400 tty2 1209 root [kworker/u9:0] 1210 root [hci0] 1211 root [hci0] 1213 root [kworker/u9:1] 1214 root /usr/bin/hciattach /dev/serial1 bcm43xx 921600 noflow - 1215 root [kworker/u9:2] 1216 root /usr/bin/node server.js 1320 root /usr/sbin/dropbear -R 1357 root -sh 1369 root ps
TEST 1
J'ai réinstallé RECALBOX sur une autre SD, sans support externe (j'ai débranché ma clé usb), pour tester.
Donc install propre, sans jeux si ce n'est ceux déjà présents dans RECALBOX.Et bien c'est pareil !
- Appui court : rien
- Appui long : rien ou coupure du courant
- Appuis répétés : coupure du courant
TEST 2
J'ai débranché mon bouton du GPIO et j'ai mis un couteau (en métal) entre les 2 PIN 5 et 6 : même comportement qu'avec le bouton, coupure du courant du Pi
T_T
-
( @supernature2k )
-
try this please:
import RPi.GPIO as GPIO import time import os import thread import datetime import socket import sys import argpa**e from datetime import datetime from configgen import recalboxFiles # this last one retrieves emulators bin names pa**er = argpa**e.ArgumentPa**er(description='power manager') pa**er.add_argument("-m", help="mode onoff or push", type=str, required=True) args = pa**er.pa**e_args() mode = args.m IPADDR = "127.0.0.1" PORTNUM = 55355 # IP and port for retroarch network commands POWERPLUS = 3 RESETPLUS = 2 LED = 14 GPIO.setwarnings(False) # no warnings GPIO.setmode(GPIO.BCM) # set up BCM GPIO numbering GPIO.setup(RESETPLUS, GPIO.IN, pull_up_down=GPIO.PUD_UP) # GPIO on pin 3 is the GPIO 2 in BCM mode #to Reset+ GPIO.setup(POWERPLUS, GPIO.IN, pull_up_down=GPIO.PUD_UP) # GPIO on pin 5 is the GPIO 3 in BCM mode #to Power+ GPIO.setup(LED, GPIO.OUT) GPIO.output(LED, True) # GPIO on pin 8 is the GPIO 14 in BCM mode #to LED+ # Define a threaded callback function to run in another thread when events are detected def button_pressed(channel): if channel == POWERPLUS: speed=0.15 shutdownstring="shutdown -h now" nwcommand="QUIT" elif channel == RESETPLUS: speed=0.05 shutdownstring="shutdown -r now" nwcommand="RESET" timer = 0 flag = True while flag: if GPIO.input(channel) == False: timer += 1 print "Button pressed" elif GPIO.input(channel) == True: print "Button released" print timer #timer adds 1 each 0.1 seconds if timer = 10, button is pressed for 1s if (timer > 10): offreset(speed, shutdownstring) print "shutdown" elif (timer >=1): print "retroarch" killthats**t(channel) timer = 0 flag = False time.sleep(0.1) # on power short press, trying to kill all listed emus def killthats**t(channel): if channel == POWERPLUS: for bin in recalboxFiles.recalboxBins: print bin proc = os.path.basename(bin) print proc os.system("killall -9 "+proc) # on long button press clean stop of ES then shutdown -h or -r def offreset(speed, shutdownstring): thread.start_new_thread( blink, (speed, )) flag=True pids = [pid for pid in os.listdir('/proc') if pid.isdigit()] os.system("/etc/init.d/S31emulationstation stop") while flag: flag = False for pid in pids: try: print pid commandpath = open(os.path.join('/proc', pid, 'cmdline'), 'rb').read() if "emulationstation" in commandpath: flag = True except IOError: continue os.system(shutdownstring) # threaded blinking function for LED def blink(speed): while True: GPIO.output(LED, False) time.sleep(speed) GPIO.output(LED, True) time.sleep(speed) # sending network command to retroarch (only exit and reset atm) def retroarch(nwcommand): try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) except socket.error: print 'Failed to create socket' sys.exit() s.sendto(nwcommand, (IPADDR, PORTNUM)) GPIO.add_event_detect(RESETPLUS, GPIO.BOTH, callback=button_pressed, bouncetime=2) GPIO.add_event_detect(POWERPLUS, GPIO.BOTH, callback=button_pressed, bouncetime=2) while True: time.sleep(0.2)
-
J'ai remplacé le contenu du fichier rpi-pin356-power.py par ton code :
Pression longue :
Sous ES : écran noir et petit logo en bas puis extinction : ça marche ?
Sous Emulateur : délai de 2sec puis coupure (sans écran noir?) : c'est normal ?Pression courte :
sous ES : Pas de réaction (normal ?)
sous émulateur : pas de réaction (pas normal ?) -
This post is deleted! -
mount -o remount, rw /
-
@supernature2k
Oui merci j’ai fini par trouver !
Voir mon post au dessus j’ai réussi mais appui court ne fonctionne pas -
@lainbebop pression courte sous ES, rien ne doit se passer
sous emul:
- pression courte (genre 1,2 secondes): QUIT de l'emul
- pression longue: shutdown
-
@supernature2k
Oui donc la pression courte ne fonctionne pas, et la pression longue je ne sais pas trop si le comportement est normal : on passe de l’image du jeu à rien (coupure) donc difficile de dire si c’est le script ou une coupure... -
@lainbebop franchement moi je ne sais plus. Tout fonctionne comme prévu sur mes 3 recalbox en version 18.03.30
-
@supernature2k
Quel est le comportement « normal » lors de l’appui long ? Le jeux quitte puis écran noir puis arrêt ou alors le Pi se coupe avec le jeux encore à l’image ? -
durée/bouton sous ES En jeu RESET court rien reset du system (RetroArch only) RESET long reset propre du système reset propre du système POWER court rien quit du system et retour à ES POWER long shutdown propre du système reset propre du système Maintenant peux-tu essayer en ayant en même temps une console ouverte?
Il y a des output sur la console