GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

USB- und Mikrocontroller-Kommunikationsproblem?

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:

  1. Ü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.

  2. 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

Ubuntu
  1. Kommunikation zwischen Prozessen in Linux:Sockets und Signale

  2. Die 4 besten kostenlosen und Open-Source-Teamkommunikationssoftware

  3. So deaktivieren Sie USB-Anschlüsse, CD-ROM- und Diskettenlaufwerke in Ubuntu

  4. Kommunikation zwischen Pam und Pam-aware Daemon verstehen?

  5. Problem mit der Blockgröße von USB Startup Disk Creator?

Vollständige Anleitung zum dreifachen Booten von Windows, Lubuntu und Debian

So formatieren Sie Festplatten, USB-Sticks und SD-Karten in elementarem Betriebssystem / Ubuntu

So erstellen Sie einen Multiboot-USB in Linux und Windows

Manuelles Mounten/Unmounten eines USB-Geräts unter Ubuntu 20.04 und 22.04

Scroll- und Anzeigeproblem (Bug?) in Libreoffice 3.6 und höher?

USB-Flash-Laufwerk – geleert, aber es ist kein freier Speicherplatz (und kein belegter Speicherplatz?!) darauf?