Linux 上的 Cygnal Integrated Products 串行端口
Cygnal Integrated Products serial port on 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
我怎样才能让它工作,以便我可以用串行端口连接到它?
事实证明,该设备使用标准的 Silicon Labs CP2102 接口芯片,设备制造商为其加载了自定义 idProduct
编号。虽然该芯片与 cp210x.ko
驱动程序 100% 兼容,但 idProduct
无法被系统识别,并且不会与驱动程序关联。
此时,有几种可能的解决方案:
- 通过此
idProduct
手动指示系统使用 cp210x.ko
驱动程序。
- 将
idProduct
添加到open source driver,编译并安装它。然后尝试将更改推送到标准 Linux 存储库。
- 用通用芯片替换定制芯片。
- 改写芯片上的
idProduct
我选择重写idProduct
。 Silicon Labs 有 free utility 可以做到这一点。我设置了 idProduct=EA60
,这是该芯片的默认值。该设备现在可以被标准的内置驱动程序识别,并且可以完美运行。
我有一个红外线温度计,它在 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
我怎样才能让它工作,以便我可以用串行端口连接到它?
事实证明,该设备使用标准的 Silicon Labs CP2102 接口芯片,设备制造商为其加载了自定义 idProduct
编号。虽然该芯片与 cp210x.ko
驱动程序 100% 兼容,但 idProduct
无法被系统识别,并且不会与驱动程序关联。
此时,有几种可能的解决方案:
- 通过此
idProduct
手动指示系统使用cp210x.ko
驱动程序。 - 将
idProduct
添加到open source driver,编译并安装它。然后尝试将更改推送到标准 Linux 存储库。 - 用通用芯片替换定制芯片。
- 改写芯片上的
idProduct
我选择重写idProduct
。 Silicon Labs 有 free utility 可以做到这一点。我设置了 idProduct=EA60
,这是该芯片的默认值。该设备现在可以被标准的内置驱动程序识别,并且可以完美运行。