“cat ttyUSB0”이 출력을 생성하지 않는 이유는 무엇입니까?


13

적외선 수신기를 USB 포트에 연결했습니다 ... (dmesg의 마지막 줄은 장치 파일을 알려줍니다)

$ 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

그런 다음 시도해 보았습니다 ...

$ sudo cat /dev/ttyUSB0

그러나 출력이 없으면 간단히 중단됩니다. 그럼에도 불구하고 리모컨의 아무 버튼이나 누르면 적외선 수신기 장치의 LED가 깜박이므로 작동하는 것 같습니다.

왜 그런가요?


노트:

  • 위의 명령은 USB 포트에서 장치를 제거하고 "cat : ttyUSB0 : No such device"를 표시하고 dmesg가 3 줄을 인쇄하면 종료됩니다.

     [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)
    
  • 키보드의 장치 파일을 사용하면 다음과 같이 작동합니다.

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

    키보드에서 아무 키나 누르면 콘솔에서 이상한 문자가 많이 나옵니다.

  • 다른 USB 포트에서도 마찬가지입니다.

2
stty raw -echo < /dev/ttyUSB0; cat -vte /dev/ttyUSB0대신 시도하십시오 .
Stéphane Chazelas

@ Stephane Chazelas : 마찬가지로 아무 일도 일어나지 않습니다
nlognfan


출력을 얻지 못하면 드라이버 문제 또는 하드웨어가 올바르게 감지 / 식별되지 않은 것으로 의심됩니다. 도움이 될 수도 있습니다 : help.ubuntu.com/community/Lirc_USB-UIRT
slm

USB- 직렬 브리지와 함께 적외선 트랜시버를 사용하면 일반적으로 작동하지 않습니다.
groxxda

답변:


3

직렬 장치의 경우 보드 속도가 설정되기 전에 보드 속도를 설정해야한다고 생각합니다. 명령 줄에서 어떻게 작동하는지 잘 모르겠지만 cat터미널 에뮬레이터를 사용하여 처리 할 수 ​​있습니다.

시도 minicom하거나 screen(즉 screen /dev/ttyUSB0 115200, 115200을 IR 수신기의 전송 속도로 교체하십시오.)


1

USB 연결을 시작해야한다는 답변은 무시하십시오. 이미 장치를 연결했을 때 시작되었습니다.

작동하는지 확인하려면을 사용하십시오 dd if=/dev/ttyUSB0. 실제로 해당 문자를 읽으려면 직렬 터미널이 필요합니다. 사용 minicom(CLI, 필요 설명서), picocom(자신에 그것을 알아낼 수), cutecom(좋은 그래픽 인터페이스, 쉬운) 또는 screen(CLI하지만 정말 쉽습니다). 전송 속도를 알아야합니다. 90 %는 115200 또는 9600이며 57600, 38400 또는 19200 일 수도 있습니다.

그런데 어떤 종류의 수신기를 사용하고 있습니까? 제품 페이지 나 설명에 대한 링크를 제공해 주시겠습니까?


1

이것은 도움이되지 않을 수도 있지만 여기에 내가 과거에 겪었던 비슷한 문제가 있습니다. 마우스의 장치 파일을 직접 (예 :) 사용 cat /dev/input/by-id/usb-<mymouse>하면 키보드로 얻는 것과 유사한 출력을 얻습니다 (예 : 횡설수설). 그러나 왼쪽 클릭과 같은 일부 마우스 동작은 인쇄 가능한 문자를 생성하지 않으므로 터미널에 아무 것도 표시되지 않습니다.

물론, 마우스는 여전히 무언가를하고 있습니다. 단지 cat장치 파일을 볼 수는 없습니다 . 다행스럽게도 커널에는 usbmon이라는 깔끔한 기능이있어 usb 장치의 원시 바이너리 출력을 도청하는 데 도움이됩니다. 이를 사용하여 왼쪽 클릭을 수행 할 때 발생하는 상황을 정확하게 볼 수 있지만 동일한 작업을 수행하면 /dev아무 것도 나타나지 않습니다.

다시 말하지만 이것은 도움이되지 않지만 usbmon을 사용하는 방법은 다음과 같습니다.

  1. 커널에 usbmon이 활성화되어 있는지 확인하십시오. 의 출력은 또는 안에
    zcat /proc/config.gz | grep USB_MON
    있어야 합니다.=m=y

  2. 인 경우 =m모듈을sudo modprobe usbmon

  3. 모든 USB 소켓이 올바른 위치에 표시되도록하려면 다음을 실행
    ls /sys/kernel/debug/usb/usbmon
    하십시오.
    0s 0u 1s 1t 1u 2s 2t 2u 3s 3t 3u 4s 4t 4u

다른 번호는 다른 USB 포트를 나타내며 앞에 0이있는 포트는 모든 USB 포트의 집계 된 출력을 나타냅니다. 예를 들어 running cat /sys/kernel/debug/usb/usbmon/0ucat파일에 /dev아무것도 표시되지 않은 경우에도 장치가 수행하는 작업을 정확하게 보여줍니다 .

이렇게하면 문제가 해결되는지 여부에 관계없이 향후에 도움이 될 수 있습니다.이 방법은 종종 USB 장치를 도청하는 데보다 유용한 방법이기 때문 /dev입니다.

행운을 빕니다 :)


1

저에게는 보오율이 너무 낮습니다. 150 대신 300을 사용하도록 시스템 (장치 및 포트)을 재구성하면 출력이 나타납니다.


-1

USB는 컴퓨터가 통신을 시작해야하는 프로토콜이라는 것을 기억합니다. 스스로 말할 수 없습니다. 따라서 드라이버는 실제로 원시 장치와 통신 한 다음 출력을 캡처합니다. 그러나 그것은 직감 일 뿐이며, 또 다른 답변이 기다릴 때까지 기다릴 것입니다.


그러나 이것은 직렬 포트에 관한 질문입니다. 직렬 포트가 USB에 연결되어 있다는 사실은 여기도 없습니다.
Celada
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.