Composite USB device (keyboard + mouse) doesn't enumerate

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Composite USB device (keyboard + mouse) doesn't enumerate

Jump to solution
1,254 Views
laszlomonda
Contributor V

Hi guys,

 

I'm in the process of implementing a composite USB device featuring a keyboard and a mouse interface. Unfortunately, enumeration fails. I've just uploaded the code to GitHub.

 

I know that making this work is far from trivial, and I'd be happy to pay to an expert.

 

Thank you very much in advance!

- Laci

Labels (1)
0 Kudos
Reply
1 Solution
860 Views
Kan_Li
NXP TechSupport
NXP TechSupport

Hi Laci,

The latest KSDK 2.0 has provided such kind of demo , you may use it as a starting point for your application. Please kindly refer to  Welcome to Kinetis Expert | Kinetis Expert to get the download, and you will find that demo in the folder of, for example, C:\Freescale\SDK_2.0_FRDM-K64F\boards\frdmk64f\usb_examples\usb_device_composite_hid_mouse_hid_keyboard.

Hope that helps,


Have a great day,
Kan

NXP Technical Support
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

View solution in original post

0 Kudos
Reply
4 Replies
860 Views
ruslansirota
Contributor I

Hi,

Try to use this device descriptor:

uint8_t g_device_descriptor[DEVICE_DESCRIPTOR_SIZE] =

{

    DEVICE_DESCRIPTOR_SIZE,               /* "Device Descriptor Size        */

    USB_DEVICE_DESCRIPTOR,                /* "Device" Type of descriptor    */

    0x00,0x02,                                           /*  BCD USB version               */

    0xEF,                                              //DEVICE_DESC_DEVICE_CLASS,

  /*  Device Subclass is indicated in the interface descriptors  */

  0x02,                                              //DEVICE_DESC_DEVICE_SUBCLASS,

  /*  Device Protocol  */

  0x01,                                              //DEVICE_DESC_DEVICE_PROTOCOL,

    CONTROL_MAX_PACKET_SIZE,              /*  Max Packet size               */

    0xa2,0x15,                            /*  Vendor ID   */

    0x00, 0x02,                           /*  Product ID  */

    0x00, 0x02,                           /*  BCD Device version */

    0x01,                                 /*  Manufacturer string index     */

    0x02,                                 /*  Product string index          */

    0x00,                                 /*  Serial number string index    */

    0x01                                  /*  Number of configurations      */

};

It's mean that device defined to use interface descriptors for enumeration.

More information you can find: www.usb.org/developers/docs/whitepapers/iadclasscode_r10.pdf

And also you can find the Composite Device User's Guide.pdf in KSDK doc/usb folder.

Regards,

Ruslan

0 Kudos
Reply
860 Views
laszlomonda
Contributor V

Hi Ruslan,

I've tried your suggestion and it didn't work. I think the current device descriptor should be fine as it's the one used by the dev_hid_audio_bm_frdmk22f example which also implements a composite device.

Figuring this out would likely involve analyzing the USB communication between the host and device and correcting the code accordingly.

- Laci

0 Kudos
Reply
861 Views
Kan_Li
NXP TechSupport
NXP TechSupport

Hi Laci,

The latest KSDK 2.0 has provided such kind of demo , you may use it as a starting point for your application. Please kindly refer to  Welcome to Kinetis Expert | Kinetis Expert to get the download, and you will find that demo in the folder of, for example, C:\Freescale\SDK_2.0_FRDM-K64F\boards\frdmk64f\usb_examples\usb_device_composite_hid_mouse_hid_keyboard.

Hope that helps,


Have a great day,
Kan

NXP Technical Support
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos
Reply
860 Views
laszlomonda
Contributor V

Hi Kan,

Thank you so much for the idea! I've just downloaded KSDK 2.0 and the mentioned demo works perfectly. The timing of the KSDK 2.0 release couldn't have been better!

I plan to add a raw HID interface to the mouse and keyboard interfaces, but as for now this is working perfectly.

All hail the KSDK developers!

- Laci

0 Kudos
Reply