fbterm anstatt PiGFX-Terminal

  • PiGFX als serielles BareMetal Terminal auf dem Raspberry Pi ist ganz nett, aber ich finde den Bitmap(?)-Font doch etwas sehr klassisch/pixelig :)

    Zudem unterstuetzt PiGFX "nur" den seriellen Port fuers Terminal, aber mein ESP32-RunCPM-System kann neben dem seriellen Port auch

    per USB angeschlossen werden - dann ist der "serielle" Port (ttyUSB0) und die Stromversorgung gleichzeitig vom Raspberry Pi unterstuetzt.


    Das setzt allerdings voraus, dass man doch das laenger bootende "Raspberry Pi OS" (gibt in einer neuen Version seit dem 02.12.2020 - auch wieder als lite)

    d.h. ohne graphischen Desktop.


    Um dort fuer ein Terminal nicht nur die (wieder .psf-Bitmap-Fonts) von dpkg-reconfigure console-setup nutzen, kann man mit der Application
    fbterm (fast Terminal for Framebuffer) in der Console auch .TTF (Truetype-Fonts) nutzen. Hier kommen besonders gut fuer den Einsatz als Terminal
    die Mono-TTF-Fonts.


    Hat man fbterm gestartet, so kann man mit dem Terminal (direkt im Framebuffer ohne Desktop/X) die Truetype-Fonts nutzen um z.B. ein lokal kompiliertes RunCPM zu starten (oder eine SimH-Emualtion) oder man kann per picocom/minicom dann auch sich direkt verbinden auf serielle Devices/Geraete.


    Da man fuer den Framebuffer und das Modem-Device je einer eigenen Linux-Gruppe zugehoeren muss, habe ich mit den User fbterm angelegt, der ich zuordnete zu den Gruppen video (fuer den Framebuffer), dialout (fuer /dev/modem) und sudo (fuer das setzen - symbolischer Link - des /dev/modem device)


    Zusaetzlich wollte ich einige sudo-Passowort-Eingaben umgehen und habe dem User fbterm in der /etc/passwd die gleiche Usernummer 0 (anstatt z.B. 1001) wie dem User root verpasst.
    (OK - das waere normal ein RIESEN Sicherheitsloch, aber der Pi als Terminal sollte wie bei PiGFX ohne Netzwerk laufen)


    Zur Nutzung des seriellen Ports vom Raspberry Pi habe ich die Login-Console per raspi-config -> Interface Options -> Disable shell on serial connection

    abgeschaltet, so dass ich /dev/serial0 als TTL-serial-device nutzen kann.


    Die Truetype-Fonts, die man nutzen moechte, muessen unter /usr/share/fonts/truetype installiert werden - in folgendem Verzeichnis-Format:

    Code
    /usr/share/fonts/truetype/vio/vio12x30.ttf
    /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf
    /usr/share/fonts/truetype/hack/Hack-Regular.ttf
    /usr/share/fonts/truetype/quicksand/Quicksand-Regular.ttf

    Fuer fbterm/mincom/picocom nutzt man zur Installation einfach apt: apt install fbterm picocom minicom


    Da picocom/minicom meiner Erfahrung nicht immer so gern mit /dev/serial0 oder /dev/ttyUSB0 mitspielen wollen, setze ich vor der Nutzung einen symblischen Link auf /dev/modem per

    ln -s /dev/serial0 /dev/modem

    ODER

    ln -s /dev/ttyUSB0 /dev/modem


    Konfigurations-Einstellungen fuer fbterm kann man in der Commandline uebergeben (klappt bei mir besser) oder auch in der .fbtermrc im Homedirectory des Users (fbterm hier)


    Beim Start unterstuetzt fbterm (am Ende der Commandline) die Uebergabe eines Commandos und dessen Parameter, hat aber wohl Probleme beim parsen mit einer groessen Anzahl Parameter / oder wenn die Optionen aus z.B. - / Zeichen bestehen.

    So habe ich .sh-Scripte erstellt (im Anhang als .zip), die als einzige Commandline ein shell-script aufrufen (das klappt bei mir einwandfrei)


    picocom ruft man auf mit picocom -b 19200 /dev/modem (bei 19200 Baud - wie mein RunCPM-Device eingestellt ist, klappt aber auch bei der Verbindung ueber ttyUSB0 - da wird dies durch USB scheinbar eh uebersetzt)

    picocom beendet man durch Ctrl-A Ctrl-X


    minicom ruft man auf per minicom runcpm.config wobei runcpm.config die vorher einmal gespeicherte Config innerhalb minicom ist.
    minicom beendet man per Ctrl-A Z X Enter


    Das ganze ist evtl. etwas viel/verwirrend - ich habe auch 1-2 Tage dran gebastelt. Aber ich beantworte gerne Fragen dazu :)


  • Sehr hübsch. Das Teil macht immerhin wirklich das, was es vorgibt zu tun. Auch wenn hin und wieder Grafikfehler auftauchen ( kleine Punkte hinter den Buchstaben ).

    Besonders elegant bedient man es mit der Option fbterm -r 2 :)

    Sieht auch sehr cool aus, wenn man damit ein ls -R /usr ausprobiert. Allerdings kann man da dann auch eines der fehlenden Sachen ausprobieren: Man kann mit ScrollLock nicht mehr anhalten; was aber auch bei normaler Rotation schon nicht geht.


    Man kann wohl auch ein Bild in den Hintergrund legen. Allerings war das empfohlene Tool "fbv" nicht zu bekommen - und ich lege sonst eher selten in den Hintergrund von Textkonsolen ... aber lustig wäre es ja mal.


    Eigentlich ist das ja schon ein eigenwilliger Ansatz, den Textmode durch Vollgrafik zu ersetzen und trotzdem damit einen Bildschirm voller Buchstaben anzuzeigen. Aber eigentlich macht das die normale Linux Konsole ja standardmäßig auch so - ich kann gar nicht sagen, ob moderne Grafikkarten nach ca. 1998 überhaupt noch einen Textmode mitbringen, oder ob das nicht letztlich alles "Grafik" ist.

    Die richtig moderne Lösung wäre natürlich dafür OpenGL zu benutzen und das als 3D Objekte an anzuzeigen oder als reine Texturen. Gab da mal einen sehr interessanten Artikel dazu, wo genau das mal vorgeschlagen worden ist, nur eben nicht fürs Terminal sondern als Variante für den normalen Grafik Viewport (X11, Win, MacOS). Gibt es aber vielleicht auch schon als "Demo" wie das hier.



    Ansonsten: Diese Übrung mit dem fbterm User und v.a. der Rechteumbiegerei kannst Du Dir eigentlich zumindest mit minicom komplett ersparen. Da läßt sich das device direkt in die config Datei eintragen. Du würdest also statt dieser seltsamen modem Links einfach zwei config-Dateien anlegen, einmal für /dev/ttyUSB0 und eine zweite für das "normale" /dev/ttyS0 .


    Daß das mit dem modem überhaupt funktioniert, liegt nur daran, daß minicom das modem Device einfach immer mit "absucht", ist ja schließlich die üblichste Anwendung für so ein Programm gewesen. Gewesen weil: Wer hat noch Modems ...

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

    Einmal editiert, zuletzt von ThoralfAsmussen ()

  • Ansonsten: Diese Übrung mit dem fbterm User und v.a. der Rechteumbiegerei kannst Du Dir eigentlich zumindest mit minicom komplett ersparen. Da läßt sich das device direkt in die config Datei eintragen.

    Im Moment mag ich picocom auch "nur" mehr, weil man da im Gegensatz zum minicom die "Startup-Message" per -q abschalten kann und per -t ein "Return/Enter" druecken kann um schon mal einen A> bzw. A0> prompt zu bekommen.

    Beim minicom muss man selbst Return/Enter druecken.

    Gibt man dem picocom vorher sogar noch eine echo-Ausgabe, sieht es fast aus wie eine echte Einschaltmeldung ;)

    Dafuer gibt es bei beiden leider keine Chance die Farben fuer normalen und bold Text zu definieren :(
    und die Wordstar-Cusorsteuerung kann man auch nicht umbiegen wie bei kiTTY unter Windows, so bleibt nur die normale Ctrl-ESDX Steuerung....


    Da fbterm bei mir als User 0 laeuft, bin ich mir auch nicht ganz sicher wo er die config-Datei hinschreibt - im Home von root oder fbterm.


    Leider fand ich dass minicom auch nicht sehr stabil die Config-Datei angenommen/geladen hat.
    Manchmal fand ich mich trotz Configdate wieder auf /dev/tty8 und 115200 Baud :(

  • Hmmm, wäre es da nicht besser ein TFT direkt an den ESP anzuschließen oder das BAS-Signal auszugeben? Mit PS/2 wäre ja ein direkter Tastaturanschluss möglich...

    wenn man ein portables/standalone Geraet haben will - ja ;)

    aber ich persoenlich bin wohl von meinen selbst ausgesuchten Mono-TTF-Fonts in hoher Aufloesung bei der Nutzung von puTTY/kiTTY so "verwoehnt" dass alternativ da erstmal nur fbterm mit den selben TTF-Fonts rankommt.

    "Dumm" ist nur, das minicom/picocom mir keine Farben darstellen wollen (obwohl min. einer davon mit "-c on" fuer Farbdarstellung gestartet werden kann)


    Evtl. liegt es dran, dass Worstar eigentlich nur normal/bold Font-Sequenzen ausgibt, aber keine echte Farbinformation.


    In puTTY/kiTTY kann man den normalen/bold Fonts eine eigene Farbe zuordnen,

    dann sieht Wordstar auch netter aus ;)


  • Da fbterm bei mir als User 0 laeuft, bin ich mir auch nicht ganz sicher wo er die config-Datei hinschreibt - im Home von root oder fbterm.

    Ein weiterer Grund, das mal sein zu lassen mit der "0".

    Ansonsten findet man die aber ganz gut, wenn man die original-Bezeichnung läßt. minicom.cap - springt einem geradzu entgegen.


    Wegen dem Umbiegen auf tty8 und die hohe Bytezahl/s - würde mich nicht wundern, wenn as letztlich auch an dem Pseudo-root-User liegt. Habe ich hier noch nie gesehen. Das minicom läuft eigentlich immer zuverlässif mit genau den Parametern, die man im eigenen 'config' einstellt. Vielleicht hast Du Dich auch nur verschrieben und er nimmt dann default Werte, wäre noch so eine Variante zu Erklärung.

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • "Dumm" ist nur, das minicom/picocom mir keine Farben darstellen wollen (obwohl min. einer davon mit "-c on" fuer Farbdarstellung gestartet werden kann)


    Evtl. liegt es dran, dass Worstar eigentlich nur normal/bold Font-Sequenzen ausgibt, aber keine echte Farbinformation.

    Schreib das doch mal den Entwicklern. Bei Minicom gibt es ja quasi schon eine (minimale) Farbverwaltung. Da sollte es nicht so schwer sein, da eine weitere Auswahl für Text Normal/Fett dazuzubauen.

    Meist freuen sich so Leute ja auch über Rückmeldungen, weil sie dann sehen, daß ihre Software tatsächlich aktiv benutzt wird.

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries