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

33

J'ai un ordinateur portable qui n'a qu'un seul port série.

Je suis allé dans:

/dev 

répertoire, et j'ai trouvé:

ttyS0
ttyS1
ttyS2
ttyS3

Comment savoir lequel de ces "ttyS" fait référence à mon port série?

sivabudh
la source
connexes stackoverflow.com/questions/2530096/...
Ciro Santilli新疆改造中心法轮功六四事件

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.

sivabudh
la source
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.

Robert Siemer
la source
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.

santileortiz
la source
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.

Ignacio Vazquez-Abrams
la source
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
Daniël W. Crompton
la source