Soy nuevo en el mundo de Linux y actualmente uso Ubuntu 12.04. Se ejecuta en una partición de Windows. Desarrollé un programa de python que lee datos en serie desde un microcontrolador a través del puerto USB. Todo funcionaba bien hasta hace dos días cuando comenzó a fallar. Al ingresar dmesg | grep tty
en la consola obtengo el siguiente resultado:
[ 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
Cada vez que conecto y desconecto el USB me sale una nueva línea con los mismos datos. La única diferencia ha sido el tiempo. Es esto correcto o tengo un problema. Cualquier ayuda sería apreciada. Gracias
Actualización:
El problema estaba en el microcontrolador. Se reiniciaba cada vez que no recibía un paquete de ningún sensor durante un período de tiempo. El microcontrolador es un enrutador en una red de sensores inalámbricos. Cada vez que el microcontrolador se reiniciaba, su puerto de conexión se incrementaba, por ejemplo, ttyACM0
a ttyACM1
. Al conectar el controlador a una Raspberry PI, esto dejó de suceder.
Respuesta aceptada:
-
Verifique la identificación del proveedor USB, la identificación del producto y el número de serie.
$ 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
O
udevadm info -a /dev/ttyUSB1
puede ser más completo. -
Cree un nuevo archivo de reglas de udev. Ejemplo con reglas para teléfono Android, Arduino, Bus pirata y 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"
Referencias:
- Nombres persistentes para dispositivos serie USB
- Primeros pasos con BeagleBone y BeagleBone Black o exactamente mkudevrule.sh