2016-08-15 1 views
0

Ich habe ein Infrarot-Thermometer, das auf einem virtuellen seriellen Port über USB funktioniert, den ich versuche, auf Debian Linux zu verwenden. Leider zählt das System kein /dev/ttyUSB Gerät auf.Cygnal Integrated Products serieller Port unter Linux

Hier ist die dmesg für das Gerät:

usb 5-1: new full-speed USB device number 3 using uhci_hcd 
usb 5-1: New USB device found, idVendor=10c4, idProduct=834b 
usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 
usb 5-1: Product: Infrared Online Sensor Adapter 
usb 5-1: Manufacturer: Silicon Labs 
usb 5-1: SerialNumber: CT00092755 

Und hier ist die lsusb -v:

Bus 005 Device 003: ID 10c4:834b Cygnal Integrated Products, Inc. 
Couldn't open device, some information will be missing 
Device Descriptor: 
    bLength    18 
    bDescriptorType   1 
    bcdUSB    1.10 
    bDeviceClass   0 (Defined at Interface level) 
    bDeviceSubClass   0 
    bDeviceProtocol   0 
    bMaxPacketSize0  64 
    idVendor   0x10c4 Cygnal Integrated Products, Inc. 
    idProduct   0x834b 
    bcdDevice   1.00 
    iManufacturer   1 
    iProduct    2 
    iSerial     3 
    bNumConfigurations  1 
    Configuration Descriptor: 
    bLength     9 
    bDescriptorType   2 
    wTotalLength   32 
    bNumInterfaces   1 
    bConfigurationValue  1 
    iConfiguration   0 
    bmAttributes   0x80 
     (Bus Powered) 
    MaxPower    100mA 
    Interface Descriptor: 
     bLength     9 
     bDescriptorType   4 
     bInterfaceNumber  0 
     bAlternateSetting  0 
     bNumEndpoints   2 
     bInterfaceClass  255 Vendor Specific Class 
     bInterfaceSubClass  0 
     bInterfaceProtocol  0 
     iInterface    2 
     Endpoint Descriptor: 
     bLength     7 
     bDescriptorType   5 
     bEndpointAddress  0x81 EP 1 IN 
     bmAttributes   2 
      Transfer Type   Bulk 
      Synch Type    None 
      Usage Type    Data 
     wMaxPacketSize  0x0040 1x 64 bytes 
     bInterval    0 
     Endpoint Descriptor: 
     bLength     7 
     bDescriptorType   5 
     bEndpointAddress  0x01 EP 1 OUT 
     bmAttributes   2 
      Transfer Type   Bulk 
      Synch Type    None 
      Usage Type    Data 
     wMaxPacketSize  0x0040 1x 64 bytes 
     bInterval    0 

Wie kann ich diese Arbeit bekommen, so kann ich es mit der seriellen Schnittstelle anschließen?

Antwort

1

Es stellt sich heraus, dass dieses Gerät einen standardmäßigen Silicon Labs CP2102-Schnittstellenchip verwendet, den der Gerätehersteller mit einer benutzerdefinierten idProduct-Nummer geladen hat. Während der Chip 100% kompatibel mit dem cp210x.ko Treiber ist, wird das idProduct vom System nicht erkannt und assoziiert den Treiber nicht damit.

An dieser Stelle gibt es mehrere mögliche Lösungen:

  • das System manuell steuern die cp210x.ko Treiber mit diesem idProduct zu verwenden.
  • Fügen Sie die idProduct zu open source driver, kompilieren und installieren Sie es. Versuchen Sie dann, die Änderungen in standardmäßige Linux-Repositorys zu übertragen.
  • Ersetzen Sie den kundenspezifischen Chip durch einen generischen.
  • Schreiben Sie die idProduct auf den Chip.

Ich entschied mich, die idProduct umzuschreiben. Silicon Labs hat eine free utility, um genau dies zu tun. Ich setze die idProduct=EA60, die die Standardeinstellung für diesen Chip ist. Das Gerät wird nun vom standardmäßig integrierten Treiber erkannt und funktioniert einwandfrei.