Bouton poussoir pour changer la résolution de la recalbox



  • Bonjour à tous !
    J'utilise ma recalbox dans 2 configs bien distinctes :

    • sur la télé de mes potes (le 720p par défaut c'est bien)
    • sur une mini-borne dédiée avec écran 10 pouces, et là il faut du 800x600 (et ce n'est pas détecté)

    Du coup j'arrête pas de devoir me connecter en SSH avec putty, pour changer le mode video dans recalbox.conf ET dans /boot/config.txt pour les interfaces, ce qui est plus coton (remonter la partition en RW et tout).
    Il faut une connexion web et ce n'est pas très spontanné comme manip, quoi.

    Alors je me suis dit :
    "Eh ce serait cool un bouton-poussoir sur un GPIO qui ferait le switch entre mes 2 modes préférés !"

    Et j'y suis presque (je pense), l'idée ce serait de jongler entre 2 fichiers recalbox.conf et recalbox.bak (par ex), l'un en 720p l'autre en 800x600... et un script bash pour les intervertir (les renommer quoi).

    Problème : sur des fichiers normaux ça marche (sous Debian en tout cas), mais il semble que je ne puisse pas renommer recalbox.conf...
    Protégé en écriture ?

    J'ai essayé
    mount -o remount, rw /boot
    mais non... et
    killall emulationstation
    mais toujours pas...

    Qu'est-ce que je dois faire pour que mon script puisse prendre la main sur le fichier recalbox.conf ?
    Et idem pour /boot/config.txt ?

    Pour info, mon script bash :

    mount -o remount, rw /boot
    mv /recalbox/share/system/recalbox.bak recalbox.next
    mv /recalbox/share/system/recalbox.conf recalbox.bak
    mv /recalbox/share/system/recalbox.next recalbox.conf
    mv /boot/config.bak /boot/config.next
    mv /boot/config.txt /boot/config.bak
    mv /boot/config.next /boot/config.txt
    reboot

    Je n'ai pas encore essayé de le déclencher via le GPIO, il faudrait déjà qu'il marche via la console... là j'ai ça :

    mv: can't rename '/boot/config.next': No such file or directory
    (et ça reboot, )

    Par contre j'ai testé le principe sous Raspbian, j'arrive à lancer un bash qui échange 2 fichiers texte et reboot quand je connecte le GPIO3 avec le GROUND... j'étais tout content :)
    Je me suis inspiré largement de cet article

    boot -> bash .sh via init.d -> script python -> écoute GPIO -> bash .sh qui fait le boulot et reboot

    (Pfiu)

    Bref, je trouvais l'idée astucieuse, intervertir 2 fichiers de config et le tour est joué... mais j'ai dû louper quelque chose.


  • Moderator
    Team
    Creator
    Moderator

    recalbox.conf n'est pas dans /boot
    il faut donc:
    mount -o remount, rw /

    edit: il faut les deux hein, / et /boot sont deux arbos differentes



  • @GomiBoy
    Contrairement à la recalbox.conf, je vois noir pour la config.txt qui me semble part intégré de l'os qu'est Recalbox.
    Moi je vois une solution beaucoup plus simple. Tu prends deux cartes SD que tu configure d'après les besoins relatifs. Comme ça juste besoin de changer de carte. Tu pourra pour recalbox.conf aussi mettre ton \share "maison" sur une mémoire USB extérieure, recalbox.conf se trouvera alors à cet endroit.



  • @gomiboy avant d'inventer une usine à gaz (qu'on ne fera sûrement pas) tu peux détailler cet ecran 800x600 ? Modèle, type de branchement, ce que tu as du changer dans recalbox ... Parce que je sens que la solution devrait déjà etre toute trouvée dans la prochaine release



  • Ah ben ma carte SD vient de rendre l'âme !
    Une Samsung 32 Go.
    Ca ne boot plus et je vois des partitions vides avec DiskInternals Linux Reader.
    Je suis deg, j'avais une partie de Zelda The Minish Cap bien avancée et je n'ai pas de backup de la sauvegarde :/

    Du coup je vais passer en Clé USB 32 Go + carteSD, ce qui ouvre effectivement la possibilité de me créer 2 cartes distinctes... avant je ne l'envisageais pas car l'idée c'est de continuer les parties en cours.

    Bon j'ai quand-même très envie de tester avec
    mount -o remount, rw /
    Ce serait fun un bouton pour changer de résolution !

    L'écran c'est celui-ci, il est plutôt chouette mais recalbox ne détecte pas sa résolution, et avoir un affichage déformé (du 16/9 sur un écran 4/3) ça ne me convient pas du tout.
    Je l'ai intégré dans une mini-borne faite maison.
    text alternatif
    (Il faut que je mette la photo à jour, j'ai intégré des petites enceintes sous l'écran depuis, et c'est mieux !)
    Il est branché en HDMI.

    Pour passer en mode "écran 10 pouces" je fais :

    • édition de recalbox.conf
      global.videomode=DMT 9 HDMI

    • édition de config.txt
      mount -o remount, rw /boot
      puis
      hdmi_group=2
      hdmi_mode=9

    DMT9 c'est donc 800x600, et j'ai un affichage pixel perfect sur les interfaces et les jeux.

    Bon, du coup il faut que je choppe une nouvelle carte micro SD pour continuer à tester, à suivre !



  • @gomiboy on peut resoudre ca autrement je pense. Tin ecran est branche en hdmi ou pas ? Donne-moi le resultat de tvservice -n stp



  • Hop, de retour après réinstall de la dernière version sur la même carte, qui n'était pas morte, juste les données corrompues.

    @substring Mon écran est en hdmi, et ta ligne de commande me donne :
    device_name=MST-MStar_Demo
    ...
    C'est pas très explicite, si ?
    Effectivement, ce serait encore mieux si je pouvais faire en sorte que la résolution de l'écran soit tout simplement bien détecté.



  • @substring et tant que j'y suis :

    tvservice -m CEA
    Group CEA has 13 modes:
               mode 1: 640x480 @ 60Hz 4:3, clock:25MHz progressive
               mode 2: 720x480 @ 60Hz 4:3, clock:27MHz progressive
               mode 3: 720x480 @ 60Hz 16:9, clock:27MHz progressive
      (prefer) mode 4: 1280x720 @ 60Hz 16:9, clock:74MHz progressive
               mode 5: 1920x1080 @ 60Hz 16:9, clock:74MHz interlaced
               mode 7: 720x480 @ 60Hz 16:9, clock:27MHz x2 interlaced
               mode 16: 1920x1080 @ 60Hz 16:9, clock:148MHz progressive
               mode 17: 720x576 @ 50Hz 4:3, clock:27MHz progressive
               mode 18: 720x576 @ 50Hz 16:9, clock:27MHz progressive
      (native) mode 19: 1280x720 @ 50Hz 16:9, clock:74MHz progressive
               mode 20: 1920x1080 @ 50Hz 16:9, clock:74MHz interlaced
               mode 22: 720x576 @ 50Hz 16:9, clock:27MHz x2 interlaced
               mode 31: 1920x1080 @ 50Hz 16:9, clock:148MHz progressive
    # tvservice -m DMT
    Group DMT has 5 modes:
               mode 4: 640x480 @ 60Hz 4:3, clock:25MHz progressive
               mode 9: 800x600 @ 60Hz 4:3, clock:40MHz progressive
               mode 16: 1024x768 @ 60Hz 4:3, clock:65MHz progressive
               mode 35: 1280x1024 @ 60Hz 5:4, clock:108MHz progressive
               mode 85: 1280x720 @ 60Hz 16:9, clock:74MHz progressive
    

    Mais pour avoir fait pas mal de tests, les infos ne sont pas bonnes, en CEA 4 c'est déformé et on voit bien que ça ne matche pas les pixels de l'écran.
    En DMT 9 c'est parfait.



  • @gomiboy bon je suis en vacs, ca va etre compliqué d'expliquer à partir du tel. Il faut lire la doc de raspberry sur la config video qui decrit comment indiquer une résolution particuliere pour un écran. La syntaxe est du genre [EDID=blavkavla] où boablabla est le nom de ton moniteur renvoyé. Cf https://www.raspberrypi.org/documentation/configuration/config-txt/conditional.md. juste eb dessous tu spécifies les hdmi_group et mode. Puis tu mets un[all] pour arrêter la dection spécifique. J'ai déjà décrit comment faire dans le fofo mais pour un autre type d'ecran



  • @substring okaaaaaay !
    /boot/config.txt c'est donc le "bios" du raspberry !
    Génial, je n'aurais jamais pensé à creuser dans cette direction là, mais je comprends bien l'idée de réécrire la config par défaut associée à mon moniteur.
    Je vais creuser, merci beaucoup (et bonnes vacances !).



  • @substring Merci !
    Ca s'affiche impec sur mon écran 10", et aussi sur un écran full HD à une toute autre résolution, sans rien modifier entre les 2. Tip-top.

    J'ai juste ajouté au début de /boot/config.txt

    # écran 10p 800x600 DMT9
    # l'EDID est obtenu par tvservice -n
    [EDID=MST-MStar_Demo]
    hdmi_group=2
    hdmi_mode=9
    [all]
    

    (après avoir fait mount -o remount, rw /boot pour les droits d'écriture)

    Ca m'aura pris moins de 10 minutes, c'est sûr que c'est mieux qu'un bouton qui lance un script qui modifie des fichiers textes sensibles à la volée...

    J'ai aussi changé un truc dans recalbox.config mais je ne sais pas si c'était nécessaire :
    global.videomode=default
    Je me suis dit que comme ça la résolution des jeux s'alignerait sur celle des interfaces ?
    Ca a l'air de marcher.
    Avant je modifiais les 2 fichiers de config.

    Bref, problème réglé ! Un grand merci !



Want to support us ?

Join us on :

168
Online

28846
Users

14651
Topics

110727
Posts

Looks like your connection to Recalbox Forum was lost, please wait while we try to reconnect.