Consola serie en Mac con screen y /dev/tty.usbserial

Conecta el adaptador USB serie y ejecuta ls /dev/cu.* para encontrar su puerto, por ejemplo /dev/cu.usbserial-1420. Después ejecuta screen /dev/cu.usbserial-1420 9600 con la velocidad del equipo, a menudo 9600 o 115200, y pulsa Intro. Para salir de screen, pulsa Ctrl-A, luego K, luego Y.

Actualizada el . Ejecutado en macOS 27 con screen 4.00.03 y cu incluidos en el sistema: puertos listados con ls /dev/cu.*, screen abierto en segundo plano en un puerto interno con opciones stty, listado y cerrado con screen -X quit, y cu lanzado sin sudo para ver el error del bloqueo.

Encontrar el puerto serie

Un adaptador USB serie aparece como dos archivos en /dev. Lístalos antes y después de conectarlo: el nombre nuevo es tu puerto.

ls /dev/cu.*
/dev/cu.Bluetooth-Incoming-Port
/dev/cu.debug-console
/dev/cu.usbserial-1420

Los nombres típicos son cu.usbserial-XXXX para adaptadores FTDI y Prolific y cu.usbmodemXXXX para placas que se presentan como módem USB, como muchas placas con microcontrolador. El número cambia según el puerto USB que uses.

Cada puerto tiene también un gemelo /dev/tty.*. Usa el de cu. El dispositivo tty es para llamadas entrantes y espera una señal de portadora que un cable de consola rara vez envía, así que la sesión puede quedarse colgada sin salida.

Si no aparece ningún puerto nuevo, comprueba que macOS ve el adaptador:

ioreg -p IOUSB

Si aparece en la lista pero no tiene puerto, el chip necesita un driver de su fabricante. Si no aparece, prueba otro cable: algunos cables USB solo llevan corriente.

Conectar con screen

screen viene con macOS y es el terminal serie más rápido. Pásale el puerto y la velocidad:

screen /dev/cu.usbserial-1420 9600

La pantalla se queda en blanco. Es normal: una consola no muestra nada hasta que le envías algo, así que pulsa Intro y aparece el prompt. Después de la velocidad puedes añadir ajustes de línea al estilo de stty, separados por comas:

screen /dev/cu.usbserial-1420 115200,cs8,-ixon,-ixoff

Aquí cs8 significa 8 bits de datos, y -ixon,-ixoff desactivan el control de flujo por software.

Para salir de screen, pulsa Ctrl-A, luego K, luego Y. Ctrl-A y luego D solo separa la sesión: sigue en marcha y ocupa el puerto. Para encontrar y cerrar una sesión separada:

screen -ls
screen -r
screen -X -S 98339 quit

Para guardar una copia de todo lo que muestra el equipo, inicia screen con -L. Escribe un archivo llamado screenlog.0 en la carpeta actual.

Conectar con cu

cu es la otra herramienta incluida. En Mac necesita sudo, porque escribe un archivo de bloqueo en /var/spool/uucp. Sin él, cu se detiene con Line in use aunque el puerto esté libre. Es justo lo que pasó en nuestra prueba.

sudo cu -l /dev/cu.usbserial-1420 -s 9600

Para salir de cu, escribe ~. al principio de una línea, es decir Intro, luego virgulilla, luego punto. Si estás conectado al Mac por SSH, ssh captura antes la misma secuencia, así que escribe ~~.. La guía de secuencias de escape SSH explica por qué.

Velocidad, paridad y control de flujo

Los dos lados deben usar los mismos ajustes, o verás basura o nada. La notación habitual es la velocidad más 8N1: 8 bits de datos, sin paridad, 1 bit de parada.

EquipoAjuste habitual
Switches, routers, cortafuegos9600 8N1, sin control de flujo
Raspberry Pi, casi todas las placas Linux115200 8N1, sin control de flujo
Placas con microcontroladorLa que fije el firmware, a menudo 115200 o 9600
Módems antiguos y algunos equipos industrialesPueden usar 7E1 (7 bits de datos, paridad par) o RTS/CTS

Señales de un ajuste incorrecto: símbolos al azar indican velocidad incorrecta; texto con algunos caracteres mal apunta a la paridad o a los bits de datos; una salida que se para tras una pantalla apunta al control de flujo. Para ver cómo está configurado el puerto ahora mismo:

stty -f /dev/cu.usbserial-1420

En una Raspberry Pi, la consola serie también hay que activarla antes en el sistema. La guía de SSH para Raspberry Pi cubre el acceso por red cuando la consola ya ha hecho su trabajo.

Problemas habituales

  • Resource busy o Line in use. Otro programa ocupa el puerto, a menudo un screen separado. Encuéntralo con lsof /dev/cu.usbserial-1420 y ciérralo, o ejecuta screen -ls.
  • Pantalla en blanco. Pulsa Intro. Si sigue sin salir nada, revisa la velocidad y después si ese equipo necesita un cable null modem (cruzado) o un cable de consola rollover.
  • Líneas que bajan en escalera, o sin salto de línea. El equipo trata CR y LF de otra forma. Muchas consolas esperan solo CR al pulsar Intro.
  • Flechas o menús a pantalla completa mal dibujados. Ajusta TERM en el equipo para que coincida, mira unknown terminal type.

screen o un terminal serie dedicado

screen y cu bastan para un vistazo rápido. Un terminal serie para Mac dedicado ayuda cuando vuelves a menudo a los mismos equipos: recuerda el puerto y los ajustes de línea de cada uno, te lista los puertos y aguanta un cable que se desconecta. En cualquier caso, cuando el equipo ya está en la red, pasa a SSH para el trabajo diario.

Preguntas

¿En Mac uso /dev/tty.usbserial o /dev/cu.usbserial?

Usa /dev/cu. El dispositivo tty espera una señal de portadora que casi ningún cable de consola envía, así que screen puede quedarse sin mostrar nada. El dispositivo cu se abre al momento.

¿Cómo salgo de screen en un puerto serie?

Pulsa Ctrl-A, luego K, y responde Y. Si cierras la ventana de Terminal en su lugar, screen puede seguir en segundo plano ocupando el puerto, que luego responde Resource busy.

¿Por qué mi consola serie muestra caracteres raros?

La velocidad no es la correcta. Cierra la sesión y prueba las otras velocidades habituales, primero 9600 y 115200, luego 19200, 38400 y 57600.

¿Necesita el Mac un driver para un adaptador USB serie?

Las versiones recientes de macOS incluyen drivers para los chips más comunes. Si el adaptador aparece en ioreg -p IOUSB pero no aparece ningún puerto /dev/cu., instala el driver del fabricante del chip.

Fuentes

Más en SSH en cada sistema

Todas las guías