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
stty raw -echo < /dev/ttyUSB0; cat -vte /dev/ttyUSB0
saja.Jawaban:
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
cat
bekerja, tetapi Anda bisa menggunakan emulator terminal yang menangani hal itu.Coba
minicom
atauscreen
(yaituscreen /dev/ttyUSB0 115200
- ganti 115200 dengan baud rate penerima IR Anda.)sumber
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. Gunakanminicom
(CLI, perlu manual),picocom
(mungkin mencari tahu sendiri),cutecom
(antarmuka grafis yang bagus, mudah) atauscreen
(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
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, menggunakan
cat /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
cat
memasukkan 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/dev
sering tidak menunjukkan apa-apa.Sekali lagi, ini mungkin tidak membantu, tapi inilah cara menggunakan usbmon:
Pastikan kernel Anda mengaktifkan usbmon. Output dari:
zcat /proc/config.gz | grep USB_MON
harus memiliki salah satu
=m
atau=y
di dalamnya.Jika ya
=m
, maka muat modul dengansudo modprobe usbmon
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/0u
menunjukkan dengan tepat apa yang dilakukan perangkat, bahkan dalam kasus di manacat
file 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 :)
sumber
Bagi saya itu baudrate terlalu rendah. Output memang muncul setelah saya mengkonfigurasi ulang sistem (perangkat dan port) untuk menggunakan 300, bukan 150.
sumber
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.
sumber