#1 Le 23/11/2010, à 08: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, à 01:24)
Hors ligne
#2 Le 23/11/2010, à 09: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, à 09:23
- electronico
Re : [resolu] ttyUSB : les périphériques changent à chaque reboot ??!!
Merci beaucoup pour la réponse
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, à 09: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, à 00:19
- electronico
Re : [resolu] ttyUSB : les périphériques changent à chaque reboot ??!!
chopinhauer : Merci beaucoup de m'avoir fait découvrir udev !!
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)
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, à 00:26
- chopinhauer
Re : [resolu] ttyUSB : les périphériques changent à chaque reboot ??!!
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…
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)
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