Je suis nouveau dans le monde Linux et j'utilise actuellement Ubuntu 12.04. Il s'exécute dans une partition Windows. J'ai développé un programme python qui lit les données série d'un microcontrôleur via le port USB. Tout fonctionnait bien jusqu'à il y a deux jours quand il a commencé à planter. En saisissant dmesg | grep tty
dans la console, j'obtiens le résultat suivant :
[ 0.000000] console [tty0] enabled
[ 14.599394] cdc_acm 3-1:1.0: ttyACM0: USB ACM device
[ 290.236065] cdc_acm 3-1:1.0: ttyACM0: USB ACM device
[ 1105.915191] cdc_acm 3-1:1.0: ttyACM0: USB ACM device
Chaque fois que je connecte et déconnecte l'USB, j'obtiens une nouvelle ligne avec les mêmes données. La seule différence était le temps. Est-ce exact ou ai-je un problème. Toute aide serait appréciée. Merci
Mise à jour :
Le problème venait du microcontrôleur. Il redémarrait chaque fois qu'il ne recevait pas de colis d'aucun capteur pendant un certain temps. Le microcontrôleur est un routeur sur un réseau de capteurs sans fil. Chaque fois que le microcontrôleur a redémarré, son port de connexion a été incrémenté, par exemple ttyACM0
à ttyACM1
. Lors de la connexion du contrôleur à un Raspberry PI, cela a cessé de se produire.
Réponse acceptée :
-
Vérifiez l'ID du fournisseur USB, l'ID du produit et le numéro de série.
$ dmesg | grep usb [...] [11427.635362] usb 2-1.2: new high-speed USB device number 8 using ehci-pci [11427.730823] usb 2-1.2: New USB device found, idVendor=04e8, idProduct=685e [11427.730830] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [11427.730834] usb 2-1.2: Product: SAMSUNG [11427.730838] usb 2-1.2: Manufacturer: Android [11427.730842] usb 2-1.2: SerialNumber: S610275b03f86 [11427.742314] usb-storage 2-1.2:1.0: USB Mass Storage device detected [11427.742436] scsi8 : usb-storage 2-1.2:1.0 [11427.786013] usbcore: registered new interface driver cdc_acm
Ou
udevadm info -a /dev/ttyUSB1
peut être plus complet. -
Créez un nouveau fichier de règles udev. Exemple avec des règles pour téléphone Android, Arduino, Bus pirate et un kit ARM.
$ sudo nano /etc/udev/rules.d/99-my-usb-serial.rules SUBSYSTEM=="tty", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="685e", ATTRS{serial}=="S610275b03f86", SYMLINK+="android" SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A6008isP", SYMLINK+="arduino" SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A7004IXj", SYMLINK+="buspirate" SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTDIF46B", SYMLINK+="ttyUSB.ARM"
Références :
- Noms persistants pour les périphériques USB-série
- Démarrer avec BeagleBone et BeagleBone Black ou exactement mkudevrule.sh