Conecté un receptor de infrarrojos a un puerto USB ... (la última línea de dmesg le dice al archivo del dispositivo)
$ 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
Luego lo probé ...
$ sudo cat /dev/ttyUSB0
pero sin salida, simplemente se cuelga. Aunque, cuando presiono cualquier botón en mi control remoto, el LED del dispositivo receptor de infrarrojos parpadea, por lo que parece funcionar.
¿Por qué podría ser eso?
notas:
el comando anterior se cierra cuando quito el dispositivo del puerto USB e imprime "cat: ttyUSB0: No such device", y dmesg imprime 3 líneas:
[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)
con los archivos de dispositivo para teclado esto funciona, por ejemplo:
$ sudo cat /dev/input/by-id/usb-USB_USB_Keykoard-event-kbd
produce muchos caracteres extraños en la consola cuando presiono cualquier tecla del teclado
- lo mismo ocurre en otros puertos USB también
stty raw -echo < /dev/ttyUSB0; cat -vte /dev/ttyUSB0
lugar.Respuestas:
Creo que para los dispositivos en serie hay que establecer la velocidad de transmisión antes de que hagan algo. No estoy seguro de cómo hacerlo desde la línea de comandos para poder
cat
trabajar, pero podría usar un emulador de terminal que se encargue de ello.Pruebe
minicom
oscreen
(es decirscreen /dev/ttyUSB0 115200
, reemplace 115200 con la velocidad en baudios de su receptor IR).fuente
No tenga en cuenta la respuesta sobre la necesidad de iniciar la conexión USB: ya se inició cuando enchufó el dispositivo.
Si solo quieres comprobar si está funcionando, úsalo
dd if=/dev/ttyUSB0
. Si realmente quiere leer esos caracteres, necesita un terminal en serie. Useminicom
(CLI, necesita manual),picocom
(puede resolverlo usted mismo),cutecom
(interfaz gráfica agradable, fácil) oscreen
(CLI, pero realmente fácil). Necesitará saber la velocidad en baudios. El 90% es 115200 o 9600, podría ser 57600, 38400 o 19200.Por cierto, ¿qué tipo de receptor estás usando? ¿Podría darnos un enlace a una página o descripción del producto?
fuente
Puede que esto no ayude, pero aquí hay un problema similar que tuve en el pasado. Cuando busco el archivo del dispositivo para mi mouse directamente (es decir, usando
cat /dev/input/by-id/usb-<mymouse>
) obtengo un resultado similar al que obtienes con tu teclado (es decir, galimatías). Sin embargo, algunos movimientos del mouse, como el clic izquierdo, no generan caracteres imprimibles, por lo que el terminal no muestra nada.Por supuesto, el mouse todavía está haciendo algo, simplemente no podemos verlo
cat
en el archivo del dispositivo. Afortunadamente, el núcleo tiene una característica ordenada llamada usbmon que es útil para espiar la salida binaria sin formato de los dispositivos usb. Usando eso, podemos ver exactamente lo que sucede cuando realizamos (digamos) un clic izquierdo, mientras que hacer lo mismo a través de a/dev
menudo no muestra nada.De nuevo, esto puede no ayudar, pero aquí está cómo usar usbmon:
Asegúrese de que su núcleo tenga habilitado usbmon. La salida de:
zcat /proc/config.gz | grep USB_MON
debería tener uno
=m
o=y
más.Si fue así
=m
, cargue el módulo consudo modprobe usbmon
Para asegurarse de que todos los sockets usb se muestren en el lugar correcto, ejecute:
ls /sys/kernel/debug/usb/usbmon
Debería ver algo como:
0s 0u 1s 1t 1u 2s 2t 2u 3s 3t 3u 4s 4t 4u
Los diferentes números se refieren a diferentes puertos USB, y los que tienen un 0 al frente dan la salida agregada de todos los puertos USB. Entonces, por ejemplo, la ejecución
cat /sys/kernel/debug/usb/usbmon/0u
muestra exactamente lo que está haciendo el dispositivo, incluso en los casoscat
en que el archivo/dev
no mostró nada.Si esto resuelve su problema o no, puede ser útil en el futuro, ya que a menudo es una forma más útil de espiar dispositivos USB que
/dev
.Buena suerte :)
fuente
Para mí fue el baudrate demasiado bajo. La salida apareció una vez que configuré el sistema (dispositivo y puerto) para usar 300 en lugar de 150.
fuente
Me parece recordar que el USB es un protocolo que requiere que la computadora inicie la comunicación. No está permitido hablar solo. Entonces, el controlador realmente se comunica con el dispositivo sin procesar y luego captura la salida. Sin embargo, eso es solo una corazonada, también esperaré otra respuesta para confirmar mis sospechas.
fuente