Hi,
It is possible to have an USB device which can act as multiple devices. In order to implement and test such a device I have merged the Ethernet dev_cdc_vnic example and HID dev_composite_hid_mouse_hid_keyboard examples.
USB devices shall have only one device Device Descriptor.
After merging, Ethernet works only when I use PID as the following in device descriptor,
#define USB_DEVICE_PID (0x0095U)
Mouse + Keyboard works only when I use the following in device descriptor,
#define USB_DEVICE_PID (0x00A0U)
What should be the correct PID in device descriptor for this example so that both Ethernet and HID works at the same time?
Hi @paddy_m ,
I already help you to check it internally.
To the USB, just VID need to apply, if you use the NXP demo, the VID is the same 0X1FC9, to the PID, no need to apply, you can use anyone in your code.
So, to your 2 demo, you totally can use the same PID.
About your merge issues, it is related to your PC, as your PC driver record it.
You need to uninstall your PC driver, then change your PID to the same, then test it again, it should works.
Please try it on your side.
If you still have question about it, please kindly let me know.
If your question is solved, please help to mark the correct answer, just to close this case, thanks.
Any new issues, welcome to create the new case.
Best Regards,
kerry
Hi @kerryzhou
Further to your reply, I can understand that uninstalling the RNDIS driver supplied by NXP will make the eval board act as a Keyboard (because the host can get the keyboard device class information from interface descriptor). However RNDIS driver is required for the Ethernet operation as per dev_cdc_vnic example.
So when I uninstalled the driver and changed the PID, Keyboard always works (irrespective of PID) but without the driver (or correct PID) Ethernet is unable to work.
Regards,
Paddy
Hi @paddy_m ,
Sorry for my later reply!
In fact, I just want you to uninstall the USB driver, because, in the previous time, you use the different USB PID, and the PC will use that, even you change the PID.
So, when you change the PID from the code, and you also want the PC recognize it, you need to uninstall the USB driver, and let it detect the USB device again automatically, then you can keep your different USB device with the same PID, you can try it again on your side.
Wish it helps you!
Best Regards,
Kerry
Hi Kerry,
I have questions on your feedback, "You need to uninstall your PC driver, then change your PID to the same, then test it again, it should work".
Can you please confirm which PC driver you are referring to, Keyboard or the RNDIS (Ethernet)?
Can you please confirm what PID should be kept (keyboard's or Ethernet's)
Thank you.
Hi Kerry,
Thanks for your feedback.
We have created one configuration descriptor and three different interfaces within that to build this feature. It is unsure that if this becomes a product yet. So until then is it possible to try without requesting a PID/VID?
Hi @paddy_m ,
Thank you for your interest in the NXP MIMXRT product, I would like to provide service for you.
I already help you to check with our internal side.
In fact, to the customer product, they need to apply the specific PID VID, you mentioned demo is just the demo, which provide the different PID/VID, but for your own product, you totally can apply your own PID/VID, and let it the same for the two function.
About the PID/VID apply, you can refer to this post:
https://community.nxp.com/t5/Kinetis-Microcontrollers/NXP-USB-VID-PID-Program/ta-p/1124867
Wish it helps you!
If you still have question about it, please kindly let me know.
If your question is solved, please help me to mark the correct answer, just to close this case, thanks.
Any new issues, welcome to create the new question post, thanks.
Best Regards,
Kerry