Чому “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

але виходу немає, просто висить. Навіть незважаючи на те, що, як я натискаю будь-яку кнопку на пульті дистанційного керування, світлодіод інфрачервоного приймача блимає, так що, здається, працює.

Чому це могло бути?


примітки:

  • наведена вище команда завершується, коли я виймаю пристрій з порту USB і друкує "cat: ttyUSB0: Такого пристрою немає", і 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замість цього.
Стефан Шазелас

@ Стефан Шазелас: аналогічно нічого не відбувається
nlognfan


Якщо ви не отримуєте жодного результату, я б підозрював, що його проблема з драйвером або що апаратне забезпечення не було правильно виявлено / ідентифіковано. Це може виявитися корисним також: help.ubuntu.com/community/Lirc_USB-UIRT
slm

Зауважте, що використання інфрачервоних приймачів з мостами USB-до-серійного мосту зазвичай не працює.
groxxda

Відповіді:


3

Я думаю, що для серійних пристроїв ви повинні встановити швидкість передачі даних, перш ніж вони щось роблять. Я не впевнений, як це зробити з командного рядка для того, щоб приступити catдо роботи, але ви можете використовувати емулятор терміналу, який піклується про це.

Спробуйте minicomабо screen(тобто screen /dev/ttyUSB0 115200- замініть 115200 на швидкість передачі даних вашого ІЧ-приймача.)


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. Так, наприклад, біг cat /sys/kernel/debug/usb/usbmon/0uпоказує, що саме робить пристрій, навіть у випадках, коли catфайл /devне показав нічого.

Незалежно від того, вирішує це проблема чи ні, це може бути корисним у майбутньому, оскільки це часто корисніший спосіб підслухування на USB-пристроях, ніж /dev.

Удачі :)


1

Для мене це був занадто низький бодрат. Вихід з'явився, як тільки я налаштував систему (пристрій і порт) для використання 300 замість 150.


-1

Здається, я згадую, що USB - це протокол, який вимагає від комп'ютера ініціювання зв'язку. Не дозволяється говорити самостійно. Тож драйвер насправді розмовляє з необробленим пристроєм, а потім фіксує вихід. Однак це лише придумка, я також дочекаюся ще однієї відповіді, щоб підтвердити свої переконання.


Але це питання про серійний порт. Те, що послідовний порт підключений до USB, ні тут, ні там.
Селада
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.