Benutzer-Werkzeuge

Webseiten-Werkzeuge


manton:raspberrypi:emulationstation

EmulationStation - Retropieprojekt

Vorhaben: Einbau eines RaspberrryPi's in ein gebrauchtes SNES-Gehäuse wo die Anschlüsse des RaspberryPi's bis auf den GPIO1) weiter nach Bedarf verwendet werden kann.

Das Ganze funktioniert natürlich auch ohne Gehäuse, das Problem ist hier nur, dass die Verbindung mit den Original-Controllern nicht fixiert ist und sich daher auch leicht löst! Außerdem kommt so auch kein Retro-Feeling auf!

Hier schon mal hilfreiche Links:

Zutaten/Hardware-Requirements

  • Raspberry Pi + Zubehör (SD-Karte, Netzteil)
  • HDMI-Verlängerungskabel (möglichst kurz halten)
  • Einzelne Chinch-Verlängerung (Chinch-Kabel + Kupplung geht auch, auch hier möglichst kurz)
  • sehr kurzes Netzwerkkabel (100Mb reichen!) (evtl. Selbst herstellen)
  • Netzwerkkabel-Kupplung
  • dünne isolierte Drähte
  • Isolierband
  • Heisklebe-Pistole (zum Fixieren)
  • Lötkolben + Zubehör
  • diverses Werkzeug wie Zange und Schraubendreher → Achtung! Nintendo verwendet spezielle Schrauben wo man Spezialwerkzeug benötigt!

Ganz Wichtig:

  • Geduld – „Gut Ding will Weile haben“
  • viel Phantasie / Improvisationsgeschick!
  • Geduld – Rom wurde auch nicht an einem Tag gebaut!
  • zehn Hände gleichzeitig ;-) (zur not funktionierts auch mit guten Freunden)
  • Geduld!

Optional:

  • für WLAN-zugriff ein Wlan-USB-Stick 2)

Nach einer Dauer von 1-2 Monaten war es schliesslich soweit

Backmischung / Software-Umgebung

Als Betriebssystem kommt Rasbian, eine auf den Pi abgestimmte Debian-Distribution3).

  • Mittels dd wird das Rasbian-Image auf die SD-Karte geschrieben (als root ausführen)
    dd bs=4M if=/PFAD/zum/Rasbian-Image.img of=/dev/sdX
  • Die Device-Bezeichnung sdX (e.g. sdb, sdc, mmcblk0, … ) kann mit lsblk -f z.B. bestimmt werden.
  • sollte aus irgendeinem Grund bs=4M nicht funktionieren, dann mit bs=1M probieren
  • nach dem ersten Start wird sofort als Root raspi-config aufgerufen und dort alle nötigen Einstellungen vornehmen (bei Fragen, diverse Blogs im Internet bieten ausführlichere Erläuterungen! 8-) )
  • :!: Übertaktungseinstellungen:
    • Übertaktung auf Medium-Einstellung
    • Memory-Split erst mal auf das niedrigste während der Installation des RetroPie-Setups und später auf 256
  • Die SWAP-Datei hab ich nicht verändert (will ja auch kein X starten)

Netzwerk-Konfiguration

  • WLAN mit statischer IP ohne NetworkManager (Raspbian)
    • 2 Dateien müssen bearbeitet werden:
      • /etc/network/interfaces
        auto lo
         
        iface lo inet loopback
        iface eth0 inet dhcp
         
        allow-hotplug wlan0
        iface wlan0 inet manual
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
        iface network1 inet static
            address 192.168.45.2  #eigene ip angeben
            netmask 255.255.255.0
            gateway 192.168.45.1
        iface network2 inet static
            address 192.168.2.10
            netmask 255.255.255.0
            gateway 192.168.2.1
      • /etc/wpa_supplicant/wpa_supplicant.conf
        ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
        update_config=1
        # network 1
        network={
        	ssid="Netzwerk1-Name"
        	scan_ssid=1
        	key_mgmt=WPA-PSK
        	psk="geheimes_passwort"
        	id_str="network1" # diese Zeile ist ganz wichtig, hier werden die statischen Angaben der Interfaces eingerichtet
        }
         
        # network 2
        network={
        	ssid="Netzwerk2-Name"
        	scan_ssid=1
        	key_mgmt=WPA-PSK
        	psk="geheimes_passwort"
        	id_str="network2"   # diese Zeile ist ganz wichtig, hier werden die statischen Angaben der Interfaces eingerichtet
        }

RetroPie-Installation

  • Auf der RetroPie-Hompage wird die Installation gut erklärt, es ist auch net wirklich schwierig: Setup-dateien runterladen, ausführen und entsprechenden Punkte ausführen, fertig
  • ich hab mich immer für die Binary-Installation entschieden, 16h4) Compilieren waren mir zuviel aufwand – Zocken!!!
    • nach der Installation geht man in das Setup und installiert das gamecon_gpio_rpi-Modul
      • dieses wird mit dem aktuellen Kernel und den entsprechenden Headerdateien compiliert (die aktuellsten des System werden vorher installiert)
      • :!: Bug im Retropie-Setup: Wenn bestehende Headerdateien gefunden werden werden keine Neuen installiert :!:
        • überprüfen kann man das mit:
          dpkg -l | grep linux-header
      • ob die Installation des Moduls erfolgreich war sieht man erst nach einem Reboot, wenn man folgendes eingibt:
        modprobe gamecon_gpio_rpi map=0,0,1,1,0,0
      • läuft das ohne Fehlermeldung wurde der Treiber/das Modul erfolgreich installiert 8-)
      • zum automatischen laden des Treibers bei Systemstart trägt man den Befehl in die /etc/modules ein!
        echo "gamecon_gpio_rpi map=0,0,1,1,0,0" >> /etc/modules
    • Für die Installation des XBox360-Treibers oder PS3-Pad-Treibers wählt man den entsprechenden Punkt im Setup aus.
  • Mit dem Befehl jstest /dev/jsX kann der entsprechende Controller getestet werden
  • :!: Ab Emulationstation 2.1 kann die Installation des gamecon_gpi_rpi treibers über das Setup fehlschlagen! Hier mal ein paar Befehle, womit es gelingen kann:
    wget http://www.niksula.hut.fi/~mhiienka/Rpi/linux-headers-rpi/linux-headers-`uname -r`_`uname -r`-2_armhf.deb
    wget http://www.niksula.hut.fi/~mhiienka/Rpi/gamecon-gpio-rpi-dkms_0.9_all.deb
    wget http://www.niksula.hut.fi/~mhiienka/Rpi/db9-gpio-rpi-dkms_0.7_all.deb
    dpkg -i linux-headers-`uname -r`_`uname -r`-2_armhf.deb
    dpkg -i gamecon-gpio-rpi-dkms_0.9_all.deb
    dpkg -i db9-gpio-rpi-dkms_0.7_all.deb

Konfigurationsdatei(en)

  • mit ~/RetroPie/emulators/RetroArch/installdir/bin/retroarch-joyconfig können die Buttons des Controllers belegt werden, es wird eine Ausgabe erzeugt, die in die retroarch.cfg der jeweiligen Emu-Ordner im Ordner config kommt
    • evtl. muss noch das Device hinzugefügt werden
  • allgemeine Hinweise:
    • input_player1_joypad_index hier muss die Zahl stehen, unter der der Controle als Device gelistet ist (js0, js1, …) (:!: dieser Wert kann sich ändern, wenn per USB zusätzliche Controller verbunden werden)
    • alle nicht benötigten Buttons müssen deaktiviert bzw.gelöscht werden
  • Konfigurationsdatei(en) für 2 SNES-Controller
SNES
NES
GB & GBC
  • Konfigurationsdatei(en) für 1 XBox360-Controller
NES
SNES
GB & GBC
PSX

Verbindung des RaspberryPi mit den SNES Orignal-Controllern

Für die Verbindung der Rpi-GPIO-Schnittstelle mit den SNES-Controllern benötigen wir erstmal das jeweilige Pinout:

GPIO Pinout: 5)

RaspberryPi-GPIO-Layout (Rev.2)

Pinout des SNES-Controllers: 6)

 ----------------------------- ---------------------
|                             |                      \
| (1)     (2)     (3)     (4) |   (5)     (6)     (7) |
|                             |                      /
 ----------------------------- ---------------------

Pin   Description   Wire Color
===   ===========   ==========
 1    +5v (power)   White
 2    Clock         Yellow
 3    Latch         Orange
 4    Data1         Red
 5    Data2         ?
 6    IOBit         ?
 7    Ground        Brown

Mithilfe von Draht und ein paar Aderendhülsen kann man die nun folgendermaßen verbinden:

SNES-Pin   GPIO-Pin
========   ========
   1         3V3
   2        GPIO10
   3        GPIO11
   4        GPIO04,GPIO07,GPIO02,GPIO03 (bei nem rev2-Board)
   7        Ground

:?: bei 2 Controllern müssen Power, Clock, Latch und Ground (aus Controllersicht) doppelt belegt werden – also Drähte verbinden…

  • Weitere Informationen gibts in der README des gamecon_gpio_rpi-Moduls
    zless /usr/share/doc/gamecon_gpio_rpi/README.gz
1)
GPIO wird sowieso für die SNES-Controller belegt
2)
Vorher schauen, ob er unterstützt wird von Linux
3)
die folgenden Angaben beziehen sich auf Version 7 (Wheezy)
4)
hier unbedingt die MemorySplit-Einstellung auf 16 setzen, da er sonst das Compilieren abbricht :-? – Out of Memory
manton/raspberrypi/emulationstation.txt · Zuletzt geändert: 2015/11/18 11:56 von manton