Superspeed HID

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
WGT_4383351
Level 5
Level 5
First like received

Can FX3 support superspeed mode that has HID interface plus bulk interface?

The single HID interface mouse+keyboard example doesn't enumerate as super speed. Can it enumerate as super speed?

0 Likes
1 Solution
Hemanth
Moderator
Moderator
Moderator
First like given First question asked 750 replies posted

Hi,

Please change the field: /* Total Length of Report Descriptor */ of HID Descriptor from 0x1C,0x00, to 111,0x00,

Regards,

Hemanth

Hemanth

View solution in original post

0 Likes
5 Replies
JayakrishnaT_76
Moderator
Moderator
Moderator
First question asked 1000 replies posted 750 replies posted

Hello,

Please let us know if your application is to have a composite device or not. According to my understanding, you wish to have a device having multiple interfaces. One is the HID interface and on the other interface, you wish to have a Bulk endpoint. Please let us know what exactly is the other interface that you are looking forward. Is it a vendor interface?

Best Regards,

Jayakrishna

Best Regards,
Jayakrishna
0 Likes

Yes, one vendor interface with bulk/interrupt endpoints, and one HID interface with one interrupt endpoint that contains mouse and keyboard as the example.

As a test, I add a interface with a bulk endpint to the super speed descriptor in the example (full and high speed descriptor not modified), but it still enumerates as non super speed non composite device with one interface of mouse and keyboard.

How does the system choose which speed to use under this condition?

I also find out there are differences in the example, not sure it is a typo or not:

full speed:

    /* Interface Descriptor */

    0x09,                           /* Descriptor size */

    CY_U3P_USB_INTRFC_DESCR,        /* Interface Descriptor type */

    CY_FX_USB_HID_INTF_0,             /* Interface number */

    0x00,                           /* Alternate setting number */

    0x01,                           /* Number of end points */

    0x03,                           /* Interface class : HID Class */

    0x00,                           /* Interface sub class : None */

    0x02,                           /* Interface protocol code : Mouse */

    0x00,                           /* Interface descriptor string index */

high speed:

    /* Interface Descriptor */

    0x09,                           /* Descriptor size */

    CY_U3P_USB_INTRFC_DESCR,        /* Interface Descriptor type */

    CY_FX_USB_HID_INTF_0,             /* Interface number */

    0x00,                           /* Alternate setting number */

    0x01,                           /* Number of end points */

    0x03,                           /* Interface class : HID Class */

    0x01,                           /* Interface sub class : None */

    0x02,                           /* Interface protocol code : Mouse */

    0x00,                           /* Interface descriptor string index */

super speed:

    /* Interface Descriptor */

    0x09,                           /* Descriptor size */

    CY_U3P_USB_INTRFC_DESCR,        /* Interface Descriptor type */

    CY_FX_USB_HID_INTF_0,             /* Interface number */

    0x00,                           /* Alternate setting number */

    0x01,                           /* Number of end points */

    0x03,                           /* Interface class */

    0x00,                           /* Interface sub class : None */

    0x02,                           /* Interface protocol code */

    0x00,                           /* Interface descriptor string index */

0 Likes
Hemanth
Moderator
Moderator
Moderator
First like given First question asked 750 replies posted

Hi,

I think you are referring to the project in How to Implement Multiple HID Class Functionalities with a Single HID interface – KBA228479

In that project, CyU3PConnectState() is called with second parameter as CyFalse. So, the device does not enumerate as superspeed device and changes made to super speed descriptors does not come into effect.

Regards,

Hemanth

Hemanth

When changing CyU3PConnectState to SS without other changes, the enumeration failed on Windows.

0 Likes
Hemanth
Moderator
Moderator
Moderator
First like given First question asked 750 replies posted

Hi,

Please change the field: /* Total Length of Report Descriptor */ of HID Descriptor from 0x1C,0x00, to 111,0x00,

Regards,

Hemanth

Hemanth
0 Likes