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.

Farbpalette finden mit Paletton

Ab und an stehe ich vor dem Problem, eine vernünftige Farbpalette für ein Programm oder ein Grafikdesign zu finden. Wenn man dann noch Softwareentwickler ist, wie ich, wird es ganz schnell mal „entwicklerschön“, also sollte man für solche Fälle ein Tool zur Hand haben, das einem wenigstens schon mal bei der Farbpalette hilft.
Paletton ist so ein Tool, über das ich heute gestolpert bin und das eine Fülle an Einstellungen hat, die euch helfen eine geeignete Farbpalette zu finden. Über den Farbkreis könnt ihr zuerst einstellen, was für eine Farbpalette ihr haben wollt. Die Namen beschreiben die Anordnung der gewählten Farben im Farbkreis (Monochromatisch, Adjazent, etc.). Danach wählt ihr im Farbkreis einfach die Grundfarbe aus und könnt direkt auf der rechten Seite die dazu passenden Farben sehen.

Paletton – Tool zum Finden einer Farbpalette

Im unteren Bereich des Tools findet ihr außerdem die Möglichkeit Presets mit der gewählten Grundfarbe anzeigen zu lassen und die gewählten Farben in einer Vorschau zu visualisieren. Für letzteres gibt es auch wieder einige Presets, die euch unter anderem auch zeigen, wie Text in den gewählten Farbtönen kombiniert aussieht.
Schlussendlich könnt ihr über „Export / Tables“ euer eigenes Farbdesign exportieren oder auch drucken. Hier wird euch die komplette Farbpalette samt der RGB Farbwerte angezeigt und ihr könnt sie in den unterschiedlichsten Formaten exportieren.

Ach… und noch ein kleines Gimmick, das ich anfangs übersehen habe: unten rechts findet ihr den Punkt „Vision Simulation“. Mit ihm kann man bspw. simulieren, wie die Seite für einen Farbenblinden aussehen würde. Ich finde es sehr wichtig, dass das möglich ist, denn allzu oft vergisst man, dass manche Menschen davon betroffen sind. Also checkt euer Farbdesign einfach mal schnell damit durch, damit es auch für farbenblinde Menschen gut zu lesen ist.
Insgesamt mag ich die Einfachheit von Paletton sehr und dennoch ist es möglich, damit sehr komplexe Einstellungen vorzunehmen, um seine gewünschte Farbpalette zu finden. Vielleicht ist es ja auch etwas für euch.

TinyFPGA BX Bootloader korrupt

Kennt ihr das: Ihr freut euch auf ein neues Entwicklungsboard, es kommt an, ihr schaltet es ein, führt das Tutorial durch und… Feierabend… nichts geht mehr. Aber worum geht es überhaupt? Schon während meines Studiums fand ich FPGAs sehr interessant und habe mich auch immer wieder mit der rekonfigurierbaren Hardware beschäftigt, denn, im Gegensatz zu Software, entsteht durch die Textbeschreibung eine richtige Hardware. Da es im Bereich FPGAs bisher nur proprietäre Software gab, interessieren mich natürlich die TinyFPGAs sehr, denn sie setzen auf Open Source Software und Open Hardware.
Ich habe mir deshalb zum testen mal ein TinyFPGA BX Board bestellt und es wurde auch sehr schnell geliefert. Nach dem ersten Einstecken und der Installation der entsprechenden Software unter Linux habe ich dann den Befehl (wir im Tutorial vorgegeben)

tinyfpga –update-bootloader

ausgeführt. Er wurde gestartet, brach aber direkt nach dem Löschen des EEPROMs ab. Der Chip war damit neudeutsch „gebricked“ und ließ sich nicht mehr ansprechen. Man muss dazu erklären, dass das EEPROM die Hardwarebeschreibung für das FPGA enthält und natürlich auch den Bootloader.

An dieser Stelle hat man dann zwei Möglichkeiten: man schreibt den Hersteller an und er liefert dann ein neues Modul mit – hoffentlich – aktuellem Bootloader und probiert es dann noch einmal oder man schreibt den neuen Bootloader selbst in das EEPROM. Ich habe mich für die zweite Variante entschieden und möchte hier den Weg kurz beschreiben.

Zuerst musste ich an die Pins für das EEPROM herankommen. Glücklicherweise sind sie beim TinyFPGA auf der Unterseite verfügbar, allerdings nur als Pad. Die einfachste Variante wäre jetzt, ein Kabel an die Pads zu löten. Da aber das Board ggf. auch mal in einem Prototypenboard landen soll, habe ich mir ein kleines Programmierboard gebaut, das so genanne Pogo Pins (Deutsch: Federkontaktstift) zur Kontaktierung verwendet. Das sind kleine Pins, die mit Federn gegen die Kontakte gedrückt werden (siehe Bild).

Pogo Pins auf dem TinyFPGA Programmieradapter

Als nächstes musste noch irgendwie der Bootloader in das EEPROM gebracht werden. Genau für sowas habe ich mir vor Ewigkeiten mal den Bus Pirate von Dangerous Prototypes gekauft. Zusammen mit dem Tool flashrom kann man damit dann EEPROMs neu beschreiben.

Bus Pirate mit Programmieradapter und TinyFPGA BX Board

Anschließend braucht man nur noch das TinyFPGA Board in den Programmieradapter einstecken und mit flashrom das EEPROM neu schreiben. Hat aber leider nicht beim ersten Mal funktioniert, denn das FPGA stört die SPI Kommunikation mit dem EEPROM. Dafür gibt es aber eine ganz einfache Abhilfe: einfach den Reset-Knopf auf dem TinyFPGA Board während der Kommunikation gedrückt halten, das FPGA bleibt dann im Reset Modus und schaltet die Ein- / Ausgänge auf Tristate und die Kommunikation wird nicht gestört. Weitere Informationen zum Flashvorgang und den Bootloader findet man im TinyFPGA Forum.

Übrigens: solltet ihr auch ein Programmierboard zusammenstellen, dann denkt daran, es wenigstens halbwegs zu beschriften. Solltet ihr mal wieder vor dem gleichen Problem stehen müsst ihr nicht erst die Pinbelegung wieder herausfinden.

Ladestation für Bosch E-Bike Akku

Seit ein paar Jahren fahre ich mittlerweile mit einem E-Bike zur Arbeit (ja, auch im Winter) und bin, nach wie vor, von meinem Fahrrad begeistert. Da gibt es aber noch etwas, das ich alle 1-2 Wochen mal machen muss – den Akku laden. Bisher lag dafür das Ladegerät in meiner Wohnung und ich habe den Akku dann mit reingenommen und in meiner Wohnung wieder aufgeladen. Das hat aber zwei Nachteile: in der Wohnung liegt ein Ladegerät herum und irgendwie ist das Ganze nicht so besonders toll aufgeräumt.

Bosch Fahrradakku Ladehalterung (noch nicht montiert)

Durch Zufall bin ich aber bei Thingiverse über ein tolles Design für eine Ladehalterung für einen Bosch Standard-Fahrradakku gestolpert und habe mir damit eine eigene Halterung gebaut. Die Halterung selbst besteht aus zwei Teilen: einmal der Halterung für den Akku (mit einer Aussparung, damit man den Ladezustand des Akkus ablesen kann) und einer weiteren Halterung für das Ladegerät. Den Akku kann man einfach in die Halterung einhängen und danach das Ladegerät ans Netz anschliessen, um den Ladevorgang zu starten. Das Ladegerät lässt sich bei diesem Design außerdem auch noch relativ einfach entnehmen, sodass man es auf eine längere Tour mitnehmen kann. Beide Teile müssen mit einem 3D Drucker gedruckt werden und benötigen eine ganze Zeit, bis sie gedruckt sind. Das Design ist aber recht unkompliziert und sollte beim Druck keine grossartigen Schwierigkeiten bereiten.

Als Träger für die Ladehalterung kommt bei mir ein Laminatbrett zum Einsatz, das ich noch als Ersatzteil herumliegen hatte. Da die Schrauben auf der Rückseite etwas aus dem Laminat herausragen, habe ich auf der Rückseite noch ein paar dünne Sperrholzplatten als Abstandshalter aufgeklebt, damit auch nichts wackelt, ruckelt oder sich durchdrückt.

Bosch Fahrradakku Ladehalterung (im Keller montiert)

Mit dem Endergebnis bin ich sehr zufrieden. Der Druck hat zwar lange gedauert, aber die Halterung sieht so gut aus, dass ich sie sogar in meiner Wohnung in einer Ecke an die Wand hängen würde. Vielleicht ist es ja auch etwas für euch…

ESP-01S Relais Board patchen

Für ein kleines Projekt, eine Zweitklingel für unsere Türsprechanlage, habe ich mir im Makershop.de ein Relaisboard bestellt, das mit „ESP-01S Relay V1.0“ beschriftet ist. Ich wollte mir damit das Verkabeln einzelner Relais Boards ersparen und ein paar alte ESP-01 Boards hatte ich hier sowieso noch herumliegen – also genau das Richtige für das Projekt. Wie ich, nachdem ich das Board erhalten habe, leidvoll feststellen musste, funktioniert es überhaupt nicht und der ESP-01 startet erst gar nicht. Nach ein wenig Sucherei im Netz habe ich dann auch den Schaltplan für das Board gefunden und dabei fällt sofort ins Auge, dass CH_PD nicht mit VCC verbunden ist und was macht überhaupt der 10k Widerstand da, der GPIO0 auf GND zieht? Das ist doch der Bootloader Mode… Also heisst es wohl: das Board muss gepatcht werden, sonst funktioniert es „Out-of-the-box“ überhaupt nicht.

Da diese Boards auch noch über AliExpress verkauft werden und damit die Wahrscheinlichkeit hoch ist, dass noch ein paar andere Bastler darüber stolpern, hier zwei Bilder, wie ihr das Board modifizieren müsst, damit es auch bei euch reibungslos funktioniert.

Also erstmal auf der Oberseite des Boards den Widerstand auslöten:

…und danach dann noch die zwei Pins (CH_PD und Vcc) miteinander verbinden:

Insgesamt eigentlich ziemliche Anfängerfehler im Design. Passt also auf, dass ihr beim Bestellen nicht auch an diese Boards geratet, sonst ist Handarbeit gefragt, um die beiden Bugs auszumerzen.