Mengapa "cat ttyUSB0" tidak menghasilkan output?

13

Saya menghubungkan penerima inframerah ke port USB ... (baris terakhir dari dmesg memberitahu file perangkat)

$ 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

Kemudian saya melanjutkan untuk mencobanya ...

$ sudo cat /dev/ttyUSB0

tapi tidak ada output, cukup hang. Meskipun begitu, ketika saya menekan tombol apa saja pada remote control saya, LED perangkat penerima inframerah berkedip, sehingga sepertinya berfungsi.

Kenapa bisa begitu?


catatan:

  • perintah di atas berhenti ketika saya menghapus perangkat dari port USB dan mencetak "cat: ttyUSB0: Tidak ada perangkat seperti itu", dan dmesg mencetak 3 baris:

     [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)
    
  • dengan file perangkat untuk keyboard ini berfungsi, misalnya:

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

    menghasilkan banyak karakter aneh di konsol saat saya menekan tombol apa saja pada keyboard

  • Hal yang sama terjadi pada port USB lain juga
nlognfan
sumber
2
coba stty raw -echo < /dev/ttyUSB0; cat -vte /dev/ttyUSB0saja.
Stéphane Chazelas
@ Stephane Chazelas: sama tidak ada yang terjadi
nlognfan
Jika Anda tidak mendapatkan output apa pun maka saya akan curiga ada masalah driver atau perangkat kerasnya tidak terdeteksi / diidentifikasi dengan benar. Ini mungkin terbukti bermanfaat juga: help.ubuntu.com/community/Lirc_USB-UIRT
slm
Harap dicatat bahwa menggunakan transceiver inframerah dengan USB-to-serial-bridge biasanya tidak akan berfungsi.
groxxda

Jawaban:

3

Saya pikir untuk perangkat serial Anda harus mengatur baud rate sebelum mereka melakukan apa pun. Saya tidak yakin bagaimana cara melakukannya dari baris perintah untuk mulai catbekerja, tetapi Anda bisa menggunakan emulator terminal yang menangani hal itu.

Coba minicomatau screen(yaitu screen /dev/ttyUSB0 115200- ganti 115200 dengan baud rate penerima IR Anda.)

LawrenceC
sumber
1

Abaikan jawaban tentang perlunya memulai koneksi USB - sudah dimulai saat Anda terhubung ke perangkat.

Jika Anda hanya ingin memeriksa apakah itu berfungsi, gunakan dd if=/dev/ttyUSB0. Jika Anda ingin benar-benar membaca karakter tersebut, Anda memerlukan terminal serial. Gunakan minicom(CLI, perlu manual),picocom (mungkin mencari tahu sendiri), cutecom(antarmuka grafis yang bagus, mudah) atau screen(CLI, tetapi sangat mudah). Anda harus mengetahui baudrate .. 90% itu baik 115200 atau 9600, mungkin 57600, 38400 atau 19200.

Omong-omong, penerima seperti apa yang Anda gunakan? Bisakah Anda memberi kami tautan ke halaman atau deskripsi produk?

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

Ini mungkin tidak membantu, tapi di sini ada masalah serupa yang pernah saya alami. Ketika saya cat file perangkat untuk mouse saya secara langsung (yaitu, menggunakancat /dev/input/by-id/usb-<mymouse> ) saya mendapatkan output yang mirip dengan apa yang Anda dapatkan dengan keyboard Anda (yaitu, omong kosong). Namun, beberapa gerakan mouse, seperti klik kiri, tidak menghasilkan karakter yang dapat dicetak, sehingga terminal tidak menunjukkan apa pun.

Tentu saja, mouse masih melakukan sesuatu, kita tidak bisa melihatnya dengan catmemasukkan file perangkat. Untungnya kernel memiliki fitur rapi yang disebut usbmon yang berguna untuk menguping keluaran biner mentah dari perangkat usb. Dengan menggunakan itu, kita dapat melihat dengan tepat apa yang terjadi ketika kita melakukan (katakan) klik kiri, sedangkan melakukan hal yang sama melalui /devsering tidak menunjukkan apa-apa.

Sekali lagi, ini mungkin tidak membantu, tapi inilah cara menggunakan usbmon:

  1. Pastikan kernel Anda mengaktifkan usbmon. Output dari:
    zcat /proc/config.gz | grep USB_MON
    harus memiliki salah satu =matau =ydi dalamnya.

  2. Jika ya =m, maka muat modul dengansudo modprobe usbmon

  3. Untuk memastikan semua soket usb muncul di tempat yang tepat, jalankan:
    ls /sys/kernel/debug/usb/usbmon
    Anda akan melihat sesuatu seperti:
    0s 0u 1s 1t 1u 2s 2t 2u 3s 3t 3u 4s 4t 4u

Angka-angka yang berbeda mengacu pada port USB yang berbeda, dan angka-angka dengan angka 0 di depan memberikan output agregat dari semua port USB. Jadi misalnya, menjalankan cat /sys/kernel/debug/usb/usbmon/0umenunjukkan dengan tepat apa yang dilakukan perangkat, bahkan dalam kasus di mana catfile masuk/dev tidak menunjukkan apa-apa.

Apakah ini memecahkan masalah Anda atau tidak, ini mungkin bermanfaat di masa depan, karena ini seringkali merupakan cara yang lebih bermanfaat untuk menguping pada perangkat USB daripada /dev .

Semoga berhasil :)

mari kita memilikiadventure
sumber
1

Bagi saya itu baudrate terlalu rendah. Output memang muncul setelah saya mengkonfigurasi ulang sistem (perangkat dan port) untuk menggunakan 300, bukan 150.

Raigedas
sumber
-1

Saya ingat bahwa USB adalah protokol yang mengharuskan komputer untuk memulai komunikasi. Tidak diizinkan untuk berbicara sendiri. Jadi pengemudi benar-benar berbicara ke perangkat mentah dan kemudian menangkap output. Namun, itu hanya dugaan, saya juga akan menunggu jawaban lain untuk mengonfirmasi penangguhan saya.

orion
sumber
Tapi ini pertanyaan tentang port serial. Fakta bahwa port serial terhubung dengan USB tidak ada di sini atau di sana.
Celada