Ich bin neu in der Linux-Welt und verwende derzeit Ubuntu 12.04. Es läuft in einer Windows-Partition. Ich habe ein Python-Programm entwickelt, das serielle Daten von einem Mikrocontroller über den USB-Anschluss einliest. Alles funktionierte gut bis vor zwei Tagen, als es anfing abzustürzen. Bei der Eingabe von dmesg | grep tty
In der Konsole bekomme ich folgende Ausgabe:
[ 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
Jedes Mal, wenn ich den USB anschließe und trenne, erhalte ich eine neue Zeile mit den gleichen Daten. Der einzige Unterschied war die Zeit. Stimmt das oder habe ich ein Problem. Jede Hilfe wäre willkommen. Danke
Aktualisieren:
Das Problem lag am Mikrocontroller. Es wurde jedes Mal neu gestartet, wenn es für einen bestimmten Zeitraum kein Paket von Sensoren erhielt. Der Mikrocontroller ist ein Router in einem drahtlosen Sensornetzwerk. Jedes Mal, wenn der Mikrocontroller neu gestartet wurde, wurde sein Verbindungsport inkrementiert, z. B. ttyACM0
zu ttyACM1
. Beim Anschließen des Controllers an einen Raspberry PI passierte dies nicht mehr.
Akzeptierte Antwort:
-
Überprüfen Sie die USB-Anbieter-ID, Produkt-ID und Seriennummer.
$ 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
Oder
udevadm info -a /dev/ttyUSB1
könnte vollständiger sein. -
Erstellen Sie eine neue udev-Regeldatei. Beispiel mit Regeln für Android-Telefon, Arduino, Buspirat und ein ARM-Kit.
$ 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"
Referenzen:
- Permanente Namen für USB-serielle Geräte
- Erste Schritte mit BeagleBone &BeagleBone Black oder genau mkudevrule.sh