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.
| Equipo | Ajuste habitual |
|---|---|
| Switches, routers, cortafuegos | 9600 8N1, sin control de flujo |
| Raspberry Pi, casi todas las placas Linux | 115200 8N1, sin control de flujo |
| Placas con microcontrolador | La que fije el firmware, a menudo 115200 o 9600 |
| Módems antiguos y algunos equipos industriales | Pueden 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 busyoLine in use. Otro programa ocupa el puerto, a menudo un screen separado. Encuéntralo conlsof /dev/cu.usbserial-1420y ciérralo, o ejecutascreen -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
TERMen 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
- screen(1), manual de GNU Screen
- cu(1), manual de Taylor UUCP
- stty(1), manual de FreeBSD
- Documentación de Raspberry Pi, configuración de UART