GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Problema di comunicazione USB e microcontrollore?

Sono nuovo nel mondo Linux e attualmente sto usando Ubuntu 12.04. È in esecuzione in una partizione di Windows. Ho sviluppato un programma Python che legge i dati seriali da un microcontrollore tramite la porta USB. Tutto funzionava bene fino a due giorni fa, quando ha iniziato a bloccarsi. Inserendo dmesg | grep tty nella console ottengo il seguente output:

[    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

Ogni volta che collego e disconnetto l'USB ottengo una nuova linea con gli stessi dati. L'unica differenza era il tempo. È giusto o ho un problema. Qualsiasi aiuto sarebbe apprezzato. Grazie

Aggiornamento:

Il problema era con il microcontrollore. Si riavviava ogni volta che non riceveva un pacchetto da alcun sensore per un periodo di tempo. Il microcontrollore è un router su una rete di sensori wireless. Ogni volta che il micro controller si riavviava, la sua porta di connessione veniva incrementata, ad esempio ttyACM0 a ttyACM1 . Dopo aver collegato il controller a un Raspberry PI, ciò ha smesso di accadere.

Risposta accettata:

  1. Controlla l'ID fornitore USB, l'ID prodotto e il numero di 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
    

    Oppure udevadm info -a /dev/ttyUSB1 potrebbe essere più completo.

  2. Crea un nuovo file di regole udev. Esempio con regole per telefono Android, Arduino, Bus pirate e 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"
    

Riferimenti:

  • Nomi persistenti per dispositivi USB-seriale
  • Guida introduttiva a BeagleBone e BeagleBone Black o esattamente mkudevrule.sh

Ubuntu
  1. Comunicazione tra processi in Linux:socket e segnali

  2. Come masterizzare un'immagine ISO su DVD e USB utilizzando dd

  3. I 4 migliori software di comunicazione per team gratuiti e open source

  4. Come disabilitare le porte USB, CD-ROM e unità floppy in Ubuntu

  5. Le migliori app di messaggistica e comunicazione per Ubuntu

Guida completa al triplo avvio di Windows, Lubuntu e Debian

Come formattare il disco rigido, l'unità flash USB e le schede SD nel sistema operativo elementare / Ubuntu

Come realizzare una USB multiboot in Linux e Windows

Come montare/smontare manualmente un dispositivo USB su Ubuntu 20.04 e 22.04

Problemi di scorrimento e visualizzazione (bug?) In Libreoffice 3.6 e versioni successive?

Chiavetta USB:vuota ma non c'è spazio libero (e spazio utilizzato?!) su di essa?