Serielle Konsole zu meinem Pi-Gateway zeigt Escape-Codes statt Farben, und htop ist ein Durcheinander
Von English mit KI übersetzt ·
Ich schon wieder (der mit dem Ammoniak im Hühnerstall). Der Stall-Pi läuft jetzt als kleines Gateway: Er liest den NH3-Sensor und zwei Temperaturfühler aus und veröffentlicht die Daten bei Hermetry. Das WLAN im Schuppen ist miserabel, deshalb stecke ich bei Verbindungsabbrüchen ein CP2102-USB-TTL-Kabel an die GPIO-UART des Pi und nutze PuTTY auf meinem Laptop mit 115200.Die Anmeldung funktioniert, aber mein Gateway-Skript gibt farbige Logzeilen aus, und über die serielle Verbindung sehe ich Dinge wie:
^[[32mINFO^[[0m published nh3_ppm=9.1
^[[33mWARN^[[0m wifi reconnect (3)
Und htop zeichnet Müll und bricht bei 80 Spalten um, selbst bei maximiertem PuTTY-Fenster. Über SSH sieht beides perfekt aus. Ist die serielle Verbindung einfach so eingeschränkt?
Me again (chicken coop ammonia person). The coop Pi now runs as a small gateway: reads the NH3 sensor and two temperature probes and publishes to Hermetry. The Wi-Fi out in the shed is terrible, so when it drops I plug a CP2102 USB-TTL cable into the Pi’s GPIO UART and use PuTTY on my laptop at 115200.
Logging in works, but my gateway script prints coloured log lines and over serial I get stuff like:
^[[32mINFO^[[0m published nh3_ppm=9.1
^[[33mWARN^[[0m wifi reconnect (3)
And htop draws garbage and wraps at 80 columns even with a maximised PuTTY window. Over SSH both look perfect. Is serial just limited like that?
Von English mit KI übersetzt ·
Probier picocom statt PuTTY? Ich fand PuTTY bei seriellen Verbindungen immer seltsam.
Try picocom instead of PuTTY? I always found PuTTY weird on serial.
Von English mit KI übersetzt ·
Dasselbe Problem tritt auch in picocom auf meiner Linux-Kiste auf, habe ich ausprobiert.
Same thing in picocom from my Linux box, I tried.
Von English mit KI übersetzt ·
Es liegt an der Pi-Seite, nicht am Terminalprogramm. Bei einer seriellen Anmeldung fehlen zwei Dinge, die SSH dir kostenlos mitliefert.Der Terminaltyp: SSH übergibt deinen TERM-Wert (xterm-256color von PuTTY). Das serielle getty setzt TERM auf vt220, das keine Farben kennt, daher fallen Programme, die TERM prüfen, zurück oder geben Rohcodes aus. Prüfe es mit echo $TERM.Die Fenstergröße: Die serielle Leitung hat keine Möglichkeit, dem Pi die Größe deines Fensters mitzuteilen. Deshalb nimmt er 80×24 an und ändert das nie.Ich habe das auf jedem Gerät, auf das ich seriell zugreife, in ~/.bashrc eingetragen:
case "$(tty)" in
/dev/ttyS0|/dev/ttyAMA0|/dev/serial0)
export TERM=xterm-256color
stty rows 50 cols 160 # match your PuTTY window
;;
esac
Wenn du das Paket xterm installierst, kannst du statt der fest codierten Größe resize eingeben. Das fragt das Terminal ab und setzt die Werte.Die Farben deines Skripts sollten dann funktionieren, sofern die Logging-Bibliothek TERM prüft.
It’s the Pi side, not the terminal program. Two things are missing on a serial login that SSH gives you for free.
The terminal type: SSH passes your TERM along (xterm-256color from PuTTY). The serial getty sets TERM to vt220, which has no colour, so programs that check TERM fall back or print raw codes. Check with echo $TERM.
The window size: there’s no way for the serial line to tell the Pi how big your window is, so it assumes 80×24 and never changes.
I put this in ~/.bashrc on every box I console into:
case "$(tty)" in
/dev/ttyS0|/dev/ttyAMA0|/dev/serial0)
export TERM=xterm-256color
stty rows 50 cols 160 # match your PuTTY window
;;
esac
If you install the xterm package you can type resize instead of hardcoding the size, it asks the terminal and sets it.
Your script’s colours will then work, assuming the logging library checks TERM.
Von English mit KI übersetzt ·
Nebenbemerkung: Dasselbe Skript schreibt auch in journald, wenn es als Dienst läuft, und Farbcodes im Journal sind lästig. Die meisten Logging-Bibliotheken erlauben es, die Farbe abzuschalten, wenn stdout kein tty ist.
Side note: the same script also logs to journald when it runs as a service, and colour codes in the journal are annoying. Most logging libs let you turn colour off when stdout isn’t a tty.
Von English mit KI übersetzt ·
+1 zum bashrc-Snippet, bei unseren Gateways genauso. Ich würde dort auch export LANG=C.UTF-8 hinzufügen, falls in htop Rahmenzeichen kaputtgehen.
+1 to the bashrc snippet, same on our gateways. I’d add export LANG=C.UTF-8 there too if you see box-drawing characters break in htop.
Von English mit KI übersetzt ·
TERM war exakt vt220. Mit dem bashrc-Block gibt es jetzt Farben und ein htop in voller Breite über die serielle Verbindung. Außerdem habe ich Erics Tipp umgesetzt, der Dienst läuft ohne Farbe, damit das Journal sauber bleibt. Danke an alle!
TERM was vt220, exactly. With the bashrc block it’s colours and a full-width htop over serial now. I also added Eric’s tip, the service runs with colour off so the journal is clean. Thanks all!
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.
Mitdiskutieren
Melde dich an, um Fragen zu stellen und zu beantworten, hilfreiche Beiträge mit „Gefällt mir“ zu markieren und die Antwort zu kennzeichnen, die dein Problem gelöst hat. Jeder Beitrag bringt Punkte und Stufen.

