Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for CP210x devices over USB Serial #411

Open
wowkster opened this issue Sep 12, 2022 · 1 comment
Open

Add support for CP210x devices over USB Serial #411

wowkster opened this issue Sep 12, 2022 · 1 comment

Comments

@wowkster
Copy link

wowkster commented Sep 12, 2022

Hosting CP210x serial devices such as the ESP32 is not supported with the srldrvce library.

Here is an Example USB Device Descriptor for the NodeMCU-32S:


    =========================== USB Port4 ===========================
 
Connection Status        : 0x01 (Device is connected)
Port Chain               : 1-4
 
      ========================== Summary =========================
Vendor ID                : 0x10C4 (Silicon Laboratories, Inc.)
Product ID               : 0xEA60
USB Version              : 1.1
Port maximum Speed       : High-Speed
Device maximum Speed     : Full-Speed
Device Connection Speed  : Full-Speed
Self powered             : no
Demanded Current         : 100 mA
Used Endpoints           : 3
 
      ======================== USB Device ========================
 
        +++++++++++++++++ Device Information ++++++++++++++++++
Friendly Name            : Silicon Labs CP210x USB to UART Bridge (COM6)
Device Description       : Silicon Labs CP210x USB to UART Bridge
Device Path 1            : \\?\USB#VID_10C4&PID_EA60#0001#{a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE)
Device Path 2            : \\?\USB#VID_10C4&PID_EA60#0001#{86e0d1e0-8089-11d0-9ce4-08003e301f73} (GUID_DEVINTERFACE_COMPORT)
Device Path 3            : \\?\USB#VID_10C4&PID_EA60#0001#{a2a39220-39f4-4b88-aecb-3d86a35dc748}
Kernel Name              : \Device\USBPDO-15
Device ID                : USB\VID_10C4&PID_EA60\0001
Hardware IDs             : USB\VID_10C4&PID_EA60&REV_0100 USB\VID_10C4&PID_EA60
Driver KeyName           : {4d36e978-e325-11ce-bfc1-08002be10318}\0002 (GUID_DEVCLASS_PORTS)
Driver                   : \SystemRoot\system32\DRIVERS\silabser.sys (Version: 6.7.4.261  Date: 2021-12-20)
Driver Inf               : C:\Windows\inf\oem76.inf
Legacy BusType           : PNPBus
Class                    : Ports
Class GUID               : {4d36e978-e325-11ce-bfc1-08002be10318} (GUID_DEVCLASS_PORTS)
Service                  : silabser
Enumerator               : USB
Location Info            : Port_#0004.Hub_#0001
Location IDs             : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(4), ACPI(_SB_)#ACPI(PCI0)#ACPI(XHC_)#ACPI(RHUB)#ACPI(HS04)
Container ID             : {34c052a1-08b6-5809-881e-95820d434537}
Manufacturer Info        : Silicon Labs
Capabilities             : 0x94 (Removable, UniqueID, SurpriseRemovalOK)
Status                   : 0x0180600A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
Problem Code             : 0
HcDisableSelectiveSuspend: 0
EnableSelectiveSuspend   : 0
SelectiveSuspendEnabled  : 0
EnhancedPowerMgmtEnabled : 0
IdleInWorkingState       : 1
WakeFromSleepState       : 0
Power State              : D3 (supported: D0, D3, wake from D0)
COM-Port                 : COM6 (\Device\Silabser7)
 
        ---------------- Connection Information ---------------
Connection Index         : 0x04 (Port 4)
Connection Status        : 0x01 (DeviceConnected)
Current Config Value     : 0x01 (Configuration 1)
Device Address           : 0x2C (44)
Is Hub                   : 0x00 (no)
Device Bus Speed         : 0x01 (Full-Speed)
Number Of Open Pipes     : 0x02 (2 pipes to data endpoints)
Pipe[0]                  : EndpointID=1  Direction=IN   ScheduleOffset=0  Type=Bulk  wMaxPacketSize=64    bInterval=0
Pipe[1]                  : EndpointID=1  Direction=OUT  ScheduleOffset=0  Type=Bulk  wMaxPacketSize=64    bInterval=0
Data (HexDump)           : 04 00 00 00 12 01 10 01 00 00 00 40 C4 10 60 EA   ...........@..`.
                           00 01 01 02 03 01 01 01 00 2C 00 02 00 00 00 01   .........,......
                           00 00 00 07 05 81 02 40 00 00 00 00 00 00 07 05   .......@........
                           01 02 40 00 00 00 00 00 00                        ..@......
 
        --------------- Connection Information V2 -------------
Connection Index         : 0x04 (4)
Length                   : 0x10 (16 bytes)
SupportedUsbProtocols    : 0x03
 Usb110                  : 1 (yes, port supports USB 1.1)
 Usb200                  : 1 (yes, port supports USB 2.0)
 Usb300                  : 0 (no, port not supports USB 3.0)
 ReservedMBZ             : 0x00
Flags                    : 0x00
 DevIsOpAtSsOrHigher     : 0 (Device is not operating at SuperSpeed or higher)
 DevIsSsCapOrHigher      : 0 (Device is not SuperSpeed capable or higher)
 DevIsOpAtSsPlusOrHigher : 0 (Device is not operating at SuperSpeedPlus or higher)
 DevIsSsPlusCapOrHigher  : 0 (Device is not SuperSpeedPlus capable or higher)
 ReservedMBZ             : 0x00
Data (HexDump)           : 04 00 00 00 10 00 00 00 03 00 00 00 00 00 00 00   ................
 
    ---------------------- Device Descriptor ----------------------
bLength                  : 0x12 (18 bytes)
bDescriptorType          : 0x01 (Device Descriptor)
bcdUSB                   : 0x110 (USB Version 1.1)
bDeviceClass             : 0x00 (defined by the interface descriptors)
bDeviceSubClass          : 0x00
bDeviceProtocol          : 0x00
bMaxPacketSize0          : 0x40 (64 bytes)
idVendor                 : 0x10C4 (Silicon Laboratories, Inc.)
idProduct                : 0xEA60
bcdDevice                : 0x0100
iManufacturer            : 0x01 (String Descriptor 1)
iProduct                 : 0x02 (String Descriptor 2)
iSerialNumber            : 0x03 (String Descriptor 3)
bNumConfigurations       : 0x01 (1 Configuration)
Data (HexDump)           : 12 01 10 01 00 00 00 40 C4 10 60 EA 00 01 01 02   .......@..`.....
                           03 01                                             ..
 
    ------------------ Configuration Descriptor -------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x02 (Configuration Descriptor)
wTotalLength             : 0x0020 (32 bytes)
bNumInterfaces           : 0x01 (1 Interface)
bConfigurationValue      : 0x01 (Configuration 1)
iConfiguration           : 0x00 (No String Descriptor)
bmAttributes             : 0x80
 D7: Reserved, set 1     : 0x01
 D6: Self Powered        : 0x00 (no)
 D5: Remote Wakeup       : 0x00 (no)
 D4..0: Reserved, set 0  : 0x00
MaxPower                 : 0x32 (100 mA)
Data (HexDump)           : 09 02 20 00 01 01 00 80 32 09 04 00 00 02 FF 00   .. .....2.......
                           00 02 07 05 81 02 40 00 00 07 05 01 02 40 00 00   ......@......@..
 
        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x00 (Interface 0)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0xFF (Vendor Specific)
bInterfaceSubClass       : 0x00
bInterfaceProtocol       : 0x00
iInterface               : 0x02 (String Descriptor 2)
Data (HexDump)           : 09 04 00 00 02 FF 00 00 02                        .........
 
        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x81 (Direction=IN EndpointID=1)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0040 (64 bytes)
bInterval                : 0x00 (ignored)
Data (HexDump)           : 07 05 81 02 40 00 00                              ....@..
 
        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x01 (Direction=OUT EndpointID=1)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0040 (64 bytes)
bInterval                : 0x00 (ignored)
Data (HexDump)           : 07 05 01 02 40 00 00                              ....@..
 
      -------------------- String Descriptors -------------------
String descriptors are not available  (because the device is in low power state)
@wowkster
Copy link
Author

Hi, have there been any developments here?

@mateoconlechuga mateoconlechuga removed this from the USB Support milestone Sep 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

3 participants