Recalbox Forum

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

    [RB7] Demande de modification de externalscreen.sh

    Recalbox Général
    [rb7] demande modification
    1
    1
    346
    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.
    • leZone
      leZone last edited by

      Bonjour,

      Je créé ce topic pour expliquer comment contourner le script externalscreen.sh afin de forcer une fréquence vidéo
      Et je pose aussi d'autres questions car ce n'est pas parfait

      Après avoir écumé des pages et des tonnes de vidéos, je n'arrive pas à :

      • retirer le menu de sélection recalbox (+verbose) au démarrage qui est en 720x400_70Hz
      • retirer l'écran de loading de RB7 qui fait un saut de résolution au démarrage

      Notez que je débute en linux, il y a 3 jours, je ne savais pas encore ce qu'était nano

      Ce que je veux faire :
      Forcer Recalbox 7 à se mettre dans une résolution générale fixée à l'avance et sur une sortie vidéo spécifique
      Dans mon cas, je veux du 640x480 pixels en 60Hz ou proche (ma carte vidéo sort du 59.94Hz, je vais donc utiliser cela) en VGA
      pour mettre mon recalbox PC dans une borne Sega Naomi avec un écran CRT d'origine qui est limité électroniquement en 640 x 480 60Hz

      Ce qu'il est possible de faire dans RB7 :
      Changer les 2 variables dans recalbox.conf pour le port de sortie et la résolution
      MAIS ça ne permet pas de choisir une fréquence précise

      Ce qu'il faudrait faire :
      Modifier le externalscreen.sh pour ajouter toutes les variables disponibles avec xrandr
      (et dans mon cas précis, la fréquence --refresh)

      car par défaut, le script externalscreen.sh renvoie auto en refresh, et ça utilise la fréquence la plus haute (120Hz dans mon cas) et je ne veux pas, il me faut la plus proche de 60Hz, dans mon cas c'est du 59,94Hz

      -

      J'ai tout de même réussi à forcer le système (procédure ci après)
      mais il me reste 2 problèmes de sauts de fréquence/résolution

      Je note au passage que malheureusement, sur les forums, beaucoup de personnes renvoient vers la doc sans explications et sans copier/coller la solution
      sauf que les pages sur github sont effacées et les liens vers ouiaremakers sont effacés aussi, donc énormément de sujets d'aide sont devenus inutiles

      Ma Recalbox :

      recalbox-7.0.1R-x86.img
      EmulationStation - v 7.0.1-Reloaded, built Oct 16 2020 - 06:39:51

      Mon installation:

      Recalbox 7 32 bits installé sur HDD Sata 320Go (avec partition activée à la main)
      PC X86 (MAXDATA)
      Intel Core 2 duo E8400 3Ghz
      4 Gb de RAM
      Carte mère Intel DQ35JOE
      Video intégrée : GMCH 82Q35 (VGA) 256Mb de VRAM fixed , Pas de carte graphique additionnelle, sortie VGA
      Audio intégré HDA Intel (STAC9227 Analog), sortie par jack sur la carte mère, réseau intégré par cable RJ45 sur la carte mère
      Pas de boot USB possible

      Ca fonctionne hyper bien, 50 ou 60 fps partout avec les demos fournies dans l'install

      -

      Voici la procédure de modification que j'ai réalisée
      pour forcer recalbox 7 à rester en 640x480 en 59.94 Hz via ma sortie VGA

      1- commencer par analyser les sorties vidéo possibles :
      via Putty (logiciel windows)
      ouvrir une session SSH sur votre recalbox

      login as :
      root
      recalboxroot

      Xrandr me retourne ces infos : (elles vont varier selon votre chipset graphique!)

      xrandr
      Screen 0: minimum 8 x 8, current 1280 x 1024, maximum 32767 x 32767
      DVI1 disconnected primary (normal left inverted right x axis y axis)
      VGA1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 320mm x 240mm
      1280x1024 60.02*
      1024x768 85.00 75.03 60.00
      800x600 100.03 85.06 75.00 60.32
      640x480 120.11 85.01 75.00 59.94
      720x400 70.08
      VIRTUAL1 disconnected (normal left inverted right x axis y axis)

      "étoile" signifie le mode actuel, c'est celui affiché par ma RB7 après son installation

      2- tester si ça passe sur l'écran et le pc :
      en SSH, si je tape la commande suivante, ça fonctionne (à la volée) :

      xrandr --output VGA1 --mode 640x480 --refresh 59.94

      3- j'ai essayé les anciennes méthodes, mais rien à faire
      j'ai modifié le xinitrc avec nano, (le /etc/X11/xinit/xinitrc ET sa copie ~/.xinitrc)
      la modif est bien dans le fichier enregistré, mais ça ne fonctionne pas au boot de la RB7

      4- sur la RB7, il y a des options pour forcer un écran et sa résolution MAIS PAS sa fréquence
      via http:// accès à la recalbox et à recalbox.conf
      il y a des paramètres pour changer la résolution :

      system.externalscreen.prefered=VGA1
      system.externalscreen.forceresolution=640x480

      et ça fonctionne

      MAIS pas la fréquence qui passe en 120.11 Hz dans mon cas
      (on peut vérifier en ssh via un xrandr et en lisant l'emplacement de *)

      5- si j'ai bien compris le fonctionnement de RB7 : ces variables sont exploitées par ce script :

      externalscreen.sh par strodown
      https://gitlab.com/recalbox/recalbox/-/blob/6a86d7af1c078b65aff62990962b1e9462ab9fb9/board/recalbox/x86/fsoverlay/usr/bin/externalscreen.sh

      mais il impossible de spécifier d'autres paramètres de xrand, le script est trop pauvre en options
      donc on va le modifier directement en dur ça ira plus vite

      idéalement, il faudrait créer une nouvelle variable, mais je n'ai pas ce niveau de code

      6- on passe en SSH root et on tape dans le tas

      passage du disque dur en écriture :

      mount -o remount,rw /

      copie du script pour backup au cas où :

      cd //
      cd usr
      cd bin
      cp externalscreen.sh externalscreen.bak

      modification du script en dur :

      nano //usr/bin/externalscreen.sh

      on modifie ensuite la ligne 42 :
      avant :

      XRANDR_CMD=$(echo "$OUTPUT_MAXRES" | awk -v SEL_OUTPUT="$SEL_OUTPUT" -v FORCE_RES="$FORCE_RES" 'BEGIN {FS="="; printf "xrandr"} $1==SEL_OUTPUT {printf " --output " $1 " --mode " FORCE_RES;} $1!=SEL_OUTPUT {printf " --output " $1 " --off";} END {printf "\n";}')

      après: j'ajoute [ " --refresh 59.94"] pour mon cas particulier

      XRANDR_CMD=$(echo "$OUTPUT_MAXRES" | awk -v SEL_OUTPUT="$SEL_OUTPUT" -v FORCE_RES="$FORCE_RES" 'BEGIN {FS="="; printf "xrandr"} $1==SEL_OUTPUT {printf " --output " $1 " --mode " FORCE_RES " --refresh 59.94";} $1!=SEL_OUTPUT {printf " --output " $1 " --off";} END {printf "\n";}')

      on enregistre (CRTL + O sous nano)
      on quitte nano (CRTL + X)

      on éteint l'ordi depuis recalbox, et on le redémarre pour vérifier que ça fonctionne

      ça fonctionne
      MAIS
      il me reste 2 points noirs dans le boot de RB7

      Q1 - le menu de sélection de Grub (verbose ou pas) est par défaut dans la résolution technique la plus petit, pour moi c'est 720x400 70.08Hz
      et c'est incompatible avec mon écran

      Question 1 : comment supprimer totalement le menu de sélection de grub verbose ? (il ne me sert à rien)
      sachant que nano //boot/boot/grub/grub.cfg ne fonctionne pas, car le fichier est protégé par le système contre la modification
      et je n'ai pas retrouvé sur cette distribution, les fichiers associés au multiboot qui permettent de modifier le grub via des variables

      Q2- ensuite, RB7 passe en 640x480 59.94 Hz
      MAIS il repasse en 1280x1024 60.02Hz juste avant le splash screen de loading (image logo RB sur fond noir)
      puis il reviens en 640x480 59.94 Hz (image logo RB sur fond blanc et barre de loading) et y reste

      Question 2 : pourquoi ?
      je n'ai pas encore trouvé pourquoi, mais ce changement de mode envoie un signal non conforme à la platine de mon écran au risque de le détériorer

      Si quelqu'un sait comment virer le splash screen de loading, pour tout laisser en noir, ça m'arrangerais, en vous remerciant pour toute aide apportée ! 🙂

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

      Want to support us ?

      79
      Online

      99.6k
      Users

      28.1k
      Topics

      187.1k
      Posts

      Copyright © 2021 recalbox.com