le pilote d'option correspondait correctement à l'ID USB et charge le pilote pour ce périphérique. Par exemple
# lsusb
Bus 001 Device 002: ID 19d2:0031 ONDA Communication S.p.A. ZTE MF636
Bus 001 Device 003: ID 12d1:14ac Huawei Technologies Co., Ltd.
Il crée également des périphériques ttyUSBX pour gérer le matériel
crw-rw---- 1 root uucp 188, 0 Jul 4 13:48 /dev/ttyUSB0
crw-rw---- 1 root uucp 188, 1 Jul 4 13:49 /dev/ttyUSB1
crw-rw---- 1 root uucp 188, 2 Jul 4 13:35 /dev/ttyUSB2
crw-rw---- 1 root uucp 188, 3 Jul 4 13:37 /dev/ttyUSB3
crw-rw---- 1 root uucp 188, 4 Jul 4 13:37 /dev/ttyUSB4
crw-rw---- 1 root uucp 188, 5 Jul 4 13:37 /dev/ttyUSB5
crw-rw---- 1 root uucp 188, 6 Jul 4 13:37 /dev/ttyUSB6
crw-rw---- 1 root uucp 188, 7 Jul 4 13:37 /dev/ttyUSB7
Cependant, j'ai plus d'un périphérique série USB et je veux savoir quel ttyUSB est pour quel USBID. Ex./dev/ttyUSB1 -> 19d2: 0031
Savez-vous à quel moment je peux obtenir ces informations?
Jetez un œil au système de fichiers sysfs. Un exemple pour ma série USB:
$ lsusb
Bus 003 Device 016: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
$ ls -l /sys/bus/usb-serial/devices
lrwxrwxrwx 1 root root 0 Jul 4 17:37 ttyUSB0 -> ../../../devices/pci0000:00/0000:00:1c.0/0000:02:00.0/usb3/3-1/3-1:1.0/ttyUSB0
$ $ grep PRODUCT= /sys/bus/usb-serial/devices/ttyUSB0/../uevent
PRODUCT=67b/2303/300
Comme vous pouvez le voir, ttyUSB0
correspond à 067b:2303
sur mon ordinateur. Un autre endroit à explorer est /sys/class/tty/
. Faites attention aux liens symboliques.
Vous pouvez essayer de voir si vos appareils sont enregistrés sous/dev/serial/by-id /
ls -l/dev/serial/by-id
Ces noms doivent être cohérents et pointeront (lien symbolique) vers le bon ttyUSBx
J'ai eu un problème similaire .
Écrivez ceci à /etc/udev/rules.d/50-usb.rules
SUBSYSTEM=="tty", ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0031", SYMLINK+="ONDA"
SUBSYSTEM=="tty", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14ac", SYMLINK+="HUAWEI"
jusqu'à la fin. Redémarrez.
Vous pouvez maintenant utiliser /dev/ONDA
pour accéder à votre appareil ONDA.
Si vous souhaitez que les utilisateurs non root puissent les utiliser, ajoutez
, MODE="0666"
à la fin de chaque ligne.
J'utiliserais udev et j'écrirais quelques règles qui créent des liens symboliques pour les appareils.
Pour obtenir suffisamment d'informations pour distinguer les appareils, essayez quelque chose comme ceci pour tous les appareils:
$ udevadm info --query all --name /dev/ttyUSB0 --attribute-walk
Les commandes suivantes me donneront la liste des noms de périphériques ttyUSB associés à 19d2: 0016 (qui est l'ID "mode modem" d'un ZTE MF831 LTE stick, le vôtre peut différer)):
for i in $(find -L /sys/bus/usb/devices/ -maxdepth 2 -name "ttyUSB*"); do
egrep -i "v19d2p0016(.*)in02" $i/../modalias >/dev/null && echo "/dev/${i##*/}"
done
Cela va parcourir une liste de fichiers avec le nom de fichier ttyUSB *, y compris les liens symboliques, dans/sys/bus/usb/devices. Dans les résultats, nous rechercherons un fichier nommé modalias et rechercherons une chaîne contenant l'ID de fournisseur "v" "19d2" et l'ID de produit "p" 0016. Si la sortie correspond, nous ferons écho à une chaîne préfixée avec "/ dev/"devant l'USB? Nom. Afaik le premier ou généralement le dernier (numéro le plus élevé) est le port modem pour les appareils ZTE. Vous pouvez répercuter les résultats dans un fichier dans/tmp/et head -n1 ou tail -n1 les lignes en conséquence. Si vous avez des concentrateurs, vous devrez probablement augmenter la profondeur maximale.
Ce n'est pas la manière la plus élégante, mais cela fonctionnera sur presque toutes les variantes de Linux.