Warum erzeugt "cat ttyUSB0" keine Ausgabe?

13

Ich habe einen Infrarotempfänger an einen USB-Anschluss angeschlossen ... (die letzte Zeile von dmesg gibt Auskunft über die Gerätedatei)

$ 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

Dann probierte ich es weiter ...

$ sudo cat /dev/ttyUSB0

aber keine Ausgabe, hängt einfach. Obwohl die LED des Infrarotempfängers blinkt, wenn ich eine beliebige Taste auf meiner Fernbedienung drücke, scheint dies zu funktionieren.

Warum könnte das so sein?


Anmerkungen:

  • Der obige Befehl wird beendet, wenn ich das Gerät vom USB-Anschluss entferne und "cat: ttyUSB0: No such device" drucke und dmesg 3 Zeilen druckt:

     [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)
    
  • mit den gerätedateien für tastatur funktioniert das zB:

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

    erzeugt viele seltsame Zeichen auf der Konsole, wenn ich eine beliebige Taste auf der Tastatur drücke

  • Gleiches gilt auch für andere USB-Anschlüsse
nlognfan
quelle
2
versuchen Sie es stty raw -echo < /dev/ttyUSB0; cat -vte /dev/ttyUSB0stattdessen.
Stéphane Chazelas
@ Stephane Chazelas: In ähnlicher Weise passiert nichts
nlognfan
Wenn Sie keine Ausgabe erhalten, liegt vermutlich ein Treiberproblem vor oder die Hardware wurde nicht richtig erkannt / identifiziert. Dies könnte sich auch als hilfreich erweisen: help.ubuntu.com/community/Lirc_USB-UIRT
slm
Bitte beachten Sie, dass die Verwendung von Infrarot-Transceivern mit USB-zu-Seriell-Brücken normalerweise nicht funktioniert.
Groxxda

Antworten:

3

Ich denke, für serielle Geräte muss man die Baudrate einstellen, bevor sie etwas tun. Ich bin nicht sicher, wie ich das von der Kommandozeile aus machen soll, um catan die Arbeit zu kommen, aber Sie könnten einen Terminal-Emulator verwenden, der sich darum kümmert.

Versuchen Sie minicomoder screen(dh screen /dev/ttyUSB0 115200ersetzen Sie 115200 durch die Baudrate Ihres IR-Empfängers.)

LawrenceC
quelle
1

Ignorieren Sie die Antwort, dass eine USB-Verbindung hergestellt werden muss. Diese wurde bereits beim Anschließen des Geräts hergestellt.

Wenn Sie nur prüfen möchten, ob es funktioniert, verwenden Sie dd if=/dev/ttyUSB0. Wenn Sie diese Zeichen tatsächlich lesen möchten, benötigen Sie ein serielles Terminal. Verwenden Sie minicom(CLI, brauchen Handbuch), picocom(können Sie selbst herausfinden), cutecom(schöne grafische Oberfläche, einfach) oder screen(CLI, aber sehr einfach). Sie müssen die Baudrate kennen. 90% ist es entweder 115200 oder 9600, könnte auch 57600, 38400 oder 19200 sein.

Übrigens, welche Art von Empfänger verwenden Sie? Können Sie uns einen Link zu einer Produktseite oder Beschreibung geben?

Арсений Пичугин
quelle
1

Dies kann nicht helfen, aber hier ist ein ähnliches Problem, das ich in der Vergangenheit hatte. Wenn ich die Gerätedatei für meine Maus direkt öffne (dh benutze cat /dev/input/by-id/usb-<mymouse>), erhalte ich eine ähnliche Ausgabe wie mit Ihrer Tastatur (dh Kauderwelsch). Einige Mausbewegungen, wie das Klicken mit der linken Maustaste, generieren jedoch keine druckbaren Zeichen, sodass das Terminal nichts anzeigt.

Natürlich macht die Maus immer noch etwas, wir können es einfach nicht sehen, indem wir catdie Gerätedatei öffnen. Glücklicherweise hat der Kernel eine nette Funktion namens usbmon, die hilfreich ist, um den rohen Binärausgang von USB-Geräten zu belauschen. Auf diese Weise können wir genau sehen, was passiert, wenn wir einen Linksklick ausführen (sagen wir es), während das Gleiche über /devoft nichts anzeigt.

Auch dies kann nicht helfen, aber hier ist, wie man Usbmon verwendet:

  1. Stellen Sie sicher, dass auf Ihrem Kernel usbmon aktiviert ist. Die Ausgabe von:
    zcat /proc/config.gz | grep USB_MON
    sollte entweder =moder =ydarin enthalten sein.

  2. Wenn ja =m, laden Sie das Modul mitsudo modprobe usbmon

  3. Um sicherzustellen, dass alle USB-Buchsen an der richtigen Stelle angezeigt werden, führen
    ls /sys/kernel/debug/usb/usbmon
    Sie Folgendes aus:
    0s 0u 1s 1t 1u 2s 2t 2u 3s 3t 3u 4s 4t 4u

Die verschiedenen Nummern beziehen sich auf verschiedene USB-Ports, und die mit einer 0 voran geben die aggregierte Ausgabe aller USB-Ports an. Wenn Sie beispielsweise ausführen cat /sys/kernel/debug/usb/usbmon/0u, wird genau angezeigt, was das Gerät gerade tut, auch wenn catdie Datei nicht angezeigt wird /dev.

Unabhängig davon, ob dies Ihr Problem löst oder nicht, kann es in Zukunft hilfreich sein, da es häufig eine hilfreichere Methode zum Abhören von USB-Geräten ist als /dev.

Viel Glück :)

Lass uns ein Abenteuer erleben
quelle
1

Für mich war die Baudrate zu niedrig. Die Ausgabe wurde angezeigt, nachdem ich das System (Gerät und Port) neu konfiguriert hatte, um 300 statt 150 zu verwenden.

Raigedas
quelle
-1

Ich erinnere mich, dass USB ein Protokoll ist, bei dem der Computer die Kommunikation initiieren muss. Es ist nicht erlaubt, alleine zu sprechen. Der Treiber spricht also tatsächlich mit dem Raw-Gerät und erfasst dann die Ausgabe. Das ist jedoch nur eine Vermutung, ich werde auch auf eine andere Antwort warten, um meine Vermutungen zu bestätigen.

orion
quelle
Dies ist jedoch eine Frage zu einer seriellen Schnittstelle. Die Tatsache, dass die serielle Schnittstelle mit USB verbunden ist, ist weder hier noch da.
Celada