28-05-2022, 06:53 PM
Bonjour jean luc
Effectivement au niveau de la reconnaissance des ports USB sous linux c'est la croix et la bannière n'en déplaise aux linuxiens pur jus.
Il était pourtant facile pour les programmeurs de linux d'attribuer les ports existants ,réels , en dur (hardware ) de leurs attribuer un n° de port séquentiel ordinal ( 1,2,3,4 par exemple cela parait facile hein ! ca l'est :-) ) ben non faut croire que la façon de Windows était trop facile, trop bête ou subtile . Vos numéros d'adresse dans votre rue c'est ordinal et non aléatoire .
Comment ferait-on pour retrouver une adresse ou recevoir son courrier ?
Voila j'ai fixé le problème si je puis dire .:-)
On va entrer dans le vif du sujet .
Tout d'abord chaque appareil USB posséde un numéro Vendeur (IdVendor) et un numéro appareil (IdProduct) et sur option un numéro de série mais surtout sans.
En dehors du problème ou on plug et déplug un appareil USB et que l'on se retouve avec l'adresse du port USB changé est dans une moindre mesure s'il est seul moins important que si ils sont deux avec la multiplication de nommage dénommage des ports USB .( Un cachet peut être ? :-) )
Il va donc falloir ruser . :-(
La commande lsub -v donne la liste des appareils USB connecté ( avec le port ethernet ??? oui oui )
lsusb -v
La commande sudo lsusb -v | grep idVendor\|idProduct\|iProduct\|iSerial'
pour etre sur des appareils USB connectés
ou alors la commande demesg et chercher dans la liste (long).
pffff !
tout d'abord regarder les devices path des appareils
lsub -t
Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
|__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
|__ Port 2: Dev 4, If 0, Class=Vendor Specific Class, Driver=ch341, 12M
|__ Port 5: Dev 6, If 0, Class=Vendor Specific Class, Driver=ch341, 12M
on prends donc port 1,2
et port 1,5
On va donc creer un fichier de régles (rules)
sudo nano /etc/udev/rules.d/usb-serial-plus.rules
Et on ajoute :
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", ATTRS{devpath}=="1.2", SYMLINK+="ttyUSB-Ond1"
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", ATTRS{devpath}=="1.5", SYMLINK+="ttyUSB-Ond2"
sans zéro dans SYMLINK ( linux grrr!)
Un Ctrl+W et un Ctrl+X et on reboot
ou sans reboot sudo udevadm control --reload
Dans la config du logiciel on choisit ensuite les ports concernés.
nb:on peut par python en utilisant les bibliotheques pyserial ou autre lires les info usb serie et surtout creer le fichier rules par exemples ou en C++
à bientôt
ps : ce sont des exemples.
ChrisPV
Effectivement au niveau de la reconnaissance des ports USB sous linux c'est la croix et la bannière n'en déplaise aux linuxiens pur jus.
Il était pourtant facile pour les programmeurs de linux d'attribuer les ports existants ,réels , en dur (hardware ) de leurs attribuer un n° de port séquentiel ordinal ( 1,2,3,4 par exemple cela parait facile hein ! ca l'est :-) ) ben non faut croire que la façon de Windows était trop facile, trop bête ou subtile . Vos numéros d'adresse dans votre rue c'est ordinal et non aléatoire .
Comment ferait-on pour retrouver une adresse ou recevoir son courrier ?
Voila j'ai fixé le problème si je puis dire .:-)
On va entrer dans le vif du sujet .
Tout d'abord chaque appareil USB posséde un numéro Vendeur (IdVendor) et un numéro appareil (IdProduct) et sur option un numéro de série mais surtout sans.
En dehors du problème ou on plug et déplug un appareil USB et que l'on se retouve avec l'adresse du port USB changé est dans une moindre mesure s'il est seul moins important que si ils sont deux avec la multiplication de nommage dénommage des ports USB .( Un cachet peut être ? :-) )
Il va donc falloir ruser . :-(
La commande lsub -v donne la liste des appareils USB connecté ( avec le port ethernet ??? oui oui )
lsusb -v
La commande sudo lsusb -v | grep idVendor\|idProduct\|iProduct\|iSerial'
pour etre sur des appareils USB connectés
ou alors la commande demesg et chercher dans la liste (long).
pffff !
tout d'abord regarder les devices path des appareils
lsub -t
Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
|__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
|__ Port 2: Dev 4, If 0, Class=Vendor Specific Class, Driver=ch341, 12M
|__ Port 5: Dev 6, If 0, Class=Vendor Specific Class, Driver=ch341, 12M
on prends donc port 1,2
et port 1,5
On va donc creer un fichier de régles (rules)
sudo nano /etc/udev/rules.d/usb-serial-plus.rules
Et on ajoute :
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", ATTRS{devpath}=="1.2", SYMLINK+="ttyUSB-Ond1"
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", ATTRS{devpath}=="1.5", SYMLINK+="ttyUSB-Ond2"
sans zéro dans SYMLINK ( linux grrr!)
Un Ctrl+W et un Ctrl+X et on reboot
ou sans reboot sudo udevadm control --reload
Dans la config du logiciel on choisit ensuite les ports concernés.
nb:on peut par python en utilisant les bibliotheques pyserial ou autre lires les info usb serie et surtout creer le fichier rules par exemples ou en C++
à bientôt
ps : ce sont des exemples.
ChrisPV