La consola serie de mi pasarela Pi muestra códigos de escape en lugar de colores y htop es un desastre
Traducido del English por IA ·
Otra vez yo (la persona del amoníaco del gallinero). El Pi del gallinero ahora funciona como una pequeña pasarela: lee el sensor de NH3 y dos sondas de temperatura y publica en Hermetry. El Wi-Fi en el cobertizo es pésimo, así que cuando se cae conecto un cable USB-TTL CP2102 al UART GPIO del Pi y uso PuTTY en mi portátil a 115200.El inicio de sesión funciona, pero el script de la pasarela imprime líneas de log coloreadas y por serie veo cosas como:
^[[32mINFO^[[0m published nh3_ppm=9.1
^[[33mWARN^[[0m wifi reconnect (3)
Y htop dibuja basura y salta de línea a los 80 columnas, incluso con la ventana de PuTTY maximizada. Por SSH ambos se ven perfectos. ¿La conexión serie está simplemente limitada así?
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?
Traducido del English por IA ·
¿Probaste picocom en lugar de PuTTY? Siempre me pareció raro PuTTY para el puerto serie.
Try picocom instead of PuTTY? I always found PuTTY weird on serial.
Traducido del English por IA ·
Lo mismo con picocom desde mi equipo Linux, lo he probado.
Same thing in picocom from my Linux box, I tried.
Traducido del English por IA ·
El problema está en el lado de la Pi, no en el programa de terminal. Faltan dos cosas en un inicio de sesión serie que SSH te da gratis.El tipo de terminal: SSH transmite tu TERM (xterm-256color desde PuTTY). El getty serie establece TERM en vt220, que no tiene color, así que los programas que comprueban TERM recurren a alternativas o imprimen códigos sin procesar. Compruébalo con echo $TERM.El tamaño de la ventana: la línea serie no tiene forma de indicarle a la Pi qué tamaño tiene tu ventana, así que asume 80×24 y nunca cambia.Puse esto en ~/.bashrc en cada equipo al que me conecto por consola:
case "$(tty)" in
/dev/ttyS0|/dev/ttyAMA0|/dev/serial0)
export TERM=xterm-256color
stty rows 50 cols 160 # match your PuTTY window
;;
esac
Si instalas el paquete xterm puedes escribir resize en lugar de fijar el tamaño a mano; pregunta al terminal y lo establece.Los colores de tu script deberían funcionar entonces, siempre que la biblioteca de registro compruebe 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.
Traducido del English por IA ·
Nota aparte: el mismo script también escribe en journald cuando se ejecuta como servicio, y los códigos de color en el journal resultan molestos. La mayoría de las bibliotecas de registro permiten desactivar el color cuando stdout no es una 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.
Traducido del English por IA ·
+1 al fragmento de bashrc, en nuestras pasarelas es igual. Yo también añadiría export LANG=C.UTF-8 ahí si ves que los caracteres de dibujo de cajas se rompen en 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.
Traducido del English por IA ·
TERM era exactamente vt220. Con el bloque de bashrc ya salen los colores y htop a todo el ancho por el puerto serie. También añadí el consejo de Eric: el servicio se ejecuta con el color desactivado, así el journal queda limpio. ¡Gracias a todos!
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!
- Debes estar registrado para responder a este debate.
Únete a la conversación
Inicia sesión para preguntar y responder, dar me gusta a las publicaciones útiles y marcar la respuesta que resolvió tu problema. Cada aportación suma puntos y niveles.

