GNU/Linux >> Tutoriels Linux >  >> Linux

Comment trouver quel port série est utilisé ?

La question :

J'ai branché un appareil (c'est-à-dire un modem GSM) via un port série (alias RS-232), et j'ai besoin de voir avec quel fichier dans /dev/ filesystem ce périphérique était lié, pour pouvoir communiquer avec lui. Malheureusement, il n'y a pas de fichier nouvellement créé dans /dev/ rien ne peut être vu dans dmesg production. Cela semble donc être une question difficile.

Contexte :

Je n'avais jamais travaillé avec un périphérique série, alors hier, quand un besoin est apparu, j'ai essayé de le rechercher sur Google, mais je n'ai rien trouvé d'utile. J'ai passé quelques heures à chercher et je souhaite partager une réponse trouvée car cela pourrait être utile à quelqu'un.

Réponse acceptée :

Malheureusement, les ports série ne sont pas PlugNPlay, donc le noyau ne sait pas quel périphérique a été branché. Après avoir lu un HowTo tutoriel J'ai l'idée de travail.

Le /dev/ Le répertoire d'unix comme les systèmes d'exploitation contient des fichiers nommés ttySn (avec 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 va avoir une tension positive sur un appareil branché. Donc en comparant le contenu du fichier /proc/tty/driver/serial avec et sans l'appareil branché, nous pouvons facilement trouver le ttyS lié à notre appareil. Alors, maintenant, faites :

$ sudo cat /proc/tty/driver/serial> /tmp/1

(dé)brancher un appareil

$ sudo cat /proc/tty/driver/serial> /tmp/2

Vérifiez ensuite 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 !


Linux
  1. Comment utiliser `which` sur une commande alias ?

  2. Linux - Comment trouver des processus utilisant le port série ?

  3. Comment utiliser la commande Linux find pour rechercher des fichiers

  4. Shell - Comment trouver le répertoire d'une commande ?

  5. Comment utiliser regex avec la commande find ?

Comment utiliser le transfert de port SSH

Comment trouver le numéro de port d'un service sous Linux

Comment trouver quel service écoute sur un port particulier

Comment utiliser la commande which sous Linux

Comment puis-je surveiller le trafic du port série ?

Comment trouver quelle version de Java dans le dossier installé Java ?