“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/0u은 cat파일에 /dev아무것도 표시되지 않은 경우에도 장치가 수행하는 작업을 정확하게 보여줍니다 .

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

행운을 빕니다 :)


1

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


-1

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


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