none
usbccgp.sys fails to start when composite device connected RRS feed

  • Question

  • I have a composite usb device (descriptors below) that when I plug the device into Windows system the usbccgp driver fails to start.  The event log details the error from the usbccgp service.  It indicates the problem code 0xa and problem status 0xc000009c (STATUS_DEVICE_DATA_ERROR).  I'm trying to understand why the driver fails to start.

    Descriptors:

    Information for device HELIX    (VID=0x0E41 PID=0x4241): 
    Version of TDD: 1.40 Date: Feb 23 2012 Time: 15:28:27

    Connection Information:
    ------------------------------

    Connection status: Device connected
    Device actual bus speed: High 
    Device is hub: No
    Device adress: 0x0005
    Current configuration value: 0x01
    Number of open pipes: 4

    Device Descriptor:
    ------------------------------

    Value Valuename
    0x12 bLength
    0x01 bDescriptorType
    0x0200 bcdUSB
    0xEF bDeviceClass   (Miscellaneous device)
    0x02 bDeviceSubClass   
    0x01 bDeviceProtocol   
    0x40 bMaxPacketSize0   (64 Bytes)
    0x0E41 idVendor
    0x4241 idProduct
    0x0200 bcdDevice
    0x01 iManufacturer   (LINE 6)
    0x02 iProduct   (HELIX   )
    0x03 iSerialNumber   (   2531660)
    0x01 bNumConfigurations
    Hex dump: 
    0x12 0x01 0x00 0x02 0xEF 0x02 0x01 0x40 0x41 0x0E 
    0x41 0x42 0x00 0x02 0x01 0x02 0x03 0x01 

    Device Qualifier Descriptor:
    ------------------------------

    Value Valuename
    0x0A bLength
    0x06 bDescriptorType
    0x0200 bcdUSB
    0x00 bDeviceClass   
    0x00 bDeviceSubClass   
    0x00 bDeviceProtocol   
    0x40 bMaxPacketSize0   (64 Bytes)
    0x01 bNumConfigurations 
    0x00 bReserved 
    Hex dump: 
    0x0A 0x06 0x00 0x02 0x00 0x00 0x00 0x40 0x01 0x00 

    Configuration Descriptor:
    ------------------------------

    Value Valuename
    0x09 bLength
    0x02 bDescriptorType
    0x0113 wTotalLength
    0x05 bNumInterfaces
    0x01 bConfigurationValue
    0x00 iConfiguration
    0xC0 bmAttributes   (Self-powered Device)
    0x32 MaxPower   (100 mA)
    Hex dump: 
    0x09 0x02 0x13 0x01 0x05 0x01 0x00 0xC0 0x32 

    Interface Association Descriptor:
    ------------------------------

    Value Valuename
    0x08 bLength
    0x0B bDescriptorType
    0x01 bFirstInterface
    0x03 bInterfaceCount
    0x01 bFunctionClass   (Audio Device Class)
    0x00 bFunctionSubClass   
    0x20 bFunctionProtocol   
    0x00 iFunction
    Hex dump: 
    0x08 0x0B 0x01 0x03 0x01 0x00 0x20 0x00 

    Interface Descriptor:
    ------------------------------

    Value Valuename
    0x09 bLength
    0x04 bDescriptorType
    0x00 bInterfaceNumber
    0x00 bAlternateSetting
    0x02 bNumEndPoints
    0xFF bInterfaceClass   (Vendor specific)
    0x00 bInterfaceSubClass   
    0x00 bInterfaceProtocol   
    0x04 iInterface   (Msg Pipe)
    Hex dump: 
    0x09 0x04 0x00 0x00 0x02 0xFF 0x00 0x00 0x04 

    Endpoint Descriptor:
    ------------------------------

    Value Valuename
    0x07 bLength
    0x05 bDescriptorType
    0x81 bEndpointAddress   (In-Endpoint)
    0x02 bmAttributes
       Transfer Type:           Bulk-Transfer
       Synchronization Type:    None
       Usage Type:              Data
    0x0200 wMaxPacketSize   (512 Bytes) 
    0x00 bInterval
    Hex dump: 
    0x07 0x05 0x81 0x02 0x00 0x02 0x00 

    Endpoint Descriptor:
    ------------------------------

    Value Valuename
    0x07 bLength
    0x05 bDescriptorType
    0x01 bEndpointAddress   (Out-Endpoint)
    0x02 bmAttributes
       Transfer Type:           Bulk-Transfer
       Synchronization Type:    None
       Usage Type:              Data
    0x0200 wMaxPacketSize   (512 Bytes) 
    0x00 bInterval
    Hex dump: 
    0x07 0x05 0x01 0x02 0x00 0x02 0x00 

    Interface Descriptor:
    ------------------------------

    Value Valuename
    0x09 bLength
    0x04 bDescriptorType
    0x01 bInterfaceNumber
    0x00 bAlternateSetting
    0x00 bNumEndPoints
    0x01 bInterfaceClass   (Audio Device Class)
    0x01 bInterfaceSubClass   (Audio Control Interface)
    0x20 bInterfaceProtocol   
    0x06 iInterface   (HELIX Audio)
    Hex dump: 
    0x09 0x04 0x01 0x00 0x00 0x01 0x01 0x20 0x06 

    AC Interface Header Descriptor:
    ------------------------------

    Value Valuename
    0x09 bLength
    0x24 bDescriptorType
    0x01 bDescriptorSubtype
    0x0200 bcdADC
    0x0A bCategory
    0x002E wTotalLength
    0x00 bmControls
    Hex dump: 
    0x09 0x24 0x01 0x00 0x02 0x0A 0x2E 0x00 0x00 

    AC Clock Source Descriptor:
    ------------------------------

    Value Valuename
    0x08 bLength
    0x24 bDescriptorType
    0x0A bDescriptorSubtype
    0x10 bClockID
    0x01 bmAttributes
    0x00 bmControls
    0x00 bAssocTerminal
    0x00 iClockSource
    Hex dump: 
    0x08 0x24 0x0A 0x10 0x01 0x00 0x00 0x00 

    AC Input Terminal Descriptor:
    ------------------------------

    Value Valuename
    0x11 bLength
    0x24 bDescriptorType
    0x02 bDescriptorSubtype
    0x20 bTerminalID
    0x0201 wTerminalType   (Microphone)
    0x40 bAssocTerminal
    0x10 bCSourceID
    0x08 bNrChannels
    0x00000000 bmChannelConfig
    0x00 iChannelNames
    0x00 bmControls
    0x00 iTerminal
    Hex dump: 
    0x11 0x24 0x02 0x20 0x01 0x02 0x40 0x10 0x08 0x00 
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 

    AC Output Terminal Descriptor:
    ------------------------------

    Value Valuename
    0x0C bLength
    0x24 bDescriptorType
    0x03 bDescriptorSubtype
    0x40 bTerminalID
    0x0301 wTerminalType   (Speaker)
    0x20 bAssocTerminal
    0x20 bSourceID
    0x10 bCSourceID
    0x0000 bmControls
    0x00 iTerminal
    Hex dump: 
    0x0C 0x24 0x03 0x40 0x01 0x03 0x20 0x20 0x10 0x00 
    0x00 0x00 

    Interface Descriptor:
    ------------------------------

    Value Valuename
    0x09 bLength
    0x04 bDescriptorType
    0x02 bInterfaceNumber
    0x00 bAlternateSetting
    0x00 bNumEndPoints
    0x01 bInterfaceClass   (Audio Device Class)
    0x02 bInterfaceSubClass   (Audio Streaming Interface)
    0x20 bInterfaceProtocol   
    0x00 iInterface
    Hex dump: 
    0x09 0x04 0x02 0x00 0x00 0x01 0x02 0x20 0x00 

    Interface Descriptor:
    ------------------------------

    Value Valuename
    0x09 bLength
    0x04 bDescriptorType
    0x02 bInterfaceNumber
    0x01 bAlternateSetting
    0x01 bNumEndPoints
    0x01 bInterfaceClass   (Audio Device Class)
    0x02 bInterfaceSubClass   (Audio Streaming Interface)
    0x20 bInterfaceProtocol   
    0x00 iInterface
    Hex dump: 
    0x09 0x04 0x02 0x01 0x01 0x01 0x02 0x20 0x00 

    AS Interface Descriptor:
    ------------------------------

    Value Valuename
    0x10 bLength
    0x24 bDescriptorType
    0x01 bDescriptorSubtype
    0x20 bTerminalLink
    0x00 bmControls
    0x01 bFormatType
    0x00000001 bmFormats
    0x08 bNrChannels
    0x00000000 bmChannelConfig
    0x00 iChannelNames
    Hex dump: 
    0x10 0x24 0x01 0x20 0x00 0x01 0x01 0x00 0x00 0x00 
    0x08 0x00 0x00 0x00 0x00 0x00 

    AS Format Type 1 Descriptor:
    ------------------------------

    Value Valuename
    0x06 bLength
    0x24 bDescriptorType
    0x02 bDescriptorSubtype
    0x01 bFormatType
    0x04 bSubslotSize
    0x18 bBitResolution   (24 Bits/sample)
    Hex dump: 
    0x06 0x24 0x02 0x01 0x04 0x18 

    Endpoint Descriptor:
    ------------------------------

    Value Valuename
    0x07 bLength
    0x05 bDescriptorType
    0x03 bEndpointAddress   (Out-Endpoint)
    0x05 bmAttributes
       Transfer Type:           Isochronous-Transfer
       Synchronization Type:    Asynchronous
       Usage Type:              Data
    0x00E0 wMaxPacketSize   (224 Bytes) 
    0x01 bInterval
    Hex dump: 
    0x07 0x05 0x03 0x05 0xE0 0x00 0x01 

    AS Isochronous Data Endpoint Descriptor:
    ------------------------------

    Value Valuename
    0x08 bLength
    0x25 bDescriptorType
    0x01 bDescriptorSubtype
    0x00 bmAttributes
    0x00 bmControls
    0x00 bLockDelayUnits   (Undefined)
    0x0000 wLockDelay
    Hex dump: 
    0x08 0x25 0x01 0x00 0x00 0x00 0x00 0x00 

    Interface Descriptor:
    ------------------------------

    Value Valuename
    0x09 bLength
    0x04 bDescriptorType
    0x03 bInterfaceNumber
    0x00 bAlternateSetting
    0x00 bNumEndPoints
    0x01 bInterfaceClass   (Audio Device Class)
    0x02 bInterfaceSubClass   (Audio Streaming Interface)
    0x20 bInterfaceProtocol   
    0x00 iInterface
    Hex dump: 
    0x09 0x04 0x03 0x00 0x00 0x01 0x02 0x20 0x00 

    Interface Descriptor:
    ------------------------------

    Value Valuename
    0x09 bLength
    0x04 bDescriptorType
    0x03 bInterfaceNumber
    0x01 bAlternateSetting
    0x01 bNumEndPoints
    0x01 bInterfaceClass   (Audio Device Class)
    0x02 bInterfaceSubClass   (Audio Streaming Interface)
    0x20 bInterfaceProtocol   
    0x00 iInterface
    Hex dump: 
    0x09 0x04 0x03 0x01 0x01 0x01 0x02 0x20 0x00 

    AS Interface Descriptor:
    ------------------------------

    Value Valuename
    0x10 bLength
    0x24 bDescriptorType
    0x01 bDescriptorSubtype
    0x40 bTerminalLink
    0x00 bmControls
    0x01 bFormatType
    0x00000001 bmFormats
    0x08 bNrChannels
    0x00000000 bmChannelConfig
    0x00 iChannelNames
    Hex dump: 
    0x10 0x24 0x01 0x40 0x00 0x01 0x01 0x00 0x00 0x00 
    0x08 0x00 0x00 0x00 0x00 0x00 

    AS Format Type 1 Descriptor:
    ------------------------------

    Value Valuename
    0x06 bLength
    0x24 bDescriptorType
    0x02 bDescriptorSubtype
    0x01 bFormatType
    0x04 bSubslotSize
    0x18 bBitResolution   (24 Bits/sample)
    Hex dump: 
    0x06 0x24 0x02 0x01 0x04 0x18 

    Endpoint Descriptor:
    ------------------------------

    Value Valuename
    0x07 bLength
    0x05 bDescriptorType
    0x83 bEndpointAddress   (In-Endpoint)
    0x25 bmAttributes
       Transfer Type:           Isochronous-Transfer
       Synchronization Type:    Asynchronous
       Usage Type:              Implicit
    0x00E0 wMaxPacketSize   (224 Bytes) 
    0x01 bInterval
    Hex dump: 
    0x07 0x05 0x83 0x25 0xE0 0x00 0x01 

    AS Isochronous Data Endpoint Descriptor:
    ------------------------------

    Value Valuename
    0x08 bLength
    0x25 bDescriptorType
    0x01 bDescriptorSubtype
    0x00 bmAttributes
    0x00 bmControls
    0x00 bLockDelayUnits   (Undefined)
    0x0000 wLockDelay
    Hex dump: 
    0x08 0x25 0x01 0x00 0x00 0x00 0x00 0x00 

    Interface Descriptor:
    ------------------------------

    Value Valuename
    0x09 bLength
    0x04 bDescriptorType
    0x04 bInterfaceNumber
    0x00 bAlternateSetting
    0x02 bNumEndPoints
    0x01 bInterfaceClass   (Audio Device Class)
    0x03 bInterfaceSubClass   (MIDI Streaming Interface)
    0x00 bInterfaceProtocol   
    0x07 iInterface   (HELIX MIDI)
    Hex dump: 
    0x09 0x04 0x04 0x00 0x02 0x01 0x03 0x00 0x07 

    MS Interface Header Descriptor:
    ------------------------------

    Value Valuename
    0x07 bLength
    0x24 bDescriptorType
    0x01 bDescriptorSubtype
    0x0100 bcdMSC
    0x003D wTotalLength
    Hex dump: 
    0x07 0x24 0x01 0x00 0x01 0x3D 0x00 

    MS MIDI IN Jack Descriptor:
    ------------------------------

    Value Valuename
    0x06 bLength
    0x24 bDescriptorType
    0x02 bDescriptorSubtype
    0x01 bJackType
    0x01 bJackID
    0x00 iJack
    Hex dump: 
    0x06 0x24 0x02 0x01 0x01 0x00 

    MS MIDI IN Jack Descriptor:
    ------------------------------

    Value Valuename
    0x06 bLength
    0x24 bDescriptorType
    0x02 bDescriptorSubtype
    0x02 bJackType
    0x02 bJackID
    0x00 iJack
    Hex dump: 
    0x06 0x24 0x02 0x02 0x02 0x00 

    MS MIDI OUT Jack Descriptor:
    ------------------------------

    Value Valuename
    0x09 bLength
    0x24 bDescriptorType
    0x03 bDescriptorSubtype
    0x01 bJackType
    0x03 bJackID
    0x01 bNrInputPins
    0x02 baSourceID(1)
    0x01 BaSourcePin(1)
    0x00 iJack
    Hex dump: 
    0x09 0x24 0x03 0x01 0x03 0x01 0x02 0x01 0x00 

    MS MIDI OUT Jack Descriptor:
    ------------------------------

    Value Valuename
    0x09 bLength
    0x24 bDescriptorType
    0x03 bDescriptorSubtype
    0x02 bJackType
    0x04 bJackID
    0x01 bNrInputPins
    0x01 baSourceID(1)
    0x01 BaSourcePin(1)
    0x00 iJack
    Hex dump: 
    0x09 0x24 0x03 0x02 0x04 0x01 0x01 0x01 0x00 

    Endpoint Descriptor:
    ------------------------------

    Value Valuename
    0x07 bLength
    0x05 bDescriptorType
    0x04 bEndpointAddress   (Out-Endpoint)
    0x02 bmAttributes
       Transfer Type:           Bulk-Transfer
       Synchronization Type:    None
       Usage Type:              Data
    0x0200 wMaxPacketSize   (512 Bytes) 
    0x00 bInterval
    Hex dump: 
    0x07 0x05 0x04 0x02 0x00 0x02 0x00 

    MS Bulk Data Endpoint Descriptor:
    ------------------------------

    Value Valuename
    0x05 bLength
    0x25 bDescriptorType
    0x01 bDescriptorSubtype
    0x01 bNumEmbMIDIJack
    0x01 baAssocJackID(1)
    Hex dump: 
    0x05 0x25 0x01 0x01 0x01 

    Endpoint Descriptor:
    ------------------------------

    Value Valuename
    0x07 bLength
    0x05 bDescriptorType
    0x84 bEndpointAddress   (In-Endpoint)
    0x02 bmAttributes
       Transfer Type:           Bulk-Transfer
       Synchronization Type:    None
       Usage Type:              Data
    0x0200 wMaxPacketSize   (512 Bytes) 
    0x00 bInterval
    Hex dump: 
    0x07 0x05 0x84 0x02 0x00 0x02 0x00 

    MS Bulk Data Endpoint Descriptor:
    ------------------------------

    Value Valuename
    0x05 bLength
    0x25 bDescriptorType
    0x01 bDescriptorSubtype
    0x01 bNumEmbMIDIJack
    0x03 baAssocJackID(1)
    Hex dump: 
    0x05 0x25 0x01 0x01 0x03 

    Configuration descriptor and all subsequent descriptors are not available. Error code: 0x0000001F

    Whole Device Descriptor as hex dump: 
    0x12, 0x01, 0x00, 0x02, 0xEF, 0x02, 0x01, 0x40, 0x41, 0x0E, 
    0x41, 0x42, 0x00, 0x02, 0x01, 0x02, 0x03, 0x01

    Whole Device Qualifier Descriptor as hex dump: 
    0x0A, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00

    Whole Configuration Descriptor as hex dump: 
    0x09, 0x02, 0x13, 0x01, 0x05, 0x01, 0x00, 0xC0, 0x32, 0x08, 
    0x0B, 0x01, 0x03, 0x01, 0x00, 0x20, 0x00, 0x09, 0x04, 0x00, 
    0x00, 0x02, 0xFF, 0x00, 0x00, 0x04, 0x07, 0x05, 0x81, 0x02, 
    0x00, 0x02, 0x00, 0x07, 0x05, 0x01, 0x02, 0x00, 0x02, 0x00, 
    0x09, 0x04, 0x01, 0x00, 0x00, 0x01, 0x01, 0x20, 0x06, 0x09, 
    0x24, 0x01, 0x00, 0x02, 0x0A, 0x2E, 0x00, 0x00, 0x08, 0x24, 
    0x0A, 0x10, 0x01, 0x00, 0x00, 0x00, 0x11, 0x24, 0x02, 0x20, 
    0x01, 0x02, 0x40, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x0C, 0x24, 0x03, 0x40, 0x01, 0x03, 0x20, 
    0x20, 0x10, 0x00, 0x00, 0x00, 0x09, 0x04, 0x02, 0x00, 0x00, 
    0x01, 0x02, 0x20, 0x00, 0x09, 0x04, 0x02, 0x01, 0x01, 0x01, 
    0x02, 0x20, 0x00, 0x10, 0x24, 0x01, 0x20, 0x00, 0x01, 0x01, 
    0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 
    0x24, 0x02, 0x01, 0x04, 0x18, 0x07, 0x05, 0x03, 0x05, 0xE0, 
    0x00, 0x01, 0x08, 0x25, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x09, 0x04, 0x03, 0x00, 0x00, 0x01, 0x02, 0x20, 0x00, 0x09, 
    0x04, 0x03, 0x01, 0x01, 0x01, 0x02, 0x20, 0x00, 0x10, 0x24, 
    0x01, 0x40, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x06, 0x24, 0x02, 0x01, 0x04, 0x18, 
    0x07, 0x05, 0x83, 0x25, 0xE0, 0x00, 0x01, 0x08, 0x25, 0x01, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x04, 0x04, 0x00, 0x02, 
    0x01, 0x03, 0x00, 0x07, 0x07, 0x24, 0x01, 0x00, 0x01, 0x3D, 
    0x00, 0x06, 0x24, 0x02, 0x01, 0x01, 0x00, 0x06, 0x24, 0x02, 
    0x02, 0x02, 0x00, 0x09, 0x24, 0x03, 0x01, 0x03, 0x01, 0x02, 
    0x01, 0x00, 0x09, 0x24, 0x03, 0x02, 0x04, 0x01, 0x01, 0x01, 
    0x00, 0x07, 0x05, 0x04, 0x02, 0x00, 0x02, 0x00, 0x05, 0x25, 
    0x01, 0x01, 0x01, 0x07, 0x05, 0x84, 0x02, 0x00, 0x02, 0x00, 
    0x05, 0x25, 0x01, 0x01, 0x03

    Connectionpath for device: 

    Intel(R) 5 Series/3400 Series Chipset Family USB Enhanced Host Controller - 3B34
    RootHub
    Generic USB Hub
    HELIX    (VID=0x0E41 PID=0x4241)

    Friday, May 6, 2016 8:43 PM

Answers

  • You do have a couple of problems in your descriptors.

    You have 5 interfaces:
    0 = custom bulk
    1 = Audio Control
    2 = Audio Streaming
    3 = Audio Streaming
    4 = MIDI Streaming

    Your IAD groups 1, 2 and 3 together, but the MIDI streaming interface stands alone.  Did you mean to have another Audio Control interface for the MIDI?

    Also, the terminal list in your Audio Control descriptors is wrong.  All you have is a physical microphone (0x20) connecting to a physical speaker (0x40).  There's no reference to the streaming interfaces, and this graph is how usbccgp figures out which interfaces it needs.  You need to have the physical microphone unit connect to your streaming output interface, and then have your streaming input interface connect to your physical speaker unit.  Two separate graphs, because this is two separate audio devices.


    Tim Roberts, Driver MVP Providenza & Boekelheide, Inc.

    Friday, May 6, 2016 11:26 PM

All replies

  • Turn on tracing (docs here) and you should see why the driver doesn't like your device

     -Brian


    Azius Developer Training www.azius.com Windows device driver, internals, security, & forensics training and consulting. Blog at www.azius.com/blog

    Friday, May 6, 2016 10:21 PM
    Moderator
  • You do have a couple of problems in your descriptors.

    You have 5 interfaces:
    0 = custom bulk
    1 = Audio Control
    2 = Audio Streaming
    3 = Audio Streaming
    4 = MIDI Streaming

    Your IAD groups 1, 2 and 3 together, but the MIDI streaming interface stands alone.  Did you mean to have another Audio Control interface for the MIDI?

    Also, the terminal list in your Audio Control descriptors is wrong.  All you have is a physical microphone (0x20) connecting to a physical speaker (0x40).  There's no reference to the streaming interfaces, and this graph is how usbccgp figures out which interfaces it needs.  You need to have the physical microphone unit connect to your streaming output interface, and then have your streaming input interface connect to your physical speaker unit.  Two separate graphs, because this is two separate audio devices.


    Tim Roberts, Driver MVP Providenza & Boekelheide, Inc.

    Friday, May 6, 2016 11:26 PM