Pourquoi «cat ttyUSB0» ne produit-il pas de sortie?


13

J'ai connecté un récepteur infrarouge à un port USB ... (la dernière ligne de dmesg indique le fichier de l'appareil)

$ dmesg
[10496.596063] usb 7-2: new full-speed USB device number 2 using uhci_hcd
[10496.751112] usb 7-2: New USB device found, idVendor=0df7, idProduct=0620
[10496.751117] usb 7-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[10496.751120] usb 7-2: Product: USB-Serial Controller
[10496.751124] usb 7-2: Manufacturer: Prolific Technology Inc.
[10496.787441] usbcore: registered new interface driver usbserial
[10496.787467] usbcore: registered new interface driver usbserial_generic
[10496.787483] usbserial: USB Serial support registered for generic
[10496.795104] usbcore: registered new interface driver pl2303
[10496.795129] usbserial: USB Serial support registered for pl2303
[10496.795160] pl2303 7-2:1.0: pl2303 converter detected
[10496.807238] usb 7-2: pl2303 converter now attached to ttyUSB0

Ensuite, j'ai continué à l'essayer ...

$ sudo cat /dev/ttyUSB0

mais pas de sortie, se bloque simplement. Même si, lorsque j'appuie sur n'importe quel bouton de ma télécommande, la LED du récepteur infrarouge clignote, ce qui semble fonctionner.

Pourquoi est-ce possible?


Remarques:

  • la commande ci-dessus se ferme lorsque je supprime le périphérique du port USB et imprime "cat: ttyUSB0: No such device", et dmesg imprime 3 lignes:

     [13707.264086] usb 7-2: USB disconnect, device number 2 
     [13707.264894] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0
     [13707.264915] pl2303 7-2:1.0: device disconnected)
    
  • avec les fichiers de périphérique pour le clavier, cela fonctionne, par exemple:

     $ sudo cat /dev/input/by-id/usb-USB_USB_Keykoard-event-kbd 
    

    produit de nombreux caractères étranges sur la console lorsque j'appuie sur n'importe quelle touche du clavier

  • il en va de même sur d'autres ports USB

2
essayez stty raw -echo < /dev/ttyUSB0; cat -vte /dev/ttyUSB0plutôt.
Stéphane Chazelas

@ Stéphane Chazelas: de même rien ne se passe
nlognfan


Si vous n'obtenez aucune sortie, je soupçonne que c'est un problème de pilote ou que le matériel n'est pas correctement détecté / identifié. Cela pourrait également s'avérer utile: help.ubuntu.com/community/Lirc_USB-UIRT
slm

Veuillez noter que l'utilisation d'émetteurs-récepteurs infrarouges avec des ponts USB vers série ne fonctionnera généralement pas.
groxxda

Réponses:


3

Je pense que pour les périphériques série, vous devez définir le débit en bauds avant de faire quoi que ce soit. Je ne sais pas comment faire cela à partir de la ligne de commande afin de se mettre catau travail, mais vous pouvez utiliser un émulateur de terminal qui s'en occupe.

Essayez minicomou screen(c'est-à screen /dev/ttyUSB0 115200- dire - remplacez 115200 par le débit en bauds de votre récepteur IR.)


1

Ne tenez pas compte de la nécessité d'établir une connexion USB - elle a déjà été lancée lorsque vous avez branché l'appareil.

Si vous voulez simplement vérifier si cela fonctionne, utilisez dd if=/dev/ttyUSB0. Si vous voulez réellement lire ces caractères, vous avez besoin d'un terminal série. Utilisez minicom(CLI, besoin d'un manuel), picocom(pourrait le comprendre par vous-même), cutecom(belle interface graphique, facile) ou screen(CLI, mais vraiment facile). Vous aurez besoin de connaître le débit en bauds. 90% c'est 115200 ou 9600, pourrait aussi bien être 57600, 38400 ou 19200.

Au fait, quel type de récepteur utilisez-vous? Pourriez-vous nous donner un lien vers une page ou une description de produit?


1

Cela peut ne pas aider, mais voici un problème similaire que j'ai eu dans le passé. Lorsque je récupère le fichier de périphérique pour ma souris directement (c'est-à-dire en utilisant cat /dev/input/by-id/usb-<mymouse>), j'obtiens une sortie similaire à ce que vous obtenez avec votre clavier (c'est-à-dire du charabia). Cependant, certains mouvements de la souris, comme le clic gauche, ne génèrent aucun caractère imprimable, donc le terminal n'affiche rien.

Bien sûr, la souris fait encore quelque chose, nous ne pouvons tout simplement pas le voir en catutilisant le fichier du périphérique. Heureusement, le noyau a une fonctionnalité intéressante appelée usbmon qui est utile pour l'écoute sur la sortie binaire brute des périphériques USB. En utilisant cela, nous pouvons voir exactement ce qui se passe lorsque nous effectuons (disons) un clic gauche, alors que faire la même chose via via /devne montre souvent rien.

Encore une fois, cela peut ne pas aider, mais voici comment utiliser usbmon:

  1. Assurez-vous que votre noyau a activé usbmon. La sortie de:
    zcat /proc/config.gz | grep USB_MON
    devrait avoir soit =mou =yen elle.

  2. Si c'est le cas =m, chargez le module avecsudo modprobe usbmon

  3. Pour vous assurer que toutes les sockets USB s'affichent au bon endroit, exécutez:
    ls /sys/kernel/debug/usb/usbmon
    Vous devriez voir quelque chose comme:
    0s 0u 1s 1t 1u 2s 2t 2u 3s 3t 3u 4s 4t 4u

Les différents nombres se réfèrent à différents ports USB, et ceux avec un 0 devant donnent la sortie agrégée de tous les ports USB. Ainsi, par exemple, l'exécution cat /sys/kernel/debug/usb/usbmon/0umontre exactement ce que fait l'appareil, même dans les cas où catle fichier /devne montre rien.

Que cela résout votre problème ou non, cela peut être utile à l'avenir, car c'est souvent un moyen plus utile d'écouter les périphériques USB que /dev.

Bonne chance :)


1

Pour moi, c'était la vitesse de transmission trop basse. La sortie est apparue une fois que j'ai reconfiguré le système (périphérique et port) pour utiliser 300 au lieu de 150.


-1

Il me semble que l'USB est un protocole qui nécessite que l'ordinateur initie la communication. Il n'est pas permis de parler seul. Ainsi, le pilote parle réellement dans le périphérique brut, puis capture la sortie. Cependant, ce n'est qu'une intuition, j'attendrai également une autre réponse pour confirmer mes suspensions.


Mais c'est une question sur un port série. Le fait que le port série soit connecté via USB n'est ni ici ni là.
Celada
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.