Einleitung
Schon seit das Raspberry Pi Anfang 2012 zunächst nur für Firmenkunden auf den Markt kam, hat mich die kleine "Wunderkarte" fasziniert. Leider gab es gerade zur Anfangszeit erhebliche Wartezeiten bzw. Lieferengpässe und so geriet das Thema bei mir vorerst in Vergessenheit.
Erst, als ich für ein Projekt bzw. für die Abschlussprüfung einer Weiterbildung zum staatlich geprüften Techniker einen Einplatinencomputer benötigte, begann ich mich wieder mit dem Thema auseinander zu setzen. Damals entschied ich mich für den BeagleBone Black. Die marginalen Unterschiede zum Raspberry Pi waren für meine Zwecke besser geeignet und - ich gebe es zu - ich wollte auch ein bisschen den Underdog bzw. Herausforderer des "Königs" unterstützen bzw. ausprobieren. Ein folgenschwerer Fehler, wie sich herausstellen sollte. Die BeagleBones waren damals heiß begehrt und schnell vergriffen. Als mein Exemplar bei intensiven (und selbstverständlich in einer vorbildlich aufgebauten ESD-Umgebung durchgeführten) Tests den Löffel abgab, war an Nachschub in unter 8 - 10 Wochen nicht zu denken...
Als dann schließlich das Raspberry Pi 2 angekündigt wurde, staunte ich nicht schlecht: 900 MHz Quadcore CPU, 1GB SDRAM, durchaus stattlich mit Schnittstellen ausgestattet und trotz alledem wie der Vorgänger für ~40€ zu haben. Zwar gab es auch schon davor einige Einplatinencomputer, die leistungstechnisch einiges unter der Haube hatten, doch wenn man (wie ich) nicht super fit im Umgang mit Unixoiden Betriebssystemen ist, sondern sich eher gerade so durch einen Filetree hangeln kann, setzt man doch lieber auf den Marktführer. In diesem Fall heißt das: Mehr aufs RP2 zugeschnittene Distributionen, mehr Tutorials, mehr vorgefertigte Klickibunti-Lösungen. ;)
Eine Pollin Bestellung und 1-3 lange Tage Lieferzeit später lag das Teil dann vor mir. Ja. Schön. Und was jetzt?
Nach einigen Spielereien reifte die Idee in mir: Ich will auf dem RP2 zocken! Schließlich ließen sich auf dem Vorgänger schon einige 8- und 16 Bit Konsolen sowie diverse ältere Heimcomputer emulieren, da sollte doch mit der stärkeren Hardware des Nachfolgers noch was gehen, oder? Und tatsächlich, das RP2 packt Spielekonsolen bis einschließlich der 5. Generation (Nintendo 64 und PlayStation).
Jedoch empfand ich das zocken auf einer schnöden, kleinen Plastikbox als nicht besonders ansprechend. Hatte ich irgendwo nicht noch einen zweiten Super Nintendo rumliegen? Bingo! Die Würfel waren gefallen, ich würde mir meinen eigenen SnesBerry Pi 2 bauen. Wie genau ich das gemacht habe, lässt sich nun auf dieser Seite nachlesen. Ich versuche dabei, möglichst viele Details einfließen zu lassen, ohne zu sehr dem Technobabble zu verfallen. Sollten dennoch am Ende der Lektüre noch Fragen offen sein, darf der geneigte Leser (oder die Leserin?) mich gerne kontaktieren. Darüber hinaus möge man mir die unterdurchschnittliche Bildqualität verzeihen. Ich hatte beim basteln nur mein Smartphone mit matschiger Optik griffbereit - man sollte aber erkennen können, worum es geht.
Materialien
Nachfolgend eine kleine Materialliste für das Projekt. Die meisten Materialien habe ich auf eBay beschafft. Google Shopping ist auch super zum Preise vergleichen. Conrad, Reichelt und Pollin sind da eher etwas teurer.
Das Raspberry Pi 2, Herzstück des ganzen Projekts. Auf einer microSD Karte wird eine Linux-Distribution mitsamt Emulatoren installiert. Damit diese flüssig laufen, muss das RP2 übertaktet werden. Da dadurch die Chips recht heiß werden können, empfehle ich dringen die Verwendung von
passiven Kühlern für das RP2. Gibt's für kleines Geld und halten die Chips schön kühl.
Natürlich darf unser Super Nintendo nicht fehlen. Schlicht, schmucklos, grau und mittlerweile meist schon arg angegilbt treibt diese 16Bit Konsole so manchem Kind der 90er nostalgische Tränen in die Augen.
Da nur das Gehäuse benötigt wird, kann man auch einen defekten für kleineres Geld kaufen. Ich hatte aus mir unbekannten Gründen noch einen zweiten herumliegen.
Das RP2 bzw. die verwendeten Distributionen "fressen" eigentlich fast alle USB-Gamepads. Für richtiges Retro-Feeling bietet sich natürlich ein USB-SNES-Gamepad an. Für 3D Spiele sollte natürlich ein Analog Stick vorhanden sein. Das XBox 360 Gamepad funktioniert Plug 'N Play, für das PS3 Gamepad müsste noch ein Bluetooth Dongle verbaut und installiert werden.
Die Gamepads müssen natürlich auch irgendwo angeschlossen werden. Hierfür eignen sich USB-Einbaubuchsen, welche im Gehäuse verschraubt und dann auf die USB-Ports des RP2 gesteckt werden.
Eine HDMI-Einbaubuchse wird ins Gehäuse verschraubt. Hinterher kann man dann das vom Fernseher kommende Kabel dort anschließen.
Intern leitet ein möglichst kurzes HDMI-Kabel die Signale vom RP2 an die oben erwähnte Buchse weiter. 15cm sind gut, 10cm sind besser (wenn man die auftreiben kann).
Netzwerk wird benötigt, um neue Roms oder Updates zu installieren. Außerdem kann man das die Distribution der Wahlbequem per SSH von einem Rechner im selben Netzwerk konfigurieren, ohne ein Keyboard ans RP2 anschließen zu müssen. Zu diesem Zweck habe ich eine RJ45-Einbaubuchse verbaut...
...und diese mit einem möglichst kurzen Netzwerkkabel mit dem RP2 verbunden.
Bei der Stromversorgung habe ich mich für den sehr robusten USB-B Stecker ("Druckerstromkabel") entschieden. Da es keine USB-B auf micsroUSB Kabel gibt, habe ich eine USB-B-Einbaubuchse verwendet, welche erst über USB-A...
...auf ein microUSB-Kabel geht. Dieses lässt sich dann ganz normal ans RP2 anschließen.
Bei den Platten, an denen die ganzen Buchsen verschraubt werden sollten, habe ich mich für 1,5er GFK entschieden.
Aufbau
Die Lieferzeit der ganzen bestellten Materialien nutzte ich zum präparieren des SNES. Das bedeutet öffnen des Gehäuses (geht nur mit einem speziellen Schraubendreher, das Nintendo einen proprietären Schraubenkopf verwendet), entfernen der Innereien sowie einiger Plastikführungen um Platz für das RP2 + Kabel zu schaffen. Auf dem Foto sehr gut zu erkennen ist die typische Vergilbung der unteren Hälfte von SNES-Gehäusen. Ich habe die ganze untere Schale über Nacht in Plastikreiniger eingelegt, aber leider ist das ganze Material vergilbt, nicht nur oberflächlich (Bruchstellen waren beispielsweise auch innen gelblich). Die Elektronik habe ich natürlich aufgehoben. Evtl. baue ich die mal in irgendwas anderes ein (ein Nintoaster würde mich - wenn auch schon oft da gewesen - beispielsweise reizen).
Der nächste Schritt bestand darin, Löcher in den Boden des SNES zu bohren und 4 M3x20mm Senkschrauben von außen durchzustecken und diese innen mit Muttern zu kontern. Wie das bei mir immer so ist, habe ich mir aus Ungeduld keine Bohrschablone gezeichnet, sondern lediglich die Lochabstände ausgemessen und auf das Gehäuse übertragen. Das hat selbstverständlich nicht hingehauen: 2 diagonal gegenüberliegende Löcher waren etwas zu weit außen, so dass ich das RP2 an nur 2 Schrauben mit selbstsichernden Muttern befestigen musste.
Glücklicherweise sitzt die Platine auch mit nur 2 Schrauben so dermaßen bombenfest, dass ich das so stehen lassen konnte - ansonsten wäre an dieser Stelle schon die erste Frustpause erfolgt.Anschließend habe ich die beiden Öffnungen vermessen, in denen vorher Plastikblenden mit den Anschlüssen für Gamepads, Stromversorgung sowie Audio- und Videosignal saßen. Da ich natürlich komplett andere Stecker verwenden wollten, mussten diese Blenden komplett neu gefertigt werden.
Also habe ich, bewaffnet mit den Maßen Expression Design angeworfen und die beiden Blenden meinen Bedürfnissen entsprechend neu gezeichnet. Da noch nicht alle bestellten Kabel eingetroffen waren, habe ich mich bei den Maßen der USB-Einbaubuchsen auf das entsprechende Datenblatt verlassen. Ein verhängnisvoller Fehler, doch dazu später mehr. Zum Test habe ich von der hinteren Blende einen Prototyp aus einer 3mm Hartschaumplatte ausgeschnitten. Hier wurde ich positiv überrascht: Nicht nur passten beide
Buchsen perfekt in die Blende - diese passte auch noch saugend in das SNES-Gehäuse. Scheinbar muss man ab und zu auch mal was richtig machen... Also die Zeichnung an meinen ehemaligen Ausbilder und CNC Fräsen-Besitzer geschickt (Danke Löti!). Einen Tag später konnten wir die Dinger auch schon auf die Fräse schmeißen.
Nebenstehend ein Foto, auf dem die Blenden gerade das Licht der Welt erblicken. Zum eben erwähnten Fehler: Wie schon erwähnt musste ich mich auf die vom Verkäufer der USB-Einbaubuchsen zur Verfügung gestellten Datenblätter verlassen, da ich die Zeichnung angefertigt habe, bevor die Buchsen mit der Post angekommen sind. Doch leider hat besagter Verkäufer scheinbar das Datenblatt einer beinah baugleichen, aber doch anderen Buchse verwendet ("Die sind doch eh alle gleich..."), denn der Lochabstand für die Befestigungsschrauben wich leicht vom Tatsächlichen Produkt ab. Da meine Zeichnung aber auf dem Datenblatt basierte, passten die Buchsen natürlich nicht an die fertige Blende. Mir blieb nichts andere übrig, als die Zeichnung noch
mal zu überarbeiten und die Blenden neu fräsen zu lassen. Hier kommt mal wieder das Sprichwort "Verlass Dich auf andere und Du bist verlassen." zum tragen. Während die neuen Frontblenden gefräst wurden, konnte ich schon mal die Rückwärtige Blende einbauen - hier stimmten die Maße aus dem Datenblatt wenigstens (zudem hatte ich ja mit dem Prototyp schon einen Testlauf gemacht). Ich bin der Meinung, das Ergebnis kann sich wirklich sehen lassen. Zum befestigen der Blende verwendete ich Heißkleber.
Erst war ich skeptisch, ob sich die Blende damit adäquat fixieren lassen würde, doch nachdem der Kleber getrocknet war, saß das Ding bombenfest im Gehäuse. Wenn man den HDMI- oder USB Stecker einsteckt, fühlt sich das geradezu "wertig" an. Auch in der Oberschale verwendete ich einige Tropfen Heißkleber, um Reset- und Auswurftaste am herunterhängen zu hindern. Zwischendurch machte ich immer mal wieder kleine Funktionstests. Macht man alle 2 oder 3
Arbeitsschritte einen Funktionstest und das System geht plötzlich nicht mehr, hat man höchstens 2 oder 3 potenzielle Fehlerquellen. Verzichtet man aber auf die regelmäßigen Tests und stellt dann ganz am Ende fest, dass das System nicht funktioniert, so kann das im schlimmsten Fall hunderte Ursachen haben. Bei mir würde so ein Projekt dann erfahrungsgemäß fertiggestellt, aber funktionsuntüchtigt in einer Ecke landen und eine dicke Staubschicht anlegen, bis es Jahre später beim nächsten Umzug oder der nächsten Entrümpelungsaktion beschämt und voll Abscheu und Selbsthass entsorgt wird.
Als gerade ich die Stromversorgung testete, fielen mir die ganzen Adapter von microUSB auf USB/A und von da auf USB/B negativ auf. Die vielen unnötigen Stecker waren eine Fehlerquelle (USB-Stecker löst sich im Gehäuse aus der Buchse) und boten viel Potenzial für unschöne Klappergeräusche im Gehäuse. Also entschloss ich mich, die beiden unnötigen Stecker zu entfernen und die Kabel direkt zu verlöten. Elektriker den nächsten Satz bitte überspringen: Bei den 4 Adern klappte das noch ganz gut, beim Schirm hingegen wollte mein BBB-Lötzinn (billo-bleifrei-Baumarkt) ums verrecken nicht haften, also habe ich hier zu einer kleinen Lüsterklemme gegriffen. Nun stand der Einbau der Netzwerkbuchse an. Ich habe ja schon erwähnt,
dass das Netzwerkkabel im normalen Betrieb nicht dauerhaft
angeschlossen sein muss. So kam ich auf den Gedanken "eigentlich
könntest Du doch den EXT-Port auf der Unterseite vom SNES verwenden".
Irgendwie gefiel mir die Idee erst eine kleine Plastikklappe zu öffnen
um an die Netzwerkbuchse zu gelangen, wenn man eine Verbindung benötigt.
Als ich dann noch feststellte, dass die RJ45-Einbaubuchse wirklich
saugend in den EXT-Slot passte, war der Vogel im Nest!
Da ich noch auf die neuen Frontblenden mit den korrigierten Bohrungen warten musste, vertrieb ich mir die Zeit mit einigen ausgiebigen Funktionstests. Softwareseitig lief alles tadellos, auch alle 4 USB-Ports taten ihren Dienst. Jedoch musste ich bei einigen N64 Spielen ein leichtes Ruckeln feststellen. Da ich die passiven Lüfter schon angebracht hatte entschied ich mich dazu, das RP2 jetzt zu übertakten - auf das auch N64/PS Spiele in Zukunft butterweich laufen würden. Also fix das RP2 ins Netz gehängt, per SSH auf die Linux Console zugegriffen, die ohnehin schon eingeschränkten Kommandozeilenkenntnisse aus den letzten Windungen des Hirns hervorgekramt, im Filetree in den passenden Ordner navigiert und die config.txt mit Nano geöffnet. Die gemachten Einstellungen zum übertakten lauten wie folgt:arm_freq=1000
sdram_freq=500
core_freq=500
over_voltage=2
gpu_mem=512
Und siehe da, alle Spiele liefen flüssig. Außerdem griff ich von Windows aus noch auf den "System" Ordner zu (ist einer der Ordner des Shares, den die Disiribution standardmäßig bereitstellt) und stellte den Emulator für SNS noch auf den allseits bekannten und beliebten Snes9x (steht per default auf pocketsnes, welcher aber eher für das RP1 ausgelegt ist).
Inzwischen waren auch die neuen Frontblenden fertig und ich konnte mit dem Einbau der USB-Buchsen beginnen. Zwar musste ich an den Seiten ein wenig der Gummierung entfernen, da die Buchsen doch recht eng aufeinander saßen, doch alles in allem ging das recht gut (von mitdrehenden Muttern innerhalb der Buchsen mal abgesehen).
Zum Befestigen der Frontblende verwendete ich - wer hätte das gedacht - Heißkleber. Ein Kumpel meinte kommentierte den Aufbau zwar mit "bisschen wenig Heißkleber", aber ich war ganz zufrieden. Heißkleber ist quasi das Lochblech des kleinen bzw. ungeschickten Mannes. Zusätzlich fixierte ich die ganzen Kabel noch mit Kabelbindern, damit später nichts mehr im Gehäuse rumklappert, wenn man den SnesBerry hochhebt. Nach einem letzten Test der Software und aller Anschlüsse war es schließlich an der Zeit, das Gehäuse zu schließen. Nach der ganzen Arbeit gab es für mich erst mal nur noch eins zu tun (mal abgesehen von aufräumen): Eine entspannende Runde F-Zero X auf meinem neuen SnesBerry Pi 2.
Software
Mit meinen eingeschränkten Linux-Kenntnissen war klar, dass als Software nur eine vorgefertigte Lösung in Frage käme. Die Vorteile sind zahlreich: Leichte Installation, die Emulatoren sind fertig eingerichtet, Konfiguration ist recht einfach und ein grafisches Frontend, welches auf die Bedienung mit dem Gamepad angepasst ist, ist meistens auch schon dabei (die meisten nutzen hierfür EmulationStation). Soweit es mir bekannt ist, gibt es derzeit 3 verschiedene Linux-Distributionen, welche sich auf das emulieren von Konsolen auf dem RP2 spezialisiert haben:
Ich habe mich für letztere entscheiden und möchte diese nachfolgend etwas genauer vorstellen. Zunächst mal eine kleine Aufzählung der cooleren Features von Recalbox (wobei ich nicht sagen möchte, dass die anderen Distributionen diese Features nicht haben - ich habe mich mit Recalbox lediglich am meisten beschäftigt):
- einfache Installation/Konfiguration
- bringt unglaublich viele Emulatoren mit, bei manchen Systemen sogar mehrere
- Gamepads werden direkt erkannt und sind leicht zu konfigurieren
- grafisches Frontend schon vorinstalliert
- Zugriff auf die Linux Kommandozeile von einem anderen Rechner im Netzwerk per SSH
- erstellt einen Share im Netz, über den man Roms installieren kann
- diverse Einstellungen gehen ebenfalls über den Share
- Updates können im laufenden Betrieb heruntergeladen und installiert werden
Anleitung: Installation/Konfiguration von Recalbox
- eine microSD Karte muss fat32 formatiert werden (z.B. mit dem SD Card Formatter)
- die aktuellste Version von Recalbox kann auf deren Github-Seite heruntergeladen werden
- den Inhalt der Zip-Datei auf die formatierte microSD Karte entpacken
- microSD Karte in den Slot des RP2 stecken, USB Keyboard/Maus anschließen und Feuer
- Anweisungen auf dem Bildschirm zu Installation befolgen
- nach einer Weile bootet Recalbox automatisch in die EmulationStation
- jetzt lässt sich ein USB-Gamepad anschließen, weitere Konfigurationen erfolgen bequem über das UI
Anleitung: Übertakten des RP2
Man kann in der config.txt diverse Werte ändern, um ein bisschen mehr Leistung aus dem RP2 zu kitzeln. Dabei gibt es jedoch 2 Dinge zu beachten: Zum einen erlischt dabei die Garantie des Herstellers und zum anderen rate ich beim übertakten dringend zum Einsatz von Kühlern, da die Chips dadurch recht heiß werden können. Auf die config.txt kann man entweder lokal oder übers Netzwerk zugreifen.
Lokal (hierfür muss sich das RP2 nicht im Netzwerk befinden, es wird aber ein angeschlossenes USB-Keyboard + Maus benötigt): RP2 bzw. Recalbox neu starten und beim booten auf einem angeschlossenen Keyboard die Shift-Taste drücken. Im NOOBS-Menü (ja, das heißt wirklich so) den Recalbox-Eintrag auswählen (im Beispielbild ist gerade Raspbian angewählt) und oben auf "edit config" klicken oder alternativ den Hotkey "e" drücken und schon kann's losgehen. Nachdem die gewünschten Änderungen gemacht wurden, einfach den Editor beenden, die Änderungen speichern und Recalbox neu starten.
Befindet sich das RP2 im Netzwerk, kann man die Textdatei einfach per SSH editieren. Hierfür einfach Putty installieren und starten. In die Zeile für den Hostname tragen wir schlicht "recalbox" ein, den Rest können wir auf den Standardeinstellungen lassen. Ein Klick auf "Open" bringt uns auf die Kommandozeile der Recalbox. Hier müssen wir uns zunächst als root anmelden (Login: root Passwort: recalboxroot). Nun mit cd in den /boot Ordner wechseln und mit Nano die config.txt aufrufen. Nachdem wir die neuen Settings gemacht haben, können wir mit Alt + O die Änderungen überschreiben und Nano dann mit Alt + X beenden. Einen Reboot des RP2 später sollten die Änderungen an der config.txt übernommen worden sein. Vor allem die 3D-lastigen spiele (N64 + Playstation) profitieren stark vom übertakten. Hier noch mal meine Werte, welche zwar sicherlich nicht der Weisheit letzter Schuss sind, aber ganz gut funktionieren:
arm_freq=1000
sdram_freq=500
core_freq=500
over_voltage=2
gpu_mem=512




























Keine Kommentare:
Kommentar veröffentlichen