“Cat ttyUSB0” neden çıktı üretmiyor?


13

Kızılötesi alıcıyı bir USB bağlantı noktasına bağladım ... (dmesg'in son satırı cihaz dosyasına söyler)

$ 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

Sonra denemeye devam ettim ...

$ sudo cat /dev/ttyUSB0

ama çıktı yok, sadece asılı. Uzaktan kumandamdaki herhangi bir düğmeye bastığım halde, kızılötesi alıcı cihazın LED'i yanıp sönüyor, bu yüzden işe yarıyor gibi görünüyor.

Neden olabilir?


notlar:

  • yukarıdaki bağlantı, aygıtı USB bağlantı noktasından kaldırdığımda ve "cat: ttyUSB0: Böyle bir aygıt yok" yazdırdığımda sonlandırılıyor ve dmesg 3 satır yazdırıyor:

     [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)
    
  • klavye için cihaz dosyalarıyla bu çalışır, örneğin:

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

    klavyeden herhangi bir tuşa bastığımda konsolda birçok garip karakter

  • aynı şey diğer USB bağlantı noktalarında da olur

2
stty raw -echo < /dev/ttyUSB0; cat -vte /dev/ttyUSB0yerine deneyin .
Stéphane Chazelas

@ Stephane Chazelas: benzer şekilde hiçbir şey olmuyor
nlognfan


Herhangi bir çıktı almıyorsanız, bunun bir sürücü sorunu olduğundan veya donanımın doğru bir şekilde algılanmadığından / tanımlanmadığından şüphelenirim. Bu da yararlı olabilir: help.ubuntu.com/community/Lirc_USB-UIRT
slm

USB-seri-köprüleri olan kızılötesi alıcı-vericilerin kullanılmasının genellikle işe yaramayacağını lütfen unutmayın.
groxxda

Yanıtlar:


3

Seri cihazlar için baud hızını herhangi bir şey yapmadan önce ayarlamanız gerektiğini düşünüyorum. catÇalışmak için bunu komut satırından nasıl yapacağımdan emin değilim , ancak bununla ilgilenen bir terminal emülatörü kullanabilirsiniz.

Deneyin minicomveya screen(yani screen /dev/ttyUSB0 115200- 115200'ü IR alıcınızın baud hızıyla değiştirin.)


1

USB bağlantısını başlatma gereksinimi hakkındaki cevabı göz ardı edin - cihazı taktığınızda zaten başlatıldı.

Sadece çalışıp çalışmadığını kontrol etmek istiyorsanız kullanın dd if=/dev/ttyUSB0. Bu karakterleri gerçekten okumak istiyorsanız, seri terminale ihtiyacınız vardır. Kullanım minicom(CLI, gerek manuel), picocom(kendi başlarına çözmeye olabilir), cutecom(güzel grafik arayüzü, kolay) veya screen(CLI, ama gerçekten kolay). Baud hızını bilmeniz gerekecek.% 90'ı 115200 veya 9600, 57600, 38400 veya 19200 olabilir.

Bu arada, ne tür bir alıcı kullanıyorsunuz? Bize bir ürün sayfasına veya açıklamaya bağlantı verebilir misiniz?


1

Bu yardımcı olmayabilir, ama burada geçmişte yaşadığım benzer bir sorun var. Farem için aygıt dosyasını doğrudan cat /dev/input/by-id/usb-<mymouse>kedigimde (yani, kullanirken) klavyenizle aldiklarina benzer bir çikti elde ediyorum (yani anlamsızca). Ancak, bazı fare hareketleri, sol tıklama gibi, yazdırılabilir karakterler oluşturmaz, bu nedenle terminal hiçbir şey göstermez.

Tabii ki, fare hala bir şeyler yapıyor, sadece catcihaz dosyasını görerek göremiyoruz . Neyse ki çekirdek, usb cihazlarının ham ikili çıkışında gizlice dinlemeye yardımcı olan usbmon adı verilen temiz bir özelliğe sahiptir. Bunu kullanarak, sol tıklamayı gerçekleştirdiğimizde (söylediklerimizde) tam olarak ne olduğunu görebiliriz, oysa aynı şeyi yapmak /devgenellikle hiçbir şey göstermez.

Yine, bu yardımcı olmayabilir, ancak usbmon nasıl kullanılır:

  1. Çekirdeğinizde usbmon etkin olduğundan emin olun. Çıktısı:
    zcat /proc/config.gz | grep USB_MON
    içinde ya =mda =yiçinde olmalıdır .

  2. Öyleyse =m, modülüsudo modprobe usbmon

  3. Tüm usb soketlerinin doğru yerde gösterildiğinden emin olmak için çalıştırın:
    ls /sys/kernel/debug/usb/usbmon
    Şöyle bir şey görmelisiniz:
    0s 0u 1s 1t 1u 2s 2t 2u 3s 3t 3u 4s 4t 4u

Farklı numaralar farklı USB bağlantı noktalarını gösterir ve önünde 0 olanları tüm USB bağlantı noktalarının toplu çıkışını verir. Örneğin, koşmak cat /sys/kernel/debug/usb/usbmon/0u, catdosyanın dosyada /devhiçbir şey göstermediği durumlarda bile cihazın ne yaptığını gösterir .

Bu sorununuzu çözer ya da çözmezse, gelecekte USB aygıtlarında dinlemenin daha yararlı bir yolu olduğu için gelecekte yararlı olabilir /dev.

İyi şanslar :)


1

Benim için baudrat çok düşüktü. Sistemi (cihaz ve bağlantı noktası) 150 yerine 300 kullanacak şekilde yeniden yapılandırdığımda çıktı göründü.


-1

USB'nin bilgisayarın iletişimi başlatmasını gerektiren bir protokol olduğunu hatırlıyorum. Kendi başına konuşmasına izin verilmiyor. Böylece sürücü aslında ham cihazla konuşur ve çıktıyı yakalar. Ancak, bu sadece bir önsezi, ayrıca askılarımı onaylamak için başka bir cevap bekleyeceğim.


Ama bu seri bir port hakkında bir soru. Seri bağlantı noktasının USB ile bağlı olması ne burada ne de oradadır.
Celada
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.