AM625: about usb

Part Number: AM625

Tool/software:

hi

I recently discovered that there are optimizations for USB in version 10.0, and I would like to ask if there are any optimizations for SDK 8.6. Because when I was debugging USB 2.0, I found that there were frequent communication issues with USB 3.0 on Windows. Windows will display the message (CMPROCB_FAILED-POSTSART).

LCPD-29873   AM62x: host does not detect USB  gadget

  • Hi Hao,

    I am unable to find any information of CMPROCB_FAILED-POSTSART on the internet.

    Because when I was debugging USB 2.0, I found that there were frequent communication issues with USB 3.0 on Windows.

    Please provide details of your AM625 USB use case. What SDK version do you use? What USB gadget is loaded on AM625? Is the USB issue happened during enumeration or post enumeration?

  • Sorry about the question about rndis. I am using AM62-sk, sdk8.6 and 10 all have this problem. It feels like there is a problem with the dwc3 layer, because the 0x80000004 that rndis should send is received by the rndis_msg_parser function, causing an error. When testing the windows computer, USB2.0 does not This problem will occur when plugging in USB 3.0, but there will be no problem when plugging in USB 3.0 through the hub.

    computer log

    usb_log.txt
        =========================== USB Port4 ===========================
    
    Connection Status        : 0x02 (Device failed enumeration)
    Port Chain               : 2-4
    Properties               : 0x01
     IsUserConnectable       : yes
     PortIsDebugCapable      : no
     PortHasMultiCompanions  : no
     PortConnectorIsTypeC    : no
    ConnectionIndex          : 0x04 (Port 4)
    CompanionIndex           : 0
     CompanionHubSymLnk      : USB#ROOT_HUB30#4&15fdb2bd&0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
     CompanionPortNumber     : 0x10 (Port 16)
     -> CompanionPortChain   : 2-16
    
    Device Manager Problem   : 43 (CM_PROB_FAILED_POST_START)
    Used Endpoints           : 0
    
          ======================== USB Device ========================
    
            +++++++++++++++++ Device Information ++++++++++++++++++
    Device Description       : 未知 USB 设备(设备描述符请求失败)
    Device ID                : USB\VID_0000&PID_0002\5&2630A0C1&0&4
    Hardware IDs             : USB\DEVICE_DESCRIPTOR_FAILURE
    Driver KeyName           : {36fc9e60-c465-11cf-8056-444553540000}\0101 (GUID_DEVCLASS_USB)
    Driver Inf               : C:\Windows\inf\usb.inf
    Legacy BusType           : PNPBus
    Class                    : USB
    Class GUID               : {36fc9e60-c465-11cf-8056-444553540000} (GUID_DEVCLASS_USB)
    Enumerator               : USB
    PDO                      : \Device\USBPDO-3
    Location Info            : Port_#0004.Hub_#0002
    Manufacturer Info        : (标准 USB 主控制器)
    Capabilities             : 0x64 (Removable, SilentInstall, RawDeviceOK)
    Status                   : 0x01806400 (DN_HAS_PROBLEM, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
    Problem Code             : 43 (CM_PROB_FAILED_POST_START)
    Address                  : 4
    HcDisableSelectiveSuspend: 0
    EnableSelectiveSuspend   : 0
    SelectiveSuspendEnabled  : 0
    EnhancedPowerMgmtEnabled : 0
    IdleInWorkingState       : 0
    WakeFromSleepState       : 0
    Power State              : D3 (supported: D0, D3, wake from D0)
    
            ---------------- Connection Information ---------------
    Connection Index         : 0x04 (Port 4)
    Connection Status        : 0x02 (DeviceFailedEnumeration)
    Current Config Value     : 0x00 (Configuration 0)
    Device Address           : 0x00 (0)
    Is Hub                   : 0x00 (no)
    Device Bus Speed         : 0x02 (High-Speed)
    Number Of Open Pipes     : 0x00 (0 pipes to data endpoints)
    Data (HexDump)           : 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
                               00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 02   ................
                               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) -> but Companion Port 2-16 does
     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                  : 0x00 (0 bytes)
    
        ----------------- Device Qualifier Descriptor -----------------
    bLength                  : 0x0A (10 bytes)
    bDescriptorType          : 0x06 (Device_qualifier Descriptor)
    bcdUSB                   : 0x201 (USB Version 2.01)
    bDeviceClass             : 0x02 (Communications and CDC Control)
    bDeviceSubClass          : 0x00
    bDeviceProtocol          : 0x00 (No class specific protocol required)
    bMaxPacketSize0          : 0x40 (64 Bytes)
    bNumConfigurations       : 0x02 (2 other-speed configurations)
    bReserved                : 0x00
    Data (HexDump)           : 0A 06 01 02 02 00 00 40 02 00                     .......@..
    
          -------------------- String Descriptors -------------------
    String descriptors are not available  (because the device has problem code CM_PROB_FAILED_POST_START)
    
    usb_hub_log.txt
        =========================== USB Port3 ===========================
    
    Connection Status        : 0x01 (Device is connected)
    Port Chain               : 2-3-3
    
          ========================== Summary =========================
    Vendor ID                : 0x0525 (PLX Technology, Inc.)
    Product ID               : 0xA4A2
    USB Version              : 2.01
    Port maximum Speed       : High-Speed
    Device maximum Speed     : High-Speed
    Device Connection Speed  : High-Speed
    Self powered             : yes
    Demanded Current         : 0 mA
    Used Endpoints           : 4
    
          ======================== USB Device ========================
    
            +++++++++++++++++ Device Information ++++++++++++++++++
    Friendly Name            : USB Ethernet/RNDIS Gadget #3
    Device Description       : USB Ethernet/RNDIS Gadget
    Device Path 1            : \\?\USB#VID_0525&PID_A4A2#6&5fd967a&0&3#{cac88484-7515-4c03-82e6-71a87abac361} (GUID_DEVINTERFACE_NET)
    Device Path 2            : \\?\USB#VID_0525&PID_A4A2#6&5fd967a&0&3#{ad498944-762f-11d0-8dcb-00c04fc3358c}\{fade77d9-9df0-4e7c-b74d-0bb366c29c9d} (GUID_NDIS_LAN_CLASS)
    Device Path 3            : \\?\USB#VID_0525&PID_A4A2#6&5fd967a&0&3#{a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE)
    Kernel Name              : \Device\USBPDO-11
    Device ID                : USB\VID_0525&PID_A4A2\6&5FD967A&0&3
    Hardware IDs             : USB\VID_0525&PID_A4A2&REV_0510 USB\VID_0525&PID_A4A2
    Driver KeyName           : {4d36e972-e325-11ce-bfc1-08002be10318}\0028 (GUID_DEVCLASS_NET)
    Driver                   : \SystemRoot\System32\drivers\usb8023.sys (Version: 10.0.18362.1  Date: 2019-03-19)
    Driver Inf               : C:\Windows\inf\oem187.inf
    Legacy BusType           : PNPBus
    Class                    : Net
    Class GUID               : {4d36e972-e325-11ce-bfc1-08002be10318} (GUID_DEVCLASS_NET)
    Service                  : USB_RNDIS
    Enumerator               : USB
    Location Info            : Port_#0003.Hub_#0004
    Location IDs             : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(3)#USB(3), ACPI(_SB_)#ACPI(PC00)#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS03)#USB(3)
    Container ID             : {2809ab5d-abe3-11ef-8f33-10f60afb8ee2}
    Manufacturer Info        : Acer Incorporated.
    Capabilities             : 0x84 (Removable, 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       : 0
    WakeFromSleepState       : 0
    Power State              : D0 (supported: D0, D3, wake from D0)
    
            +++++++++++++++++ Registry USB Flags +++++++++++++++++
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\0525A4A20510
     osvc                    : REG_BINARY 00 00
    
            ---------------- Connection Information ---------------
    Connection Index         : 0x03 (Port 3)
    Connection Status        : 0x01 (DeviceConnected)
    Current Config Value     : 0x02 (Configuration 2)
    Device Address           : 0x15 (21)
    Is Hub                   : 0x00 (no)
    Device Bus Speed         : 0x02 (High-Speed)
    Number Of Open Pipes     : 0x03 (3 pipes to data endpoints)
    Pipe[0]                  : EndpointID=2  Direction=IN   ScheduleOffset=0  Type=Interrupt
    Pipe[1]                  : EndpointID=1  Direction=IN   ScheduleOffset=0  Type=Bulk
    Pipe[2]                  : EndpointID=1  Direction=OUT  ScheduleOffset=0  Type=Bulk
    Data (HexDump)           : 03 00 00 00 12 01 01 02 02 00 00 40 25 05 A2 A4   ...........@%...
                               10 05 01 02 00 02 02 02 00 15 00 03 00 00 00 01   ................
                               00 00 00 07 05 82 03 08 00 09 00 00 00 00 07 05   ................
                               81 02 00 02 00 00 00 00 00 07 05 01 02 00 02 00   ................
                               00 00 00 00                                       ....
    
            --------------- Connection Information V2 -------------
    Connection Index         : 0x03 (3)
    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)           : 03 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                   : 0x201 (USB Version 2.01)
    bDeviceClass             : 0x02 (Communications and CDC Control)
    bDeviceSubClass          : 0x00
    bDeviceProtocol          : 0x00 (No class specific protocol required)
    bMaxPacketSize0          : 0x40 (64 bytes)
    idVendor                 : 0x0525 (PLX Technology, Inc.)
    idProduct                : 0xA4A2
    bcdDevice                : 0x0510
    iManufacturer            : 0x01 (String Descriptor 1)
     Language 0x0409         : "Linux 5.10.168-rt83 with dwc3-gadget"
    iProduct                 : 0x02 (String Descriptor 2)
     Language 0x0409         : "RNDIS/Ethernet Gadget"
    iSerialNumber            : 0x00 (No String Descriptor)
    bNumConfigurations       : 0x02 (2 Configurations)
    Data (HexDump)           : 12 01 01 02 02 00 00 40 25 05 A2 A4 10 05 01 02   .......@%.......
                               00 02                                             ..
    
        ------------------ Configuration Descriptor -------------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x02 (Configuration Descriptor)
    wTotalLength             : 0x004B (75 bytes)
    bNumInterfaces           : 0x02 (2 Interfaces)
    bConfigurationValue      : 0x02 (Configuration 2)
    iConfiguration           : 0x00 (No String Descriptor)
    bmAttributes             : 0xC0
     D7: Reserved, set 1     : 0x01
     D6: Self Powered        : 0x01 (yes)
     D5: Remote Wakeup       : 0x00 (no)
     D4..0: Reserved, set 0  : 0x00
    MaxPower                 : 0x00 (0 mA)
    Data (HexDump)           : 09 02 4B 00 02 02 00 C0 00 08 0B 00 02 02 06 00   ..K.............
                               06 09 04 00 00 01 02 02 FF 04 05 24 00 10 01 05   ...........$....
                               24 01 00 01 04 24 02 00 05 24 06 00 01 07 05 82   $....$...$......
                               03 08 00 09 09 04 01 00 02 0A 00 00 05 07 05 81   ................
                               02 00 02 00 07 05 01 02 00 02 00                  ...........
    
            ------------------- IAD Descriptor --------------------
    bLength                  : 0x08 (8 bytes)
    bDescriptorType          : 0x0B
    bFirstInterface          : 0x00
    bInterfaceCount          : 0x02
    bFunctionClass           : 0x02 (Communications and CDC Control)
    bFunctionSubClass        : 0x06
    bFunctionProtocol        : 0x00
    iFunction                : 0x06 (String Descriptor 6)
     Language 0x0409         : "RNDIS"
    Data (HexDump)           : 08 0B 00 02 02 06 00 06                           ........
    
            ---------------- Interface Descriptor -----------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x04 (Interface Descriptor)
    bInterfaceNumber         : 0x00
    bAlternateSetting        : 0x00
    bNumEndpoints            : 0x01 (1 Endpoint)
    bInterfaceClass          : 0x02 (Communications and CDC Control)
    bInterfaceSubClass       : 0x02 (Abstract Control Model)
    bInterfaceProtocol       : 0xFF (Vendor-specific)
    iInterface               : 0x04 (String Descriptor 4)
     Language 0x0409         : "RNDIS Communications Control"
    Data (HexDump)           : 09 04 00 00 01 02 02 FF 04                        .........
    
            -------------- CDC Interface Descriptor ---------------
    bFunctionLength          : 0x05 (5 bytes)
    bDescriptorType          : 0x24 (Interface)
    bDescriptorSubType       : 0x00 (Header Functional Descriptor)
    bcdCDC                   : 0x110 (CDC Version 1.10)
    Data (HexDump)           : 05 24 00 10 01                                    .$...
    
            -------------- CDC Interface Descriptor ---------------
    bFunctionLength          : 0x05 (5 bytes)
    bDescriptorType          : 0x24 (Interface)
    bDescriptorSubType       : 0x01 (Call Management Functional Descriptor)
    bmCapabilities           : 0x00
     D7..2                   : 0x00 (Reserved)
     D1                      : 0x00 (sends/receives call management information only over the Communication Class interface)
     D0                      : 0x00 (does not handle call management itself)
    bDataInterface           : 0x01
    Data (HexDump)           : 05 24 01 00 01                                    .$...
    
            -------------- CDC Interface Descriptor ---------------
    bFunctionLength          : 0x04 (4 bytes)
    bDescriptorType          : 0x24 (Interface)
    bDescriptorSubType       : 0x02 (Abstract Control Management Functional Descriptor)
    bmCapabilities           : 0x00
     D7..4                   : 0x00 (Reserved)
     D3                      : 0x00 (not supports the notification Network_Connection)
     D2                      : 0x00 (not supports the request Send_Break)
     D1                      : 0x00 (not supports the request combination of Set_Line_Coding, Set_Control_Line_State, Get_Line_Coding, and the notification Serial_State)
     D0                      : 0x00 (not supports the request combination of Set_Comm_Feature, Clear_Comm_Feature, and Get_Comm_Feature)
    Data (HexDump)           : 04 24 02 00                                       .$..
    
            -------------- CDC Interface Descriptor ---------------
    bFunctionLength          : 0x05 (5 bytes)
    bDescriptorType          : 0x24 (Interface)
    bDescriptorSubType       : 0x06 (Union Functional Descriptor)
    bControlInterface        : 0x00
    bSubordinateInterface[0] : 0x01
    Data (HexDump)           : 05 24 06 00 01                                    .$...
    
            ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x82 (Direction=IN EndpointID=2)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0008
     Bits 15..13             : 0x00 (reserved, must be zero)
     Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
     Bits 10..0              : 0x08 (8 bytes per packet)
    bInterval                : 0x09 (256 microframes -> 32 ms)
    Data (HexDump)           : 07 05 82 03 08 00 09                              .......
    
            ---------------- Interface Descriptor -----------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x04 (Interface Descriptor)
    bInterfaceNumber         : 0x01
    bAlternateSetting        : 0x00
    bNumEndpoints            : 0x02 (2 Endpoints)
    bInterfaceClass          : 0x0A (CDC-Data)
    bInterfaceSubClass       : 0x00
    bInterfaceProtocol       : 0x00
    iInterface               : 0x05 (String Descriptor 5)
     Language 0x0409         : "RNDIS Ethernet Data"
    Data (HexDump)           : 09 04 01 00 02 0A 00 00 05                        .........
    
            ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x81 (Direction=IN EndpointID=1)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 81 02 00 02 00                              .......
    
            ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x01 (Direction=OUT EndpointID=1)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 01 02 00 02 00                              .......
    
        ------------------ Configuration Descriptor -------------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x02 (Configuration Descriptor)
    wTotalLength             : 0x0058 (88 bytes)
    bNumInterfaces           : 0x02 (2 Interfaces)
    bConfigurationValue      : 0x01 (Configuration 1)
    iConfiguration           : 0x00 (No String Descriptor)
    bmAttributes             : 0xC0
     D7: Reserved, set 1     : 0x01
     D6: Self Powered        : 0x01 (yes)
     D5: Remote Wakeup       : 0x00 (no)
     D4..0: Reserved, set 0  : 0x00
    MaxPower                 : 0x00 (0 mA)
    Data (HexDump)           : 09 02 58 00 02 01 00 C0 00 08 0B 00 02 02 06 00   ..X.............
                               0B 09 04 00 00 01 02 06 00 08 05 24 00 10 01 05   ...........$....
                               24 06 00 01 0D 24 0F 09 00 00 00 00 EA 05 00 00   $....$..........
                               00 07 05 82 03 10 00 09 09 04 01 00 00 0A 00 00   ................
                               00 09 04 01 01 02 0A 00 00 0A 07 05 81 02 00 02   ................
                               00 07 05 01 02 00 02 00                           ........
    
            ------------------- IAD Descriptor --------------------
    bLength                  : 0x08 (8 bytes)
    bDescriptorType          : 0x0B
    bFirstInterface          : 0x00
    bInterfaceCount          : 0x02
    bFunctionClass           : 0x02 (Communications and CDC Control)
    bFunctionSubClass        : 0x06
    bFunctionProtocol        : 0x00
    iFunction                : 0x0B (String Descriptor 11)
     Language 0x0409         : "CDC ECM"
    Data (HexDump)           : 08 0B 00 02 02 06 00 0B                           ........
    
            ---------------- Interface Descriptor -----------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x04 (Interface Descriptor)
    bInterfaceNumber         : 0x00
    bAlternateSetting        : 0x00
    bNumEndpoints            : 0x01 (1 Endpoint)
    bInterfaceClass          : 0x02 (Communications and CDC Control)
    bInterfaceSubClass       : 0x06 (Ethernet Networking Control Model)
    bInterfaceProtocol       : 0x00 (No class specific protocol required)
    iInterface               : 0x08 (String Descriptor 8)
     Language 0x0409         : "CDC Ethernet Control Model (ECM)"
    Data (HexDump)           : 09 04 00 00 01 02 06 00 08                        .........
    
            -------------- CDC Interface Descriptor ---------------
    bFunctionLength          : 0x05 (5 bytes)
    bDescriptorType          : 0x24 (Interface)
    bDescriptorSubType       : 0x00 (Header Functional Descriptor)
    bcdCDC                   : 0x110 (CDC Version 1.10)
    Data (HexDump)           : 05 24 00 10 01                                    .$...
    
            -------------- CDC Interface Descriptor ---------------
    bFunctionLength          : 0x05 (5 bytes)
    bDescriptorType          : 0x24 (Interface)
    bDescriptorSubType       : 0x06 (Union Functional Descriptor)
    bControlInterface        : 0x00
    bSubordinateInterface[0] : 0x01
    Data (HexDump)           : 05 24 06 00 01                                    .$...
    
            -------------- CDC Interface Descriptor ---------------
    bFunctionLength          : 0x0D (13 bytes)
    bDescriptorType          : 0x24 (Interface)
    bDescriptorSubType       : 0x0F (Ethernet Networking Functional Descriptor)
    Data (HexDump)           : 0D 24 0F 09 00 00 00 00 EA 05 00 00 00            .$...........
    
            ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x82 (Direction=IN EndpointID=2)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0010
     Bits 15..13             : 0x00 (reserved, must be zero)
     Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
     Bits 10..0              : 0x10 (16 bytes per packet)
    bInterval                : 0x09 (256 microframes -> 32 ms)
    Data (HexDump)           : 07 05 82 03 10 00 09                              .......
    
            ---------------- Interface Descriptor -----------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x04 (Interface Descriptor)
    bInterfaceNumber         : 0x01
    bAlternateSetting        : 0x00
    bNumEndpoints            : 0x00 (Default Control Pipe only)
    bInterfaceClass          : 0x0A (CDC-Data)
    bInterfaceSubClass       : 0x00
    bInterfaceProtocol       : 0x00
    iInterface               : 0x00 (No String Descriptor)
    Data (HexDump)           : 09 04 01 00 00 0A 00 00 00                        .........
    
            ---------------- Interface Descriptor -----------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x04 (Interface Descriptor)
    bInterfaceNumber         : 0x01
    bAlternateSetting        : 0x01
    bNumEndpoints            : 0x02 (2 Endpoints)
    bInterfaceClass          : 0x0A (CDC-Data)
    bInterfaceSubClass       : 0x00
    bInterfaceProtocol       : 0x00
    iInterface               : 0x0A (String Descriptor 10)
     Language 0x0409         : "CDC Ethernet Data"
    Data (HexDump)           : 09 04 01 01 02 0A 00 00 0A                        .........
    
            ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x81 (Direction=IN EndpointID=1)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 81 02 00 02 00                              .......
    
            ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x01 (Direction=OUT EndpointID=1)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 01 02 00 02 00                              .......
    
        ----------------- Device Qualifier Descriptor -----------------
    bLength                  : 0x0A (10 bytes)
    bDescriptorType          : 0x06 (Device_qualifier Descriptor)
    bcdUSB                   : 0x201 (USB Version 2.01)
    bDeviceClass             : 0x02 (Communications and CDC Control)
    bDeviceSubClass          : 0x00
    bDeviceProtocol          : 0x00 (No class specific protocol required)
    bMaxPacketSize0          : 0x40 (64 Bytes)
    bNumConfigurations       : 0x02 (2 other-speed configurations)
    bReserved                : 0x00
    Data (HexDump)           : 0A 06 01 02 02 00 00 40 02 00                     .......@..
    
        ------------ Other Speed Configuration Descriptor -------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x07 (Other_speed_configuration Descriptor)
    wTotalLength             : 0x004B (75 bytes)
    bNumInterfaces           : 0x02 (2 Interfaces)
    bConfigurationValue      : 0x02 (Configuration 2)
    iConfiguration           : 0x00 (No String Descriptor)
    bmAttributes             : 0xC0
     D7: Reserved, set 1     : 0x01
     D6: Self Powered        : 0x01 (yes)
     D5: Remote Wakeup       : 0x00 (no)
     D4..0: Reserved, set 0  : 0x00
    MaxPower                 : 0x00 (0 mA)
    Data (HexDump)           : 09 07 4B 00 02 02 00 C0 00 08 0B 00 02 02 06 00   ..K.............
                               06 09 04 00 00 01 02 02 FF 04 05 24 00 10 01 05   ...........$....
                               24 01 00 01 04 24 02 00 05 24 06 00 01 07 05 82   $....$...$......
                               03 08 00 20 09 04 01 00 02 0A 00 00 05 07 05 81   ... ............
                               02 40 00 00 07 05 01 02 40 00 00                  .@......@..
    
            ------------------- IAD Descriptor --------------------
    bLength                  : 0x08 (8 bytes)
    bDescriptorType          : 0x0B
    bFirstInterface          : 0x00
    bInterfaceCount          : 0x02
    bFunctionClass           : 0x02 (Communications and CDC Control)
    bFunctionSubClass        : 0x06
    bFunctionProtocol        : 0x00
    iFunction                : 0x06 (String Descriptor 6)
     Language 0x0409         : "RNDIS"
    Data (HexDump)           : 08 0B 00 02 02 06 00 06                           ........
    
            ---------------- Interface Descriptor -----------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x04 (Interface Descriptor)
    bInterfaceNumber         : 0x00
    bAlternateSetting        : 0x00
    bNumEndpoints            : 0x01 (1 Endpoint)
    bInterfaceClass          : 0x02 (Communications and CDC Control)
    bInterfaceSubClass       : 0x02 (Abstract Control Model)
    bInterfaceProtocol       : 0xFF (Vendor-specific)
    iInterface               : 0x04 (String Descriptor 4)
     Language 0x0409         : "RNDIS Communications Control"
    Data (HexDump)           : 09 04 00 00 01 02 02 FF 04                        .........
    
            -------------- CDC Interface Descriptor ---------------
    bFunctionLength          : 0x05 (5 bytes)
    bDescriptorType          : 0x24 (Interface)
    bDescriptorSubType       : 0x00 (Header Functional Descriptor)
    bcdCDC                   : 0x110 (CDC Version 1.10)
    Data (HexDump)           : 05 24 00 10 01                                    .$...
    
            -------------- CDC Interface Descriptor ---------------
    bFunctionLength          : 0x05 (5 bytes)
    bDescriptorType          : 0x24 (Interface)
    bDescriptorSubType       : 0x01 (Call Management Functional Descriptor)
    bmCapabilities           : 0x00
     D7..2                   : 0x00 (Reserved)
     D1                      : 0x00 (sends/receives call management information only over the Communication Class interface)
     D0                      : 0x00 (does not handle call management itself)
    bDataInterface           : 0x01
    Data (HexDump)           : 05 24 01 00 01                                    .$...
    
            -------------- CDC Interface Descriptor ---------------
    bFunctionLength          : 0x04 (4 bytes)
    bDescriptorType          : 0x24 (Interface)
    bDescriptorSubType       : 0x02 (Abstract Control Management Functional Descriptor)
    bmCapabilities           : 0x00
     D7..4                   : 0x00 (Reserved)
     D3                      : 0x00 (not supports the notification Network_Connection)
     D2                      : 0x00 (not supports the request Send_Break)
     D1                      : 0x00 (not supports the request combination of Set_Line_Coding, Set_Control_Line_State, Get_Line_Coding, and the notification Serial_State)
     D0                      : 0x00 (not supports the request combination of Set_Comm_Feature, Clear_Comm_Feature, and Get_Comm_Feature)
    Data (HexDump)           : 04 24 02 00                                       .$..
    
            -------------- CDC Interface Descriptor ---------------
    bFunctionLength          : 0x05 (5 bytes)
    bDescriptorType          : 0x24 (Interface)
    bDescriptorSubType       : 0x06 (Union Functional Descriptor)
    bControlInterface        : 0x00
    bSubordinateInterface[0] : 0x01
    Data (HexDump)           : 05 24 06 00 01                                    .$...
    
            ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x82 (Direction=IN EndpointID=2)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0008
     Bits 15..13             : 0x00 (reserved, must be zero)
     Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
     Bits 10..0              : 0x08 (8 bytes per packet)
    bInterval                : 0x20 (2147483648 microframes -> 4292819813 ms)
    Data (HexDump)           : 07 05 82 03 08 00 20                              ...... 
    
            ---------------- Interface Descriptor -----------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x04 (Interface Descriptor)
    bInterfaceNumber         : 0x01
    bAlternateSetting        : 0x00
    bNumEndpoints            : 0x02 (2 Endpoints)
    bInterfaceClass          : 0x0A (CDC-Data)
    bInterfaceSubClass       : 0x00
    bInterfaceProtocol       : 0x00
    iInterface               : 0x05 (String Descriptor 5)
     Language 0x0409         : "RNDIS Ethernet Data"
    Data (HexDump)           : 09 04 01 00 02 0A 00 00 05                        .........
    
            ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x81 (Direction=IN EndpointID=1)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0040 (max 64 bytes)
    bInterval                : 0x00 (never NAKs)
    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 (max 64 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 01 02 40 00 00                              ....@..
    
        ------------ Other Speed Configuration Descriptor -------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x07 (Other_speed_configuration Descriptor)
    wTotalLength             : 0x0058 (88 bytes)
    bNumInterfaces           : 0x02 (2 Interfaces)
    bConfigurationValue      : 0x01 (Configuration 1)
    iConfiguration           : 0x00 (No String Descriptor)
    bmAttributes             : 0xC0
     D7: Reserved, set 1     : 0x01
     D6: Self Powered        : 0x01 (yes)
     D5: Remote Wakeup       : 0x00 (no)
     D4..0: Reserved, set 0  : 0x00
    MaxPower                 : 0x00 (0 mA)
    Data (HexDump)           : 09 07 58 00 02 01 00 C0 00 08 0B 00 02 02 06 00   ..X.............
                               0B 09 04 00 00 01 02 06 00 08 05 24 00 10 01 05   ...........$....
                               24 06 00 01 0D 24 0F 09 00 00 00 00 EA 05 00 00   $....$..........
                               00 07 05 82 03 10 00 20 09 04 01 00 00 0A 00 00   ....... ........
                               00 09 04 01 01 02 0A 00 00 0A 07 05 81 02 40 00   ..............@.
                               00 07 05 01 02 40 00 00                           .....@..
    
            ------------------- IAD Descriptor --------------------
    bLength                  : 0x08 (8 bytes)
    bDescriptorType          : 0x0B
    bFirstInterface          : 0x00
    bInterfaceCount          : 0x02
    bFunctionClass           : 0x02 (Communications and CDC Control)
    bFunctionSubClass        : 0x06
    bFunctionProtocol        : 0x00
    iFunction                : 0x0B (String Descriptor 11)
     Language 0x0409         : "CDC ECM"
    Data (HexDump)           : 08 0B 00 02 02 06 00 0B                           ........
    
            ---------------- Interface Descriptor -----------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x04 (Interface Descriptor)
    bInterfaceNumber         : 0x00
    bAlternateSetting        : 0x00
    bNumEndpoints            : 0x01 (1 Endpoint)
    bInterfaceClass          : 0x02 (Communications and CDC Control)
    bInterfaceSubClass       : 0x06 (Ethernet Networking Control Model)
    bInterfaceProtocol       : 0x00 (No class specific protocol required)
    iInterface               : 0x08 (String Descriptor 8)
     Language 0x0409         : "CDC Ethernet Control Model (ECM)"
    Data (HexDump)           : 09 04 00 00 01 02 06 00 08                        .........
    
            -------------- CDC Interface Descriptor ---------------
    bFunctionLength          : 0x05 (5 bytes)
    bDescriptorType          : 0x24 (Interface)
    bDescriptorSubType       : 0x00 (Header Functional Descriptor)
    bcdCDC                   : 0x110 (CDC Version 1.10)
    Data (HexDump)           : 05 24 00 10 01                                    .$...
    
            -------------- CDC Interface Descriptor ---------------
    bFunctionLength          : 0x05 (5 bytes)
    bDescriptorType          : 0x24 (Interface)
    bDescriptorSubType       : 0x06 (Union Functional Descriptor)
    bControlInterface        : 0x00
    bSubordinateInterface[0] : 0x01
    Data (HexDump)           : 05 24 06 00 01                                    .$...
    
            -------------- CDC Interface Descriptor ---------------
    bFunctionLength          : 0x0D (13 bytes)
    bDescriptorType          : 0x24 (Interface)
    bDescriptorSubType       : 0x0F (Ethernet Networking Functional Descriptor)
    Data (HexDump)           : 0D 24 0F 09 00 00 00 00 EA 05 00 00 00            .$...........
    
            ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x82 (Direction=IN EndpointID=2)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0010
     Bits 15..13             : 0x00 (reserved, must be zero)
     Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
     Bits 10..0              : 0x10 (16 bytes per packet)
    bInterval                : 0x20 (2147483648 microframes -> 4292819813 ms)
    Data (HexDump)           : 07 05 82 03 10 00 20                              ...... 
    
            ---------------- Interface Descriptor -----------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x04 (Interface Descriptor)
    bInterfaceNumber         : 0x01
    bAlternateSetting        : 0x00
    bNumEndpoints            : 0x00 (Default Control Pipe only)
    bInterfaceClass          : 0x0A (CDC-Data)
    bInterfaceSubClass       : 0x00
    bInterfaceProtocol       : 0x00
    iInterface               : 0x00 (No String Descriptor)
    Data (HexDump)           : 09 04 01 00 00 0A 00 00 00                        .........
    
            ---------------- Interface Descriptor -----------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x04 (Interface Descriptor)
    bInterfaceNumber         : 0x01
    bAlternateSetting        : 0x01
    bNumEndpoints            : 0x02 (2 Endpoints)
    bInterfaceClass          : 0x0A (CDC-Data)
    bInterfaceSubClass       : 0x00
    bInterfaceProtocol       : 0x00
    iInterface               : 0x0A (String Descriptor 10)
     Language 0x0409         : "CDC Ethernet Data"
    Data (HexDump)           : 09 04 01 01 02 0A 00 00 0A                        .........
    
            ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x81 (Direction=IN EndpointID=1)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0040 (max 64 bytes)
    bInterval                : 0x00 (never NAKs)
    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 (max 64 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 01 02 40 00 00                              ....@..
    
          ---------- Binary Object Store (BOS) Descriptor -----------
    bLength                  : 0x05 (5 bytes)
    bDescriptorType          : 0x0F (Binary Object Store)
    wTotalLength             : 0x000C (12 bytes)
    bNumDeviceCaps           : 0x01
    Data (HexDump)           : 05 0F 0C 00 01                                    .....
    
            ------------- USB 2.0 Extension Descriptor ------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x10 (Device Capability Descriptor)
    bDevCapabilityType       : 0x02 (USB 2.0 Extension)
    bmAttributes             : 0x10E
     LPMCapable              : 1 (Link Power Management protocol is supported)
     BESLAndAlternateHIRD    : 1 (BESL & Alternate HIRD definitions are supported)
     BaselineBESLValid       : 1 (valid)
     DeepBESLValid           : 0 (not valid)
     BaselineBESL            : 1 (150 µs)
     DeepBESL                : 0
    Data (HexDump)           : 07 10 02 0E 01 00 00                              .......
    
          -------------------- String Descriptors -------------------
                 ------ String Descriptor 0 ------
    bLength                  : 0x04 (4 bytes)
    bDescriptorType          : 0x03 (String Descriptor)
    Language ID[0]           : 0x0409 (English - United States)
    Data (HexDump)           : 04 03 09 04                                       ....
                 ------ String Descriptor 1 ------
    bLength                  : 0x4A (74 bytes)
    bDescriptorType          : 0x03 (String Descriptor)
    Language 0x0409          : "Linux 5.10.168-rt83 with dwc3-gadget"
    Data (HexDump)           : 4A 03 4C 00 69 00 6E 00 75 00 78 00 20 00 35 00   J.L.i.n.u.x. .5.
                               2E 00 31 00 30 00 2E 00 31 00 36 00 38 00 2D 00   ..1.0...1.6.8.-.
                               72 00 74 00 38 00 33 00 20 00 77 00 69 00 74 00   r.t.8.3. .w.i.t.
                               68 00 20 00 64 00 77 00 63 00 33 00 2D 00 67 00   h. .d.w.c.3.-.g.
                               61 00 64 00 67 00 65 00 74 00                     a.d.g.e.t.
                 ------ String Descriptor 2 ------
    bLength                  : 0x2C (44 bytes)
    bDescriptorType          : 0x03 (String Descriptor)
    Language 0x0409          : "RNDIS/Ethernet Gadget"
    Data (HexDump)           : 2C 03 52 00 4E 00 44 00 49 00 53 00 2F 00 45 00   ,.R.N.D.I.S./.E.
                               74 00 68 00 65 00 72 00 6E 00 65 00 74 00 20 00   t.h.e.r.n.e.t. .
                               47 00 61 00 64 00 67 00 65 00 74 00               G.a.d.g.e.t.
                 ------ String Descriptor 4 ------
    bLength                  : 0x3A (58 bytes)
    bDescriptorType          : 0x03 (String Descriptor)
    Language 0x0409          : "RNDIS Communications Control"
    Data (HexDump)           : 3A 03 52 00 4E 00 44 00 49 00 53 00 20 00 43 00   :.R.N.D.I.S. .C.
                               6F 00 6D 00 6D 00 75 00 6E 00 69 00 63 00 61 00   o.m.m.u.n.i.c.a.
                               74 00 69 00 6F 00 6E 00 73 00 20 00 43 00 6F 00   t.i.o.n.s. .C.o.
                               6E 00 74 00 72 00 6F 00 6C 00                     n.t.r.o.l.
                 ------ String Descriptor 5 ------
    bLength                  : 0x28 (40 bytes)
    bDescriptorType          : 0x03 (String Descriptor)
    Language 0x0409          : "RNDIS Ethernet Data"
    Data (HexDump)           : 28 03 52 00 4E 00 44 00 49 00 53 00 20 00 45 00   (.R.N.D.I.S. .E.
                               74 00 68 00 65 00 72 00 6E 00 65 00 74 00 20 00   t.h.e.r.n.e.t. .
                               44 00 61 00 74 00 61 00                           D.a.t.a.
                 ------ String Descriptor 6 ------
    bLength                  : 0x0C (12 bytes)
    bDescriptorType          : 0x03 (String Descriptor)
    Language 0x0409          : "RNDIS"
    Data (HexDump)           : 0C 03 52 00 4E 00 44 00 49 00 53 00               ..R.N.D.I.S.
                 ------ String Descriptor 8 ------
    bLength                  : 0x42 (66 bytes)
    bDescriptorType          : 0x03 (String Descriptor)
    Language 0x0409          : "CDC Ethernet Control Model (ECM)"
    Data (HexDump)           : 42 03 43 00 44 00 43 00 20 00 45 00 74 00 68 00   B.C.D.C. .E.t.h.
                               65 00 72 00 6E 00 65 00 74 00 20 00 43 00 6F 00   e.r.n.e.t. .C.o.
                               6E 00 74 00 72 00 6F 00 6C 00 20 00 4D 00 6F 00   n.t.r.o.l. .M.o.
                               64 00 65 00 6C 00 20 00 28 00 45 00 43 00 4D 00   d.e.l. .(.E.C.M.
                               29 00                                             ).
                 ------ String Descriptor 10 ------
    bLength                  : 0x24 (36 bytes)
    bDescriptorType          : 0x03 (String Descriptor)
    Language 0x0409          : "CDC Ethernet Data"
    Data (HexDump)           : 24 03 43 00 44 00 43 00 20 00 45 00 74 00 68 00   $.C.D.C. .E.t.h.
                               65 00 72 00 6E 00 65 00 74 00 20 00 44 00 61 00   e.r.n.e.t. .D.a.
                               74 00 61 00                                       t.a.
                 ------ String Descriptor 11 ------
    bLength                  : 0x10 (16 bytes)
    bDescriptorType          : 0x03 (String Descriptor)
    Language 0x0409          : "CDC ECM"
    Data (HexDump)           : 10 03 43 00 44 00 43 00 20 00 45 00 43 00 4D 00   ..C.D.C. .E.C.M.
    

  • Hi Hao,

    Do you mean when attach the AM62x USB port to the PC USB2.0 port, the issue doesn't happen; but if attach to the PC USB3.0 port, it happens?

    I don't have a Windows PC to test with, but the kernel message basically means the USB drivers on AM62x doesn't understand the received RNDIS message.

    Can you first please try to disable "RNDIS support" in the Ethernet Gadget in kernel menuconfig to see if the issue still happens?

  • hi bin

     Although it is a problem related to rndis, I really appreciate your help.

    Do you mean when attach the AM62x USB port to the PC USB2.0 port, the issue doesn't happen; but if attach to the PC USB3.0 port, it happens?

    Yes, this phenomenon only occurs when the USB is directly connected to a computer with USB3.0 or higher.

    I don't have a Windows PC to test with, but the kernel message basically means the USB drivers on AM62x doesn't understand the received RNDIS message.

    I checked the rndis.c driver file and found that the driver does not have this definition when parsing the switch. According to the rndis, this 0x800000004 message should be sent from Linux to PC, and should not appear on the Linux side. I confused about why the message that rndis should send appears in the rndis receive. Is there a problem with the dwc3 layer?When the problem in the picture occurs, check that the USB status is in a suspended state

    Can you first please try to disable "RNDIS support" in the Ethernet Gadget in kernel menuconfig to see if the issue still happens?

    I will give it a try, I found the issue through rndis, I don't know if there's any way to test the enumeration problem USB2.0 and USB3.0 without going through rndis.