AnsweredAssumed Answered

Not able to get proper USB_DESC_TYPE_CS_INTERFACE using usb host cdc

Question asked by Santhosh Seetharaman on Feb 7, 2014
Latest reply on Feb 11, 2014 by Santhosh Seetharaman

Hi All,

 

I am trying to get the usb host cdc_serial example to work on my custom board. (The mass storage device example works on my board, so I am assuming the HW is working fine)

 

Here is more data on my issue.

 

I am using 4.0.2 usb bare metal stack. I am using Freescale MK60FN1M0xxx15

I am trying to talk to a USB to serial device from FTDI called Chipx. Here is the info about the device.

Header 1

[Port2]  :  USB Serial Converter

 

 

          ---===>Device Information<===---

English product name: "Chipi-X"

 

 

ConnectionStatus:              

Current Config Value:        0x01  -> Device Bus Speed: Full

Device Address:                0x04

Open Pipes:                           2

 

 

          ===>Endpoint Descriptor<===

bLength:                           0x07

bDescriptorType:               0x05

bEndpointAddress:            0x81  -> Direction: IN - EndpointID: 1

bmAttributes:                    0x02  -> Bulk Transfer Type

wMaxPacketSize:             0x0040 = 0x40 bytes

bInterval:                         0x00

 

 

          ===>Endpoint Descriptor<===

bLength:                           0x07

bDescriptorType:               0x05

bEndpointAddress:            0x02  -> Direction: OUT - EndpointID: 2

bmAttributes:                    0x02  -> Bulk Transfer Type

wMaxPacketSize:             0x0040 = 0x40 bytes

bInterval:                         0x00

 

 

          ===>Device Descriptor<===

bLength:                           0x12

bDescriptorType:               0x01

bcdUSB:                          0x0200

bDeviceClass:                   0x00  -> This is an Interface Class Defined Device

bDeviceSubClass:             0x00

bDeviceProtocol:               0x00

bMaxPacketSize0:            0x08 = (8) Bytes

idVendor:                        0x0403 = Future Technology Devices International Limited

idProduct:                       0x6015

bcdDevice:                       0x1000

iManufacturer:                     0x01

     English (United States)  "FTDI"

iProduct:                          0x02

     English (United States)  "Chipi-X"

iSerialNumber:                     0x03

     English (United States)  "FTWEIQP5"

bNumConfigurations:                0x01

 

 

          ===>Configuration Descriptor<===

bLength:                           0x09

bDescriptorType:               0x02

wTotalLength:                   0x0020  -> Validated

bNumInterfaces:                0x01

bConfigurationValue:          0x01

iConfiguration:                   0x00

bmAttributes:                    0xA0  -> Bus Powered

MaxPower:                       0x2D =  90 mA

 

 

          ===>Interface Descriptor<===

bLength:                           0x09

bDescriptorType:               0x04

bInterfaceNumber:             0x00

bAlternateSetting:             0x00

bNumEndpoints:               0x02

bInterfaceClass:                0xFF  -> Vendor Specific Device

bInterfaceSubClass:          0xFF

*!*CAUTION:    This appears to be an invalid bInterfaceSubClass

bInterfaceProtocol:                0xFF

*!*WARNING:  must be set to PC_PROTOCOL_UNDEFINED 0 for this class

iInterface:                        0x02

     English (United States)  "Chipi-X"

*!*CAUTION:  0xFF is a prerelease Class ID

 

 

          ===>Endpoint Descriptor<===

bLength:                           0x07

bDescriptorType:               0x05

bEndpointAddress:            0x81  -> Direction: IN - EndpointID: 1

bmAttributes:                    0x02  -> Bulk Transfer Type

wMaxPacketSize:             0x0040 = 0x40 bytes

bInterval:                         0x00

 

 

          ===>Endpoint Descriptor<===

bLength:                           0x07

bDescriptorType:               0x05

bEndpointAddress:            0x02  -> Direction: OUT - EndpointID: 2

bmAttributes:                    0x02  -> Bulk Transfer Type

wMaxPacketSize:             0x0040 = 0x40 bytes

bInterval:                           0x00

 

When I plug in the device I get

 

CDC Control Interface Attach event

State = attached, Class = 255, Subclass = 255, Protocol = 255

 

But nothing after that. When I dig into the code,

 

usb_hostdev_get_descriptor () returns USBERR_NO_DESCRIPTOR, when I stepped into the function, the control goes to

 

if (ptr1.cfig->bDescriptorType == desc_type)    // The descriptor type is  desc_type = USB_DESC_TYPE_CS_INTERFACE

 

The only ptr1.cfig->bDescriptorType I get are

0x04

0x05

0x05

 

So the function returns some error and the code simply spins in a loop doing nothing.

 

Why is this happening? How can I go about solving it?

Outcomes