web-dev-qa-db-fra.com

Identifiez quel périphérique USB est / dev / ttyusb0

Je travaille avec une distribution Linux (Raspbian) et j'ai deux adaptateurs série USB que je me connecte au microcontrôleur. Chaque fois que je connecte des adaptateurs, les ports série "/ dev/ttyusb0" et "/ dev/ttyusb1" apparaissent; Ici "/ dev/ttyusb0" est l'adaptateur physiquement connecté en premier (identifié d'abord par le système).

Maintenant, je cherche un moyen de déterminer quel adaptateur est lequel en cas de redémarrage d'un microcontrôleur. C'est à dire. Les deux adaptateurs sont restés branchés sur leurs ports USB et je ne peux pas débrancher physiquement/revenir à la force de l'adaptateur "USB0".

La recherche de base m'a conduit à ces commandes (images pour référence):

ls /dev/ttyUSB* Pour énumérer les ports USB-série actifs.

enter image description here

lsusb Pour plus d'informations sur les bus USB et les périphériques connectés.

enter image description here

Existe-t-il un moyen de relier ces deux résultats (ou une alternative) pour déterminer ce dont j'ai besoin? Par exemple, dans les images ci-dessus "/ dev/ttyusb0" est "Device de bus 001 008: ID 1A86: ..." Mais comment constater que sur le logiciel (de préférence en utilisant python mais a Le script shell pourrait fonctionner aussi).

Merci

3
DanMicroS

Puisque vous avez mentionné que vous voulez le faire de Python, pyudev a le code d'exemple suivant pour accéder à tout udev sait sur un périphérique identifié par un fichier de périphérique:

from pyudev import Context, Device
context = Context()
device = Devices.from_device_file(context, '/dev/sda')

Je crois que cela devrait fonctionner très bien avec /dev/ttyUSB0 Aussi.

Voir https://pydudev.readthedocs.io/en/latest/api/pyudev.html#yledev.devices.from_device_file

Une fois que vous avez l'instance UDEM de l'appareil In python, vous pouvez accéder à device.attributes Et device.properties Pour obtenir une mine d'informations, y compris les descripteurs Vid, PID, String, etc. sur. La documentation dit que

toutes les méthodes et opérateurs de dictionnaires bien connus (par exemple .keys(), .items(), in) sont disponibles pour accéder aux propriétés du périphérique.

3
Ben Voigt