Последовательный порт Cygnal Integrated Products в Linux

У меня есть инфракрасный термометр, который работает с виртуальным последовательным портом через USB, который я пытаюсь использовать в Debian Linux. К сожалению, система не перечисляет /dev/ttyUSB устройство.

Вот dmesg для устройства:

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

А вот и 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

Как я могу заставить это работать, чтобы я мог подключиться к нему через последовательный порт?


person Rachie    schedule 15.08.2016    source источник


Ответы (1)


Оказывается, в этих устройствах используется стандартный интерфейсный чип Silicon Labs CP2102, который производитель устройства загрузил специальным номером idProduct. Хотя чип на 100% совместим с драйвером cp210x.ko, idProduct не распознается системой и не связывает с ним драйвер.

На данный момент есть несколько возможных решений:

  • Вручную укажите системе использовать драйвер cp210x.ko с этим idProduct.
  • Добавьте idProduct в драйвер с открытым исходным кодом, скомпилируйте и установите Это. Затем попробуйте отправить изменения в стандартные репозитории Linux.
  • Замените индивидуальный чип на универсальный.
  • Перепишите idProduct на чипе.

Я решил переписать файл idProduct. Для этого у Silicon Labs есть бесплатная утилита. Я установил idProduct=EA60, который является значением по умолчанию для этого чипа. Теперь устройство распознается стандартным встроенным драйвером и работает отлично.

person Rachie    schedule 17.08.2016
comment
Бесплатная утилита теперь называется драйверами прямого доступа. После установки поищите в папках CP21xxCustomizationUtility.exe - person Jim Yarbro; 22.09.2020