¿Por qué tengo /dev/ttyS* en Linux cuando mi computadora portátil no tiene puerto serie/RS232/COM1?

¿Por qué tengo /dev/ttyS* en Linux cuando mi computadora portátil no tiene puerto serie/RS232/COM1?

Estoy ejecutando Debian Wheezy y mi computadora portátil no tiene puerto serie. ¿Por qué tengo /dev/ttyS*y qué pasará cuando intente leerles/escribirles?

Mi configuración:

└──> ll /dev/ttyS*
crw-rw---T 1 root dialout 4, 64 Apr 30 09:21 /dev/ttyS0
crw-rw---T 1 root dialout 4, 65 Apr 30 09:21 /dev/ttyS1
crw-rw---T 1 root dialout 4, 66 Apr 30 09:21 /dev/ttyS2
crw-rw---T 1 root dialout 4, 67 Apr 30 09:21 /dev/ttyS3

└──> sudo cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:0 rx:0
1: uart:unknown port:000002F8 irq:3
2: uart:unknown port:000003E8 irq:4
3: uart:unknown port:000002E8 irq:3

└──> stty -g
6d02:5:4bf:8a3b:3:1c:7f:15:4:0:1:ff:11:13:1a:ff:12:f:17:16:ff:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0

└──> dmesg | grep tty
[    0.000000] console [tty0] enabled
[    0.653544] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    0.712718] 00:02: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

PD:AquíSe menciona el caso en el que el usuario tiene un puerto y en/dev tiene 4 pero yo no tengo ninguno.

Respuesta1

Es muy probable que el puerto ttyS0 realmente exista en su placa base. ¡Y muy posiblemente también haya un conector en la placa base para usarlo también! Cuando compré mi última placa, también llegué a esa conclusión (al ver el puerto en la lista), luego busqué todos los conectores en el manual de la placa. No había ningún conector directo al exterior, sólo un pequeño "cabecera". Así que pasé un cable a un conector externo db9 y ¡todo funciona!

Los siguientes tres ( ttyS1-S3) probablemente NO existan, pero se enumeran porque el controlador del puerto serie los probó, que es la acción predeterminada en muchos Linux. Consulte la página del manual setserial, que es la función que se llama cuando se inicia Linux. Dice:

Durante el proceso de inicio normal, solo se inicializan los puertos COM 1 a 4, utilizando los puertos de E/S predeterminados y los valores IRQ, como se detalla a continuación.

EDITAR: Por cierto, es fácil ver si ttyS*funcionan como archivos o no. Simplemente intenta enviarles algo mediante el comando de la consola:

cat <some_short_file> > /dev/ttyS1

Probablemente dará un I/O error, porque no hay ningún controlador conectado. Lo mismo ttyS0funcionará normalmente. El >comando redirige la salida del catcomando al puerto serie. cp shortfile /dev/ttyS0Funciona también.

EDITAR: ttyS1-S3 no están físicamente allí, así que no, no puedes usarlos. Hay otros dispositivos que puede utilizar como puertos virtuales, como pseudoterminales (pty) y dispositivos de bucle. ControlarWikipediay elpáginas man para ptys. Cuando los ptys son dispositivos de caracteres, puede utilizar dispositivos de bucle para la transferencia en bloque (por ejemplo, para discos virtuales).Wikipediaydocumentación de la página de manual.

Respuesta2

Estos puertos realmente existen en su placa base. Simplemente no están conectados a un puerto externo como lo están en (algunas) computadoras de escritorio.

información relacionada