Tại sao mèo mèo ttyUSB0 không tạo ra sản lượng?


13

Tôi đã kết nối máy thu hồng ngoại với cổng USB ... (dòng cuối cùng của dmesg cho biết tệp thiết bị)

$ 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

Sau đó, tôi tiếp tục thử nó ...

$ sudo cat /dev/ttyUSB0

nhưng không có đầu ra, chỉ đơn giản là treo. Mặc dù, khi tôi nhấn bất kỳ nút nào trên điều khiển từ xa, đèn LED của thiết bị thu hồng ngoại sẽ nhấp nháy, do đó dường như không hoạt động.

Tại sao có thể như vậy?


ghi chú:

  • lệnh trên sẽ thoát khi tôi xóa thiết bị khỏi cổng USB và in "cat: ttyUSB0: Không có thiết bị nào như vậy" và dmesg in 3 dòng:

     [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)
    
  • với các tập tin thiết bị cho bàn phím, nó hoạt động, vd:

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

    tạo ra nhiều ký tự lạ trên bàn điều khiển khi tôi nhấn bất kỳ phím nào trên bàn phím

  • điều tương tự cũng xảy ra trên các cổng USB khác

2
stty raw -echo < /dev/ttyUSB0; cat -vte /dev/ttyUSB0thay vào đó hãy thử
Stéphane Chazelas

@ Stephane Chazelas: tương tự không có gì xảy ra
nlognfan


Nếu bạn không nhận được bất kỳ đầu ra nào thì tôi nghi ngờ đó là sự cố trình điều khiển hoặc phần cứng không được phát hiện / xác định chính xác. Điều này có thể chứng minh hữu ích quá: help.ubuntu.com/community/Lirc_USB-UIRT
SLM

Xin lưu ý rằng việc sử dụng các bộ thu phát hồng ngoại có cầu nối nối tiếp USB thường không hoạt động.
Groxxda

Câu trả lời:


3

Tôi nghĩ đối với các thiết bị nối tiếp, bạn phải đặt tốc độ truyền trước khi chúng làm bất cứ điều gì. Tôi không chắc chắn làm thế nào để làm điều đó từ dòng lệnh catđể làm việc, nhưng bạn có thể sử dụng một trình giả lập thiết bị đầu cuối chăm sóc nó.

Hãy thử minicomhoặc screen(tức là screen /dev/ttyUSB0 115200- thay thế 115200 bằng tốc độ truyền của máy thu IR của bạn.)


1

Bỏ qua câu trả lời về nhu cầu khởi tạo kết nối USB - nó đã được bắt đầu khi bạn cắm thiết bị.

Nếu bạn chỉ muốn kiểm tra xem nó có hoạt động không, hãy sử dụng dd if=/dev/ttyUSB0. Nếu bạn thực sự muốn đọc những ký tự đó, bạn cần thiết bị đầu cuối nối tiếp. Sử dụng minicom(CLI, cần thủ công), picocom(có thể tự mình tìm ra), cutecom(giao diện đồ họa đẹp, dễ dàng) hoặc screen(CLI, nhưng thực sự dễ dàng). Bạn sẽ cần biết baudrate .. 90% là 115200 hoặc 9600, cũng có thể là 57600, 38400 hoặc 19200.

Nhân tiện, bạn đang sử dụng loại máy thu nào? Bạn có thể cho chúng tôi một liên kết đến một trang sản phẩm hoặc mô tả?


1

Điều này có thể không giúp ích gì, nhưng đây là một vấn đề tương tự tôi đã gặp phải trong quá khứ. Khi tôi gửi tệp thiết bị cho chuột của tôi trực tiếp (nghĩa là sử dụng cat /dev/input/by-id/usb-<mymouse>), tôi nhận được đầu ra tương tự như những gì bạn nhận được với bàn phím của mình (nghĩa là vô nghĩa). Tuy nhiên, một số chuyển động của chuột, như nhấp chuột trái, không tạo ra bất kỳ ký tự có thể in nào, vì vậy thiết bị đầu cuối không hiển thị gì.

Tất nhiên, con chuột vẫn đang làm gì đó, chúng ta không thể nhìn thấy nó bằng cách cat'tập tin thiết bị. May mắn thay, kernel có một tính năng gọn gàng gọi là usbmon rất hữu ích cho việc nghe lén đầu ra nhị phân thô của các thiết bị usb. Sử dụng điều đó, chúng ta có thể thấy chính xác những gì đang xảy ra khi chúng ta thực hiện (nói) một cú nhấp chuột trái, trong khi thực hiện điều tương tự thông /devthường không cho thấy gì.

Một lần nữa, điều này có thể không giúp ích gì, nhưng đây là cách sử dụng usbmon:

  1. Hãy chắc chắn rằng kernel của bạn đã kích hoạt usbmon. Đầu ra của:
    zcat /proc/config.gz | grep USB_MON
    nên có =mhoặc =ytrong đó.

  2. Nếu có =m, sau đó tải mô-đun vớisudo modprobe usbmon

  3. Để đảm bảo tất cả các ổ cắm USB đang hiển thị ở đúng nơi, hãy chạy:
    ls /sys/kernel/debug/usb/usbmon
    Bạn sẽ thấy một cái gì đó như:
    0s 0u 1s 1t 1u 2s 2t 2u 3s 3t 3u 4s 4t 4u

Các số khác nhau đề cập đến các cổng USB khác nhau và các số có 0 ở phía trước cung cấp đầu ra tổng hợp của tất cả các cổng USB. Vì vậy, ví dụ, việc chạy cat /sys/kernel/debug/usb/usbmon/0uhiển thị chính xác những gì thiết bị đang làm, ngay cả trong trường hợp cattệp /devkhông hiển thị.

Cho dù điều này có giải quyết được vấn đề của bạn hay không, nó có thể hữu ích trong tương lai, vì nó thường là một cách hữu ích để nghe lén các thiết bị USB hơn /dev.

Chúc may mắn :)


1

Đối với tôi đó là baudrate quá thấp. Đầu ra đã xuất hiện khi tôi cấu hình lại hệ thống (thiết bị và cổng) để sử dụng 300 thay vì 150.


-1

Tôi dường như nhớ lại rằng USB là một giao thức yêu cầu máy tính bắt đầu giao tiếp. Nó không được phép tự nói. Vì vậy, trình điều khiển thực sự nói chuyện với thiết bị thô và sau đó nắm bắt đầu ra. Tuy nhiên, đó chỉ là một linh cảm, tôi cũng sẽ chờ câu trả lời khác để xác nhận những nghi ngờ của mình.


Nhưng đây là một câu hỏi về một cổng nối tiếp. Thực tế là cổng nối tiếp được kết nối với USB không có ở đây cũng không có.
Celada
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.