Skip to content

Installation de RetroPie sur PC

Ce tutoriel décrit l'installation et la configuration de la distribution Linux RetroPie sur un PC dédié à l'émulation de jeux vidéo. Ce PC peut-être intégré sous forme de borne d'arcade ou de console de jeu.

L'objectif est donc d'obtenir un système dédié, c'est à dire que dès l'allumage une interface proposera l'accès aux jeux.

Nous considérons qu'un système Debian basique a été installé sur le PC. Recommandations pour la suite de ce tutoriel:

  • pas d'interface graphique ni de bureau installé,
  • un accès SSH,
  • on considère ci-après que le nom de l'utilisateur par défaut créé lors de l'installation est pi, sans permission particulière,
  • une maîtrise minimale du shell Linux est fortement conseillée,
  • une installation 64-bits est recommandée.

Une borne d'arcade basée sur un PC, en cours de configuration

Configuration globale du système

Depuis un shell root, directement sur la machine, on autorise pi à avoir les droits root:

    apt install sudo
    usermod -aG sudo pi
    apt install sudo
    usermod -aG sudo pi

Pour que l'utilisateur pi n'aie pas besoin de mot de passe pour avoir les droits root, éditer la configuration de sudo:

    sudo visudo
    sudo visudo

et ajouter:

    # No password for user pi
    pi ALL=(ALL) NOPASSWD:ALL
    # No password for user pi
    pi ALL=(ALL) NOPASSWD:ALL

(ceci est déconseillé sur un PC classique).

Notez l'adresse IP de la machine sur le réseau local:

    ip a
    ip a

la suite du tutoriel peut-être faite depuis un shell SSH à partir d'une autre machine:

    ssh pi@<adresse_ip>
    ssh pi@<adresse_ip>

Installation des paquets requis pour la suite, pour l'affichage et l'audio:

    sudo apt install xorg openbox pulseaudio alsa-utils curl
    sudo apt install xorg openbox pulseaudio alsa-utils curl

Ajout de pi au groupe input:

    sudo usermod -aG input pi
    sudo usermod -aG input pi

Installation des pilotes graphiques

Pour améliorer le rendu 3D, il peut-être intéressant d'installer les pilotes officiels de votre carte graphique.

La procédure ci-dessous décrit l'installation pour une Geforce GTS 450. Si une autre carte graphique qu'une est utilisée, la procédure sera similaire, référez-vous à la documentation sur le wiki de Debian: https://wiki.debian.org/fr/GraphicsCard

Editer /etc/apt/sources.list et ajouter contrib et non-free, exemple:

    deb http://httpredir.debian.org/debian/ stretch main contrib non-free
    deb http://httpredir.debian.org/debian/ stretch main contrib non-free

Ensuite installer les composants nécessaires:

    sudo apt update
    sudo apt install linux-headers-$(uname -r|sed 's/[^-]*-[^-]*-//') nvidia-driver
    sudo apt update
    sudo apt install linux-headers-$(uname -r|sed 's/[^-]*-[^-]*-//') nvidia-driver

Démarrage immédiat sans timeout Grub

Editer /etc/default/grub et changer GRUB_TIMEOUT à 0. Puis exécuter:

    sudo update-grub2
    sudo update-grub2

Installation de Retropie

Tout d'abord:

    sudo groupadd admin
    sudo usermod -aG admin pi
    sudo groupadd admin
    sudo usermod -aG admin pi

Ensuite, suivre le tutoriel officiel, pour faire une "Basic install": https://retropie.org.uk/docs/Debian/

Démarrage automatique d'EmulationStation

La procédure ci-dessous permet au PC de démarrer directement sur EmulationStation.

On va automatiquement connecter l'utilisateur pi, puis automatiquement lancer Xorg ensuite, démarrer le bureau OpenBox puis EmulationStation.

Autologin d'un utilisateur

Exécuter:

    sudo systemctl edit getty@tty1
    sudo systemctl edit getty@tty1

Et entrer le contenu suivant:

    [Service]
    ExecStart=
    ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM
    [Service]
    ExecStart=
    ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM

Démarrage automatique de Xorg au login

Ajouter dans le fichier ~/.profile:

    [ "$(tty)" = "/dev/tty1" ] && startx
    [ "$(tty)" = "/dev/tty1" ] && startx

Retirer le curseur de souris

Editer /etc/X11/xinit/xserverrc et ajouter l'option -nocursor comme suit:

    exec /usr/bin/X -nolisten tcp "$@" -nocursor
    exec /usr/bin/X -nolisten tcp "$@" -nocursor

Démarrage automatique d'openbox

Créer le fichier ~/.xinitrc, le rendre exécutable, et y insérer:

    xrandr -s 1440x900
    amixer set Master unmute
    xset -dpms s off
    openbox-session
    xrandr -s 1440x900
    amixer set Master unmute
    xset -dpms s off
    openbox-session

Changer la résolution d'écran dans la ligne xrandr ci-dessus pour la valeur optimale de l'écran utilisé.

La ligne amixer permet de s'assurer que la sortie audio n'est pas en mode muet.

La ligne xset désactive l'écran de veille et le DPMS (Display Power Management Signaling) pour s'assurer qu'aucun écran noir ne survienne pendant qu'un jeu est lancé.

Démarrage automatique d'EmulationStation

Exécuter:

    sudo RetroPie-Setup/retropie_setup.sh
    sudo RetroPie-Setup/retropie_setup.sh

et aller dans Configuration / Tools > autostart > activer Autostart Emulation Station after login

Quitter l'outil, et exécuter:

    sudo chown pi .config/autostart/retropie.desktop
    sudo chown pi .config/autostart/retropie.desktop

Editer ~/.config/autostart/retropie.desktop et changer la valeur de Exec par:

    Exec=~/run_emulationstation.sh
    Exec=~/run_emulationstation.sh

Créer un fichier ~/run_emulationstation.sh, le rendre exécutable:

    touch ~/run_emulationstation.sh
    chmod +x ~/run_emulationstation.sh
    touch ~/run_emulationstation.sh
    chmod +x ~/run_emulationstation.sh

et y insérer:

    #!/bin/bash
    xterm -fg white -bg black -e emulationstation --no-splash
    xterm -fg white -bg black
    #!/bin/bash
    xterm -fg white -bg black -e emulationstation --no-splash
    xterm -fg white -bg black

la dernière ligne lance xterm au cas où l'on quitte emulationstation.

Personnalisation d'OpenBox

Créer la configuration:

    mkdir ~/.config/openbox
    mkdir ~/.config/openbox

la configuration est à faire dans ~/.config/openbox/rc.xml, qui doit contenir au minimum:

    <?xml version="1.0" encoding="UTF-8"?>
    <openbox_config xmlns="http://openbox.org/3.4/rc" xmlns:xi="http://www.w3.org/2001/XInclude">
    </openbox_config>
    <?xml version="1.0" encoding="UTF-8"?>
    <openbox_config xmlns="http://openbox.org/3.4/rc" xmlns:xi="http://www.w3.org/2001/XInclude">
    </openbox_config>

les nouvelles configurations sont à ajouter dans le bloc openbox_config.

Retirer la décoration des fenêtres

Dans le fichier ~/.config/openbox/rc.xml, dans la section openbox_config:

    <applications>
       <application class="*"> <decor>no</decor> </application>
    </applications>
    <applications>
       <application class="*"> <decor>no</decor> </application>
    </applications>

Terminal en plein écran

Ajouter dans la section applications:

    <!-- Xterm fullscreen -->
    <application name="xterm" class="XTerm" type="normal">
       <decor>no</decor>
       <fullscreen>yes</fullscreen>
       <layer>below</layer>
    </application>
    <!-- Xterm fullscreen -->
    <application name="xterm" class="XTerm" type="normal">
       <decor>no</decor>
       <fullscreen>yes</fullscreen>
       <layer>below</layer>
    </application>

Musique de fond

L'objectif est d'avoir une musique de fond quand on est dans le menu d'EmulationStation, la musique doit s'arrêter lorsque l'on lance un jeu.

Télécharger le script music_player.py à cette adresse: https://mathieu-abati.com/resources/guides/versusbox/music_player.py et le placer dans ~/music_player.py. Le rendre exécutable:

    chmod +x ~/music_player.py
    chmod +x ~/music_player.py

Editer le script et personnaliser la configuration dans l'en-tête du script.

Installer les dépendances du script:

    sudo apt install python-pygame
    sudo apt install python-pygame

Pour le lancement automatique de la musique, créer un fichier ~/.config/autostart/music_player.desktop et y insérer:

    [Desktop Entry]
    Type=Application
    Exec=~/music_player.py
    X-GNOME-Autostart-enabled=true
    Name=music_player
    [Desktop Entry]
    Type=Application
    Exec=~/music_player.py
    X-GNOME-Autostart-enabled=true
    Name=music_player

Vous n'avez plus qu'à placer des musiques dans le répertoire configuré en en-tête du script.

Paramétrage du système de jeu

NeoGeo en mode AES

Le mode AES est le mode console de salon de la NeoGeo.

Editer /opt/retropie/configs/all/retroarch-core-options.cfg et modifier fba-neogeo-mode en AES.

Choix de l'ordre des manettes

Installer Retropie Joystick Selection en suivant les instrtuctions ici: https://github.com/meleu/RetroPie-joystick-selection/#installation

Redémarrer, Joystick Selection est accessible par le menu RetroPie dans EmulationStation.

Résolution des problèmes

Illegal instruction au lancement d'emulationstation

GDB a révélé que le problème se trouvait dans libSDL2. Une réinstallation a corrigé le problème:

    sudo apt remove --purge libsdl2-2.0-0 libsdl2-dev
    sudo apt install libsdl2-2.0-0 libsdl2-dev
    sudo apt remove --purge libsdl2-2.0-0 libsdl2-dev
    sudo apt install libsdl2-2.0-0 libsdl2-dev

La configuration des manettes n'est pas mémorisée après redémarrage / n'est pas effective dans les jeux

Quitter EmulationStation puis Exécuter:

    sudo RetroPie-Setup/retropie_setup.sh
    sudo RetroPie-Setup/retropie_setup.sh

Aller à Manage Packages >> Manage Core Packages >> EmulationStation >> Configuration / Options >> Clear / Reset EmulationStation Input Configuration et réinitialiser la configuration.

Quitter l'outil de configuration et redémarrer. Reconfigurer les manettes, ça devrait fonctionner correctement.