Comment savoir quel / dev / ttyS * est mon port série?


Réponses:


32

Je pense que c'est cette commande:

dmesg | grep tty

L'exécuter sur ma propre boîte Linux (qui n'a qu'un seul port série) produit une seule ligne de sortie ttyS0. Essayez par vous-même, vous verrez ce que je veux dire.


Est-ce à dire qu'après avoir exécuté cette commande, si la réponse est ... console [tty0] activée ..., et aucun autre, n'importe quel périphérique est connecté à / dev / tty0 (désolé pour la bêtise apparente de la question)?
Hektor

1
Le seul problème est que la sortie dmesg peut être effacée - donc si vous l'exécutez trop tard, vous n'avez pas de chance. La recherche de / proc / tty / driver / serial semble la réponse la plus robuste, puis vérifiez que les interruptions rx augmentent en nombre lorsque vous écrivez des données sur ce port
Neil McGill

Désolé, que dois-je faire si je ne vois aucune sortie?
user3019105

si vous êtes actuellement dans un terminal sur ladite ligne série, vous pouvez simplement taper ttypour obtenir le nom de votre terminal. Je suppose que c'est ce que signifiait OP car ils ne posaient pas la question "quels ports série ont en gettycours d' exécution?"
Thom Nichols

14

Découvrez les UART détectés /proc/tty/driver/serial. Une ligne avec des uart:unknownmoyens: rien détecté (et probablement inexistant).

# 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 quelque chose est connecté et pilote les lignes CTS, DSR ou CD (ce sont des lignes d'entrée), vous pouvez même être à peu près sûr qu'il y a réellement quelque chose ... Il en va de même pour le nombre d'octets rx.


7

Si vous devez le faire, la lecture par programmation de la sortie de dmesg peut être gênante, mais le dossier / dev / serial / by-id a des liens sym qui sont nommés d'après les données identifiables de votre appareil et pointent vers le / dev / tty * spécifique sont connectés à.

Je ne sais pas s'il s'agit d'une règle udev spéciale qui est spécifique à la distribution, mais cela fonctionne bien dans Ubuntu, faites-moi savoir si cela fonctionne.


5

ttyS0par 3correspondent à COM1par 4, respectivement. Ils ont généralement les mêmes ressources matérielles et ne sont pas toujours détectables, ils existent donc toujours.


Merci d'avoir répondu. Alors disons que je veux dire à Linux que je veux que ttyS0 soit mappé à mon matériel de port série, que dois-je faire?
sivabudh

Vous utiliseriez setserialpour mapper les ressources utilisées par ttyS0 à celles de votre port série. linux.die.net/man/8/setserial Cependant, cela n'est normalement pas nécessaire, car tout ce qui dépasse COM4 possède généralement suffisamment de matériel auxiliaire pour permettre à Linux de le détecter et d'ajouter un périphérique série selon les besoins.
Ignacio Vazquez-Abrams

0

Il y a aussi la commande setserialqui utilise /proc/tty/driver/serialpour obtenir ses données.

# 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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.