Dreamcast wiederentdeckt / Docker Devkit

Vor Kurzem bin ich mal wieder über meine Sega Dreamcast gestolpert, die schon seit einiger Zeit ein Schattendasein in einer Stapelbox geführt hat. Ich habe sie bereits vor einigen Jahren schon mit einem GDROM-Emulator ausgestattet, den Akku der Echtzeituhr getauscht, eine Wechselhalterung für den Akku eingebaut, der laute Lüfter durch einen Noctua Lüfter und auch schon das alte Netzteil durch ein Pico-PSU ersetzt. Für den GDROM Emulator habe ich entsprechende Einsätze gedruckt, das Pico PSU wurde auf eine Halterung aufgesetzt und auch für den Lüfter habe ich einige Vorlagen bei Thingiverse gefunden, die den Einbau erheblich erleichtert haben. Das sieht dann momentan so aus (ist nicht mehr viel vom Original über…):

Umgebaute Sega Dreamcast

Also wurde die Dreamcast mal wieder aufgebaut und eine Runde Crazy Taxi gespielt. Evtl. hänge ich auch meinen RasPi mit DreamPi wieder an die Dreamcast und spiele eine Runde Phantasy Star Online auf dem Sylverant Server.

Coders Cable Umbau

In meiner Stapelbox lag auch noch mein altes Coders Cable von Lik Sang, das einen MAX3222 Chip zur Wandlung von 3.3V auf RS232 verwendet hat. Heutzutage ist das nicht mehr üblich und deshalb habe ich das Kabel abgetrennt und ein FTDI USB nach Seriell Konverter drangehängt. Wenn ich mal etwas mehr Zeit haben sollte, werde ich mal schauen, ob man da nicht auch einen ESP32 dranhängen kann.

Sega Dreamcast Coders Cable mit FTDI USB-Seriell Konverter

Docker KallistiOS Development Kit

Wenn man ein Coders Cable testen möchte, dann ist es natürlich sinnvoll, ein kleines Programm zu schreiben, das z.B. einen 3D Würfel rendert und auf dem Bildschirm rotieren lässt. Um das Programm zu erstellen, benötigt man ein Cross Development Kit und davor hat es mir bisher immer wieder etwas gegraut. Man musste dafür damals erstmal eine entsprechende Umgebung samt dem KallistiOS Development Kit kompilieren und das hat bei mir selten auf Anhieb funktioniert. Glücklicherweise gibt es heute bereits komplett fertige Development Kits bspw. das DreamSDK, das als Installer für Windows daher kommt. Da ich aber nichts installieren möchte, habe ich mich dann für ein Docker Image entschieden, das das komplette Development Kit mitbringt und so konnte ich, nachdem ich das KallistiOS GitHub Repository lokal geklont habe, die enthaltenen Beispiele über die Kommandozeile auf Anhieb kompilieren. Ich verwende dafür den Befehl

um eine interaktive Konsole zu starten und dort dann die Make Dateien aufzurufen. Danach purzeln die Kompilate für die Dreamcast in den entsprechenden Verzeichnissen heraus.
Die Dateien habe ich bisher erstmal mit einer alten Version des DC-Tool-Serial übertragen und gestartet. Die Version v1.0.6 habe ich leider bisher noch nicht für Windows gefunden, also werde ich mich die Tage wohl mal dran setzen und das selbst kompilieren und vielleicht hier zur Verfügung stellen. Es ist auf jeden Fall ganz schön, mal wieder die alten Spiele zu zocken und auch mal wieder zu schauen, was die Homebrew Szene momentan noch so alles für die alten Konsole bastelt.

Mit der Sega Dreamcast und dem Raspberry Pi ins Internet

Die Sega Dreamcast kam in Europa Ende 1999 auf den Markt und war die erste Konsole, die dank dem bereits ab Werk eingebauten Modem Onlinefunktionalitäten mitbrachte. Mit der passenden Software konnte man mit ihr im Internet surfen, Mails schreiben und empfangen und natürlich auch online spielen. Zwar wurden nach dem Produktionsende in 2001 die Spielserver auch nach und nach abgeschaltet, dank der immer noch aktiven Dreamcast Szene gibt es aber trotzdem Fanserver, auf denen Spiele wie Phantasy Star Online oder Starlancer auch heute noch gespielt werden können.

Leider ist die Nutzung des Modems heute nicht mehr zeitgemäß und funktioniert bei IP-basierten Telefonanschlüssen auch nicht mehr richtig und ein LAN-Adapter (Broadband Adapter), den es als Zubehör zu kaufen gab, kann nur selten auf bekannten Auktionsplattformen für sehr viel Geld ersteigert werden. Abhilfe schafft hier aber der Raspberry Pi, der zusammen mit einem USB-Modem und der DreamPi Distribution die Gegenstelle für das Modem der Dreamcast übernimmt.

Materialliste

1x Raspberry Pi B (laut Autor sollten alle Modelle laufen)
1x SD-Karte
1x USB Modem (muss unter Linux laufen – ein billiges Modem von eBay reicht vollkommen aus)
1x Aufwärtswandler (in meinem Fall ein MT3608, muss 5V in ~24-26V umwandeln)
1x Widerstand 1k
1x Elektrolytkondensator, 1µF, 63V (minimale Spannung 26V)

Schritt für Schritt Anleitung

Schritt 1 – DreamPi Image laden

Zuerst lädt man das DreamPi Image für den Raspberry Pi von der Webseite des DreamPi Autors. Man findet es unter „What you will need“. Zum Erstellungszeitpunkt des Artikels ist die Version 0.95 aktuell.

DreamPi Image Download

Schritt 2 – Image entpacken

Das Image für den Raspberry Pi ist mit dem Packprogramm 7-Zip komprimiert worden. Man findet 7-Zip unter http://www.7zip.org. Nach der Installation kann man die heruntergeladene Datei öffnen und über einen Klick auf „Entpacken“ die Image Datei in ein Verzeichnis entpacken.

DreamPi Image Entpacken

Schritt 3 – Image auf die SD-Karte kopieren

Mit dem Programm Win32 Disk Imager (http://www.heise.de/download/win32-disk-imager-1192033.html) kann man dann die „.img“ Datei auf die SD-Karte übertragen. Dafür einfach das Laufwerk mit der SD-Karte und die Image Datei auswählen und mit einem Klick auf „Write“ wird das Image auf die SD-Karte geschrieben. ACHTUNG: Dabei gehen alle Daten auf der SD-Karte verloren.

Benutzername und Passwort sind übrigens, wie auch bei Raspbian üblich, „pi“ und „raspberry“.

Win32DiskImager

Schritt 4 – Raspberry Pi vorbereiten

Jetzt kann der Raspberry Pi vorbereitet werden. Dazu das USB Modem, das Netzteil und die SD-Karte in den Raspberry Pi einlegen. Momentan funktioniert DreamPi nur über den integrierten LAN Port, deshalb muss auch ein Netzwerkkabel angeschlossen werden. Die Konfiguration von DreamPi sollte dann aber selbstständig ablaufen.

Schritt 5 – „Line Voltage Inducer“

Der „Line Voltage Inducer“ ist notwendig, um die zur Kommunikation notwendige Spannung auf der Telefonleitung aufzubauen. Dieser Schritt ist dabei der aufwendigste, aber dennoch recht einfach, da nur wenige Bauteile benötigt werden.
Ich habe bei meinem Umbau das beim Modem mitgelieferte Telefonkabel verwendet. In meinem Fall waren nur zwei Leitungen belegt. Sollte jemand ein Telefonkabel mit mehr als zwei Adern verwenden, so ist es wichtig, dass nur die zwei mittleren Adern benötigt werden. Der „Line Voltage Inducer“ wird dabei in eine Leitung eingebaut. Dazu einfach das Kabel auftrennen, eine Ader wieder miteinander verbinden und zwischen die andere Leitung die im Bild gezeigte Schaltung dazwischenhängen. Die im Bild gezeigte Spannungsquelle V1 mit 26V ist in diesem Fall der Aufwärtswandler.

Line Voltage Inducer-ohne Logo

Schritt 6 – Aufwärtswandler an den Raspberry Pi anschließen

Damit der Aufwärtswandler nicht von einer separaten Spannungsquelle versorgt werden muss, wird er direkt mit den 5V des Erweiterungsports des Raspberry Pi verbunden. Ein Blick auf die Pinbelegung verrät, dass wir +5V und GND direkt untereinander finden. Hier wird der Eingang des Aufwärtswandlers angeschlossen.

Expansionport Raspberry Pi

Schritt 7 – Aufwärtswandler auf 26V einstellen

Im letzten Schritt muss der Aufwärtswandler jetzt noch auf eine ungefähre Spannung von 24-26V eingestellt werden. Dazu entweder den Raspberry Pi booten oder den Aufwärtswandler noch einmal an ein Netzgerät mit 5V anschließen und mit einem Multimeter die Ausgangsspannung bestimmen. Die meisten Module besitzen ein Potentiometer, mit dem die Ausgangsspannung eingestellt werden kann.
Ist die Ausgangsspannung korrekt eingestellt worden, kann die eine Seite unserer „selbstgebauten Telefonleitung“ an die Dreamcast und die andere Seite an das Modem angeschlossen werden. Die Hardwareseite ist damit fertig.

MT3608 Aufwärtswandler - bearbeitet

Schritt 8 – Wählverbindung der Dreamcast einrichten

Die Sega Dreamcast muss jetzt noch so konfiguriert werden, dass eine eigene Wählverbindung verwendet wird, die nicht auf ein Freizeichen wartet. Am besten verwendet man DreamKey 3.0, da man hier auch gleich die Verbindung mit dem integrierten Webbrowser testen kann.

In den Einstellungen wird ein neuer Provider angelegt, der unter der Telefonnummer „555“ erreichbar ist. In den Advanced Settings muss zusätzlich noch der Modemstring „ATX0“ eingetragen werden. Der Benutzername kann frei gewählt werden und das Passwort lässt man leer.
Zum Abschluss startet man eine Verbindung, die ohne Probleme aufgebaut werden sollte. Nach Eingabe einer Internetadresse sollte die entsprechende Webseite geladen werden.

Sollte die Verbindung mit einem Timeout abbrechen, kann eine Fehlkonfiguration innerhalb von DreamPi der Grund sein. Man sollte sich dann mit dem Raspberry Pi per SSH verbinden und die Datei „/etc/ppp/options“ überprüfen. Hier sollte der richtige DNS Server eures Netzwerk unter „ms-dns“ stehen.

Schritt 9 – Phantasy Star Online mit Sylverant Server

Die Server des Spiels Phantasy Star Online wurden schon vor längerer Zeit abgeschaltet. Dennoch wird von einem Enthusiasten ein eigener Server gepflegt, der Sylverant heißt und unter http://www.sylverant.net zu erreichen ist. Auf der Seite des Servers findet man ein Programm, das man auf CD brennen kann, um Phantasy Star Online so zu patchen, dass es sich automatisch mit dem Sylverant Server verbindet.