Es war ein langer Weg, aber er hat sich gelohnt! In Zusammenarbeit mit Dirk Sommerfeld freue ich mich, allen Besitzern eines DGT Centaur ein kostenloses Upgrade präsentieren zu können. Da sich die meisten Anfragen auf das Speichern von auf dem DGT Centaur gespielten Schachpartien beziehen, wurde an dieser Lösung mit Priorität gearbeitet. Wichtig war hierbei, dass jeder seinen DGT Centaur ohne großen Aufwand mit dem Upgrade erweitern kann.
Mit Dirk Sommerfeld bin ich bei mehreren Telefonaten verschiedene Lösungswege durchgegangen. Ganz klarer Favorit war hierbei das Speichern von Partien auf einem USB-Stick. Bei meinem Prototypen hatte ich das Speichern von Partien bereits umgesetzt, jedoch stellte sich schnell heraus, dass die Software der Verkaufsversion des DGT Centaur um Einiges anders (abgespeckter) ist, als die des DGT Centaur Prototypen.
Nun war Dirk jedoch in seinem Element. Dreh- und Angelpunkt war die auf dem DGT Centaur kodierte Datei chessgame1_2.dat. Mit viel Know How konnte diese Datei dekodiert werden.
Darin enthalten ist unter anderem auch die Endstellung der zuletzt gespielten Partie. Hierbei ist es nicht relevant, ob die Partie bis zum Matt gespielt wurde. Möchte man beim Centaur eine angefangene Partie zu einem späteren Zeitpunkt fortsetzen und schaltet den DGT Centaur aus, liest der DGT Centaur u.a. diese Infos nach dem Einschalten aus der Datei heraus. Erwähnen muss ich an dieser Stelle, dass alleine für diese Dekodierung enormes Wissen an Reverse Engineering notwendig ist. Dirk Sommerfeld gehörte schon in den 90ern zur Elite. 😉
Hat Dirk einmal Blut geleckt, lässt er nicht mehr los. Es ist ihm schließlich gelungen, die bei einem DGT Centaur zuletzt gespielte Partie mit allen Zügen zu extrahieren.
Mit diesen Zug-Daten ist es nun ein Leichtes, eine PGN-Datei zu erstellen und zu speichern. Wer nun denkt, dass man jetzt einfach einen USB-Stick anschließt und die PGN-Datei dort speichern kann, irrt. Bei der Verkaufsversion des DGT Centaur ist der Linux-Kernel dermaßen kastriert, dass tatsächlich nur die Operationen funktionieren, welche für den Betrieb des „normalen“ DGT Centaur notwendig sind. Einmal mehr hat sich Dirk reingenkniet, den Kernel auseinandergenommen, analysiert und alle Notwendigkeiten nachgeschossen. 😉
Bei der Analyse kam unter anderem auch zum Vorschein, dass der DGT Centaur neben der Version 3.6 auch auf die Version 3.5 der Python-Bibliothek zugreift. Interessant ist hierbei, dass beim DGT Centaur diese Version der Python-Bibliothek nicht enthalten ist, weshalb man davon ausgehen kann, dass diese beim Starten des DGT Centaur aus einem Image nachgeladen wird. Dies erklärt auch, warum es mir möglich ist, die verschlüsselten Python-Dateien im laufenden Betrieb zu unterbrechen und auf den unverschlüsselten Python-Code zuzugreifen.
Nachdem Dirk nun das Mounten und beschreiben eines USB-Sticks über den USB-Ausgang des im DGT Centaur befindlichen Raspberry Pi Zero ermöglicht hat, ging es jetzt darum, den richtigen Zeitpunkt zu finden, um die PGN zu generieren und auf den USB-Stick zu schreiben. Zunächst sollte dies dann geschehen, wenn der Anwender bei angeschlossenem USB-Stick den DGT Centaur ausschaltet. Hierbei offenbarte sich aber, dass der DGT Centaur beim Ausschalten nicht wie ein reguläres Betriebssystem herunterfährt, sondern nach ein paar Sekunden einen harten CUT macht. Durch einen Shutdown eingeleitete und auszuführende Operationen werden schlicht ignoriert und nicht bis zum Ende abgearbeitet.
Dirk hatte aber auch für dieses Problem die passende Lösung. Die PGN wird „einfach“ beim Neustart des DGT Centaur auf den USB-Stick geschrieben. 🙂
Das Resultat kann sich sehen lassen, wie Dirk in folgendem Video aufzeigt:
Kommen wir nun zu dem wichtigsten Punkt bei solchen Entwicklungen > Die Usability! Die Erweiterung sollte von Anfang an für jeden Besitzer eines DGT Centaur so einfach wie möglich umzusetzen sein. Dirk ist dies perfekt gelungen! Man benötigt nur eine SD-Karte mit 16 Gigabyte Speicher, auf welcher man das modifizierte DGT Centaur Image schreibt. Anschließend legt man den USB-Port des DGT Centaur am Gehäuse frei, verbindet einen USB-Adapter an welchem sich der USB-Stick befindet und fertig. Mehr muss man nicht machen.
Wie im Video gezeigt, kann man nun durch aus- und anschließendem Einschalten des DGT Centaur Partien auf dem USB-Stick speichern. Jede Partie wird in einer separaten, nach oben nummerierten, PGN-Datei gespeichert. Kurz wurde auch die Möglichkeit besprochen, dass man alle Partien auch einfach in eine PGN-Datei speichern könnte, aber für den Endanwender ist die weitere Bearbeitung und Verwendung einer Partie einfacher, wenn pro Partie eine separate PGN-Datei angelegt wird. So braucht man beispielsweise zum Analysieren der gespielten Partie nur die PGN-Datei ins Lichess-Analysefenster ziehen.
Eine weitere Besonderheit möchte ich an dieser Stelle nicht unerwähnt lassen. Die modifizierte DGT Centaur SD-Karte hat keine Hardware-Bindung und läuft in jedem Raspberry Pi!
Ich werde in diesem Artikel in Kürze einen kostenlosen Download-Link für das DGT-Centaur-SD-Karten-Image bereitstellen und alle DGT-Centaur-Besitzer in meiner Mod-Liste anschreiben. Das USB-Adapterkabel stelle ich jedem in der Liste als kleines Geschenk kostenlos zur Verfügung. All denjenigen, welche diesen Umbau nicht selbst vornehmen möchten, biete ich den kompletten Umbau kostenlos an. In diesem Fall bleibt dann auch die Garantie bestehen. 🙂
Update 05-06-2021:
Das Image (für DGT Centaur welche ab 2020 produziert wurden) kann über folgenden Link heruntergeladen werden:
DGT Centaur DS TS Edition V0.99 (547 Downloads)
Wichtiger Hinweis! Das Image wurde erfolgreich bei DGT Centaur Schachcomputern der Baureihe nach 2020 getestet. Für DGT Cenatur Schachcomputer, welche vor 2020 produziert wurden, werde ich in Kürze ein separates Image als Download anbieten. Die Verwendung des Images erfolgt auf eigene Gefahr. Wer zwei linke Hände hat, kann mich gerne kontaktieren und ich werde den Umbau vornehmen. In diesem Fall bleibt auch die Garantie des DGT Centaur erhalten. Noch ein Tipp! Nach dem Öffnen des DGT Centaur sollte man als Erstes das Akkukabel von der Platine trennen (einfach rausziehen) und darauf achten, dass man nicht elektrostatisch aufgeladen ist. 😉
Update 07-06-2021:
Das Image (für DGT Centaur welche bis 2020 produziert wurden) kann über folgenden Link heruntergeladen werden:
DGT Centaur DS TS Edition v0.99 für DGT Centaur vor 2020 (456 Downloads)
Hier eine kurze Erklärung, warum es zwei Images gibt. Bei den DGT Centaur Schachcomputern, welche ab 2020 hergestellt wurden, werden andere Display-Treiber verwendet. Auch gibt es diverse Unterschiede im Aufbau des Systems. Bei zukünftigen Erweiterungen wird es daher auch wieder zwei Images geben.
Zusammen mit Dirk gehen wir in Kürze dann auch die Online-Geschichte beim DGT Centaur an. Meine bereits vorhandene Umsetzung mit dem DGT Centaur Prototyp soll in die Verkaufsversion einfließen. Zwar muss hierzu muss der modifizierte Kernel nochmals erweitert werden, aber ich bin guter Dinge, dass die Umsetzung dieses Schritts mit der Kompetenz von Dirk zügig realisiert werden kann. Hierzu aber später mehr.
Bis bald
Euer Benny