La console série de ma passerelle Pi affiche des codes d'échappement au lieu des couleurs et htop est un désastre
Traduit de English par IA ·
Me revoilà (la personne avec l’ammoniac du poulailler). Le Pi du poulailler fonctionne désormais comme une petite passerelle : il lit le capteur de NH3 et deux sondes de température, puis publie vers Hermetry. Le Wi-Fi dans le cabanon est très mauvais, donc quand il coupe je branche un câble USB-TTL CP2102 sur l’UART GPIO du Pi et j’utilise PuTTY sur mon ordinateur portable à 115200.La connexion fonctionne, mais mon script de passerelle affiche des lignes de log colorées et, sur la liaison série, j’obtiens des choses comme :
^[[32mINFO^[[0m published nh3_ppm=9.1
^[[33mWARN^[[0m wifi reconnect (3)
Et htop affiche n’importe quoi et revient à la ligne à 80 colonnes, même avec la fenêtre PuTTY maximisée. En SSH, les deux rendent parfaitement. La liaison série est-elle simplement limitée comme ça ?
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?
Traduit de English par IA ·
Et si tu essayais picocom au lieu de PuTTY ? J’ai toujours trouvé PuTTY bizarre sur le port série.
Try picocom instead of PuTTY? I always found PuTTY weird on serial.
Traduit de English par IA ·
Même chose avec picocom depuis mon poste Linux, j’ai essayé.
Same thing in picocom from my Linux box, I tried.
Traduit de English par IA ·
Le problème vient du côté Pi, pas du programme de terminal. Deux éléments manquent à une connexion série que SSH fournit gratuitement.Le type de terminal : SSH transmet votre TERM (xterm-256color depuis PuTTY). Le getty série définit TERM à vt220, qui n’a pas de couleurs ; les programmes qui vérifient TERM reviennent donc à un mode de secours ou affichent des codes bruts. Vérifiez avec echo $TERM.La taille de la fenêtre : la ligne série n’a aucun moyen d’indiquer au Pi la taille de votre fenêtre, donc il suppose 80×24 et ne change jamais.J’ai mis ceci dans ~/.bashrc sur chaque machine à laquelle je me connecte en console :
case "$(tty)" in
/dev/ttyS0|/dev/ttyAMA0|/dev/serial0)
export TERM=xterm-256color
stty rows 50 cols 160 # match your PuTTY window
;;
esac
Si vous installez le paquet xterm, vous pouvez taper resize au lieu de coder la taille en dur : il interroge le terminal et la définit.Les couleurs de votre script devraient alors fonctionner, à condition que la bibliothèque de journalisation vérifie TERM.
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.
Traduit de English par IA ·
Remarque : le même script écrit aussi dans journald lorsqu’il tourne en tant que service, et les codes couleur dans le journal sont gênants. La plupart des bibliothèques de journalisation permettent de désactiver la couleur lorsque stdout n’est pas un tty.
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.
Traduit de English par IA ·
+1 pour le snippet bashrc, c’est pareil sur nos passerelles. J’ajouterais aussi export LANG=C.UTF-8 là-dedans si les caractères de dessin de boîte se cassent dans htop.
+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.
Traduit de English par IA ·
TERM était bien vt220. Avec le bloc bashrc, on a maintenant les couleurs et htop en pleine largeur sur la liaison série. J’ai aussi ajouté le conseil d’Eric : le service tourne sans couleur, ainsi le journal reste propre. Merci à tous !
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!
- Vous devez être connecté pour répondre à ce sujet.
Rejoignez la discussion
Connectez-vous pour poser et répondre à des questions, aimer les messages utiles et marquer la réponse qui a résolu votre problème. Chaque contribution rapporte des points et des niveaux.

