Malheureusement , les ports série sont non-plugnplay, si le noyau ne sait pas quel appareil est branché. Après avoir lu un HowTo tutoriel , j'ai eu l'idée de travailler.
Le /dev/
répertoire des systèmes d'exploitation similaires à Unix contient des fichiers nommés ttySn (n étant un nombre) . La plupart d'entre eux ne correspondent pas aux appareils existants. Pour trouver ceux qui le font, lancez une commande:
$ dmesg | grep ttyS
[ 0.872181] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 0.892626] 00:07: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[ 0.915797] 0000:01:01.0: ttyS4 at I/O 0x9800 (irq = 19) is a ST16650V2
[ 0.936942] 0000:01:01.1: ttyS5 at I/O 0x9c00 (irq = 18) is a ST16650V2
Ci-dessus, un exemple de sortie de mon PC. Vous pouvez voir l'initialisation de quelques ports série:
ttyS0
, ttyS1
, ttyS4
, ttyS5
.
L'un d'eux aura une tension positive sur un périphérique branché. Ainsi, en comparant le contenu du fichier /proc/tty/driver/serial
avec et sans le périphérique branché, nous pouvons facilement trouver le ttyS associé à notre périphérique. Alors maintenant:
$ sudo cat /proc/tty/driver/serial> /tmp/1
(débrancher) un appareil
$ sudo cat /proc/tty/driver/serial> /tmp/2
Ensuite, vérifiez la différence entre les deux fichiers. Ci-dessous une sortie de mon PC:
$ diff /tmp/1 /tmp/2
2c2
< 0: uart:16550A port:000003F8 irq:4 tx:6 rx:0
---
> 0: uart:16550A port:000003F8 irq:4 tx:6 rx:0 CTS|DSR
En comparant les trois nombres avec la sortie dmesg, nous pouvons déterminer lequel est le port:
[ 0.872181] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
Par conséquent, notre appareil est /dev/ttyS0
, mission accomplie!