¿Cómo puedo saber qué /dev/ttyS* es mi puerto serie?
Tengo un portátil que sólo tiene un puerto serie.
He entrado en:
/dev
directorio, y encontré:
ttyS0
ttyS1
ttyS2
ttyS3
¿Cómo sé cuál de esos “ttyS” se refiere a mi puerto serie?
Tengo un portátil que sólo tiene un puerto serie.
He entrado en:
/dev
directorio, y encontré:
ttyS0
ttyS1
ttyS2
ttyS3
¿Cómo sé cuál de esos “ttyS” se refiere a mi puerto serie?
Vea qué UARTs fueron detectadas en /proc/tty/driver/serial
. Una línea con uart:unknown
significa: nada detectado (y probablemente inexistente).
# cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:0 rx:0
1: uart:16550A port:000002F8 irq:3 tx:111780 rx:1321 RTS|DTR|DSR
2: uart:unknown port:000003E8 irq:4
3: uart:unknown port:000002E8 irq:3
Si hay algo conectado y manejando las líneas CTS, DSR o CD (estas son líneas de entrada) puedes incluso estar bastante seguro de que realmente hay algo… Lo mismo ocurre con el rx-byte-count.
Si necesitas hacer esto programáticamente leer la salida de dmesg puede ser problemático, en su lugar la carpeta /dev/serial/by-id tiene enlaces sym que se nombran con datos identificables de tu dispositivo y apuntan al /dev/tty* específico al que están conectados.
No estoy seguro de si esto es alguna regla especial de udev que es específica de la distribución, pero funciona bien en Ubuntu, hágame saber si funciona.
De ttyS0
a 3
corresponden a COM1
a 4
, respectivamente. Suelen tener los mismos recursos de hardware y no siempre son detectables, por lo que siempre existen.
También existe el comando setserial
que utiliza /proc/tty/driver/serial
para obtener sus datos.
# setserial -g /dev/ttyS[0123]
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3