Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/11/2010, à 09:47

electronico

[resolu] ttyUSB : les périphériques changent à chaque reboot ??!!

Bonjour à tous,

Ubuntu 10.04.1 X86_64 desktop (2.6.32-25-generic #45-Ubuntu SMP Sat Oct 16 19:52:42 UTC 2010 x86_64 GNU/Linux)

Connectés:
1 modem GSM (RS-232) relié par un adaptateur 2*RS-232/USB
1 relais USB à base de FT232 (Future Technology Devices International)

Les drivers sont correctement installés et les périphériques reconnus.

Le double adaptateur RS-232/USB est monté sur les ports /dev/ttyUSB0 et /dev/ttyUSB1
Le relais est monté sur /dev/ttyUSB2

Je peux donc communiquer avec eux en leur envoyant des commandes AT (par minicom ou par bash)

Le problème : je reboot le desktop (sans rien débrancher), et là :
Le relais est monté sur /dev/ttyUSB0
Le double adaptateur RS-232/USB est monté sur les ports /dev/ttyUSB1 et /dev/ttyUSB2

En gros : les scripts d'automatisation que je fais ne fonctionnent plus après un reboot, parceque les périphériques ne sont plus montés au même endroit !!!

Est-ce un bug de Ubuntu ???
Encore si je débranchais des périphériques, je pourrais comprendre, mais là je ne touche à rien ... juste un reboot ...

Par avance merci si vous avez des idées ...

Dernière modification par electronico (Le 24/11/2010, à 02:24)

Hors ligne

#2 Le 23/11/2010, à 10:13

chopinhauer

Re : [resolu] ttyUSB : les périphériques changent à chaque reboot ??!!

Le nom du périphérique dépend de l'ordre de reconnaissance des périphériques au démarrage. Vu que vous voulez une nom persistant pour votre périphérique, postez le résultat de :

sudo udevadm info --query=all --name=ttyUSB0
sudo udevadm info --query=all --name=ttyUSB1
sudo udevadm info --query=all --name=ttyUSB2

pour voir les autres noms connus des périphériques et les attributs de celles-ci pour pouvoir leur donner un nom fixe.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#3 Le 23/11/2010, à 10:23

electronico

Re : [resolu] ttyUSB : les périphériques changent à chaque reboot ??!!

Merci beaucoup pour la réponse smile

Voici :

sudo udevadm info --query=all --name=ttyUSB0
P: /devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0/ttyUSB0/tty/ttyUSB0
N: ttyUSB0
S: char/188:0
S: serial/by-path/pci-0000:00:1d.1-usb-0:1:1.0-port0
S: serial/by-id/usb-9710_7720-if00-port0
E: UDEV_LOG=3
E: DEVPATH=/devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0/ttyUSB0/tty/ttyUSB0
E: MAJOR=188
E: MINOR=0
E: DEVNAME=/dev/ttyUSB0
E: SUBSYSTEM=tty
E: ID_PORT=0
E: ID_PATH=pci-0000:00:1d.1-usb-0:1:1.0
E: ID_VENDOR=9710
E: ID_VENDOR_ENC=9710
E: ID_VENDOR_ID=9710
E: ID_MODEL=7720
E: ID_MODEL_ENC=7720
E: ID_MODEL_ID=7720
E: ID_REVISION=0100
E: ID_SERIAL=9710_7720
E: ID_TYPE=generic
E: ID_BUS=usb
E: ID_USB_INTERFACES=:ff00ff:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=moschip7720
E: ID_IFACE=00
E: ID_VENDOR_FROM_DATABASE=MosChip Semiconductor
E: DEVLINKS=/dev/char/188:0 /dev/serial/by-path/pci-0000:00:1d.1-usb-0:1:1.0-port0 /dev/serial/by-id/usb-9710_7720-if00-port0
sudo udevadm info --query=all --name=ttyUSB1
P: /devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0/ttyUSB1/tty/ttyUSB1
N: ttyUSB1
S: char/188:1
S: serial/by-path/pci-0000:00:1d.1-usb-0:1:1.0-port1
S: serial/by-id/usb-9710_7720-if00-port1
E: UDEV_LOG=3
E: DEVPATH=/devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0/ttyUSB1/tty/ttyUSB1
E: MAJOR=188
E: MINOR=1
E: DEVNAME=/dev/ttyUSB1
E: SUBSYSTEM=tty
E: ID_PORT=1
E: ID_PATH=pci-0000:00:1d.1-usb-0:1:1.0
E: ID_VENDOR=9710
E: ID_VENDOR_ENC=9710
E: ID_VENDOR_ID=9710
E: ID_MODEL=7720
E: ID_MODEL_ENC=7720
E: ID_MODEL_ID=7720
E: ID_REVISION=0100
E: ID_SERIAL=9710_7720
E: ID_TYPE=generic
E: ID_BUS=usb
E: ID_USB_INTERFACES=:ff00ff:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=moschip7720
E: ID_IFACE=00
E: ID_VENDOR_FROM_DATABASE=MosChip Semiconductor
E: DEVLINKS=/dev/char/188:1 /dev/serial/by-path/pci-0000:00:1d.1-usb-0:1:1.0-port1 /dev/serial/by-id/usb-9710_7720-if00-port1
sudo udevadm info --query=all --name=ttyUSB2
P: /devices/pci0000:00/0000:00:1a.2/usb5/5-1/5-1:1.0/ttyUSB2/tty/ttyUSB2
N: ttyUSB2
S: char/188:2
S: serial/by-path/pci-0000:00:1a.2-usb-0:1:1.0-port0
S: serial/by-id/usb-FTDI_AUDON_UDIN-44_USB_Relay_Opto_Unit_A4SG9MRO-if00-port0
E: UDEV_LOG=3
E: DEVPATH=/devices/pci0000:00/0000:00:1a.2/usb5/5-1/5-1:1.0/ttyUSB2/tty/ttyUSB2
E: MAJOR=188
E: MINOR=2
E: DEVNAME=/dev/ttyUSB2
E: SUBSYSTEM=tty
E: ID_PORT=0
E: ID_PATH=pci-0000:00:1a.2-usb-0:1:1.0
E: ID_VENDOR=FTDI
E: ID_VENDOR_ENC=FTDI
E: ID_VENDOR_ID=0403
E: ID_MODEL=AUDON_UDIN-44_USB_Relay_Opto_Unit
E: ID_MODEL_ENC=AUDON\x20UDIN-44\x20USB\x20Relay\x2fOpto\x20Unit
E: ID_MODEL_ID=6001
E: ID_REVISION=0600
E: ID_SERIAL=FTDI_AUDON_UDIN-44_USB_Relay_Opto_Unit_A4SG9MRO
E: ID_SERIAL_SHORT=A4SG9MRO
E: ID_TYPE=generic
E: ID_BUS=usb
E: ID_USB_INTERFACES=:ffffff:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=ftdi_sio
E: ID_IFACE=00
E: ID_VENDOR_FROM_DATABASE=Future Technology Devices International, Ltd
E: ID_MODEL_FROM_DATABASE=FT232 USB-Serial (UART) IC
E: DEVLINKS=/dev/char/188:2 /dev/serial/by-path/pci-0000:00:1a.2-usb-0:1:1.0-port0 /dev/serial/by-id/usb-FTDI_AUDON_UDIN-44_USB_Relay_Opto_Unit_A4SG9MRO-if00-port0

Hors ligne

#4 Le 23/11/2010, à 10:56

chopinhauer

Re : [resolu] ttyUSB : les périphériques changent à chaque reboot ??!!

Donc vous pouvez utiliser soit les alias déjà donnés à ce périphériques, c'est-à-dire /dev/serial/by-id/usb-FTDI_AUDON_UDIN-44_USB_Relay_Opto_Unit_A4SG9MRO-if00-port0 et /dev/erial/by-id/usb-9710_7720-if00-port0 (et 1), soit rajouter un nouveau nom en mettant un fichier de règles .rules dans /etc/udev/rules.d :

SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ENV{ID_VENDOR} = "FTDI", ENV{ID_MODEL} = "AUDON_UDIN-44_USB_Relay_Opto_Unit", SYMLINK+="monttyUSB0"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ENV{ID_VENDOR} = "9710", ENV{ID_MODEL} = "7720", ENV{ID_PORT} = "0", SYMLINK+="monttyUSB1"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ENV{ID_VENDOR} = "9710", ENV{ID_MODEL} = "7720", ENV{ID_PORT} = "1", SYMLINK+="monttyUSB2"

Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#5 Le 24/11/2010, à 01:19

electronico

Re : [resolu] ttyUSB : les périphériques changent à chaque reboot ??!!

chopinhauer : Merci beaucoup de m'avoir fait découvrir udev !! cool

Voici ce qui fonctionne :

sudo nano /etc/udev/rules.d/usb.rules

(les fichiers sont lus par ordre alphabétique par udev, le dernier écrase donc les précédents)

SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ENV{ID_VENDOR}=="FTDI", ENV{ID_SERIAL}=="FTDI_AUDON_UDIN-44_USB_Relay_Opto_Unit_A4SG9MRO", SYMLINK+="myttyUSB0"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ENV{ID_VENDOR}=="9710", ENV{ID_MODEL}=="7720", ENV{ID_PORT}=="0", SYMLINK+="myttyUSB1"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ENV{ID_VENDOR}=="9710", ENV{ID_MODEL}=="7720", ENV{ID_PORT}=="1", SYMLINK+="myttyUSB2"

La syntaxe était quasiment OK, sauf qu'il n'y avait qu'un = dans votre code et donc les valeurs étaient attribuées au lieu de "matcher", les résultats m'ont un peu décontenancé sur le coup, heureusement il y a

man udev

J'ai beaucoup" joué" avec ATTRS{} et

udevadm info --attribute-walk --name=ttyUSBx

aussi...

La grosse galère est que les modifications ne sont pas prises en compte avec

sudo service udev restart

ni

sudo service udev reload

ni

sudo /etc/init.d/udev restart|reload

et qu'il faut donc redémarrer le PC à chaque fois (il m'a fallu une trentaine de reboot pour tester différentes solutions) mad

Je vais peut-être sussurer à la Ubuntu Team d'essayer d'implémenter pour les ports série un système d'UUID comme pour les disques durs et de jeter un oeil à ce udev ...

En tout cas merci encore chopinhauer pour cette aide !!

Hors ligne

#6 Le 24/11/2010, à 01:26

chopinhauer

Re : [resolu] ttyUSB : les périphériques changent à chaque reboot ??!!

electronico a écrit :

La syntaxe était quasiment OK, sauf qu'il n'y avait qu'un = dans votre code et donc les valeurs étaient attribuées au lieu de "matcher", les résultats m'ont un peu décontenancé sur le coup, heureusement il y a

man udev

Oops, c'est vrai. Trop habitué au shell, je suppose…

electronico a écrit :

La grosse galère est que les modifications ne sont pas prises en compte avec

sudo service udev restart

ni

sudo service udev reload

ni

sudo /etc/init.d/udev restart|reload

et qu'il faut donc redémarrer le PC à chaque fois (il m'a fallu une trentaine de reboot pour tester différentes solutions) mad

Udev applique les règles à la détection du périphérique. Pour les USB il suffit de débrancher et brancher. Sinon il y a udevadm test.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne