minicom/CuteCom Nostalgie

Ich weiss, heutzutage braucht man nur noch selten ein Terminalprogramm für serielle Schnittstellen, aber manchmal eben doch 😀 .
Und so einen Fall hatte ich gerade: mein neu aufgesetzter Debian-Server bekam im Zuge einer Entrümpelungsaktion nun keinen Bildschirm und keine Tastatur mehr, und so stellte sich die Frage, wie ich da rankommen soll, falls mal das Netzwerk nicht geht oder ein Filesystemcheck beim Boot nicht ohne Benutzereingriff durchläuft.
Also mal schnell nach ‚Linux Server serial Port boot‘ gesucht und hier: Missing startup messages on console(tty1) after the boot fündig geworden.

Bevor ich das dann in der Praxis umsetzen/testen konnte, tauchte noch das Problem auf, dass mein Server, aufgebaut aus einem ausgemusterten Dell-Desktop, gar keine serielle Schnittstelle mehr hatte.
Hier wäre nun ein USB-Serial Converter als Workaround in Frage gekommen, allerdings hatte ich davon nur einen vorrätig und der sollte schon am anvisierten Client, meinem alten EEEPC 701 (der auch schon keinen Serial Port mehr hat), Verwendung finden.
Also mal in der LPC Schrottkiste gesucht und tatsächlich eine 1-Port-Serial PCI Karte gefunden.
Eingebaut und wie oben beschrieben den Server konfiguriert (/etc/default/grub angepasst …) und dann den Client genauer angeschaut.
Auf dem hatte ich schon kurz nach der Anschaffung das vom Hersteller vermurkste Xandros Linux durch Debian ersetzt, und so steht dort auch das gesamte Repository zur Verfügung.
Das Standardprogramm für serielle Kommunikation ist auch hier minicom, also kurzerhand dieses installiert, ein Nullmodem-Kabel angesteckt und los gings.
Zuerst mal ‚minicom -s‘ gestartet und die ganzen Modem-Init-Befehle deaktiviert, da es ja hier um eine Direktverbindung geht.
Port auf /dev/ttyUSB0, Baudrate auf 115200 8N1 gesetzt (genau wie am Server) und gespannt auf den Bildschirm geschaut, ob/was sich da tut.
Und siehe da: immerhin mal ein paar Hieroglyphen 😀 .
Nach den einige Jahre zurückliegenden Erfahrungen mit Serial-Port Messgeräten sollte das mit falscher Baudrate oder Start/Stopbits/Parity etc. zu tun haben.
Und genauso war es auch: Baudrate auf 9600 gesetzt und schon klappte alles, sogar ausreichend schnell (ich denke, der serial-USB Converter kann keine 115200 BPS und fällt deswegen auf den Default-Wert von 9600 zurück).

An der Stelle hätte ich nun aufhören können, aber mir gefiel das minicom nicht.
Man kommt dabei einfach nicht um ein paar kryptische Tastenkombinationen herum, und manchmal reagiert es auch überhaupt nicht, oder mit Verzögerung – alles nicht so toll.
Als GUI Alternative war mir aber noch dunkel CuteCom in Erinnerung, also mal eben installiert (ist auch noch im Debian Jessie Repo) und gestartet.
Leider bot das nur die Seriellen Standard-Ports ttyS0 bis ttyS3 zur Auswahl an, nicht aber den laut dmesg/setserial einzig vorhandenen aktiven Port ttyUSB0.
Ein Symlink von ttyS0 auf ttyUSB0 hätte nun sicher vorübergehend geholfen (zumindest bis zum nächsten Reboot), aber es sollte doch auch besser gehen.
Ein Blick in die Doku bzw. den Sourcecode zeigte, dass die Liste der Ports in der Konfigurationsdatei ~/.config/CuteCom/CuteCom.conf steht, also flux mal dort /dev/ttyUSB0 angehängt, und siehe da, damit funktionierte das Ganze sofort.
Damit war auch das Anpassen im Quelltext kein Hexenwerk mehr, hier wurde nun gleich ttyUSB0 und ttyUSB1 hinterlegt, und zwar so, dass auch eine ggf. vorhandene, alte Konfiguration ohne diese Daten, erweitert wird.
Damit steht dem Einsatz von CuteCom ‚out of the Box‘ auch auf aktuellen PC’s/Laptops ohne serial Port, aber mit USB-Serial Converter, nichts mehr im Weg.
Das geänderte Programm kann hier heruntergeladen werden, zur Installation werden die qt4-Developer-Librarys und cmake gebraucht.

Für meinen Bedarf tut das erstmal so, allerdings wären m.E. noch folgende Verbesserungen sinnvoll:

  • Erstellen der Device-Liste nur aus den am Client-System vorhandenen, aktiven Ports (ggf. dmesg/setserial Ausgabe auswerten ?)
  • GUI in Betrieb/Setup-Tabs aufteilen (mehr Platz für Bilsdchirmausgabe im Betrieb)
  • Portierung auf qt5 (die Unterstützung von qt4 in den Distributionen läuft nach und nach aus)

Ich glaube, ich sollte mal den Autor (Alexander Neundorf) anfunken, der kann das besser als ich 😉