The USB 2.0 standard specifies bInterfaceNumber as "Number of this interface. Zero-based value identifying the index in the array of concurrent interfaces supported by this configuration." in section 9.6.5 (page 268)
However, the LPC-LINK2 CMSIS-DAP V5.224 firmware declares interface descriptors with the following sequence of bInterfaceNumber values: 0, 4, 1, 2, 3.
This causes Google's gousb library (https://github.com/google/gousb) to fail when an LPC Link 2 device is present on any USB bus, with:
config 1 interface at index 1 has number 4, USB standard states they should be identical
Also see https://github.com/google/gousb/issues/65
Can this behavior of the LPC-LINK2 CMSIS-DAP firmware be corrected ?
Thanks,
Ivo.
Hi Ivo Clarysse
Thank you for your interest in NXP Semiconductor products and
for the opportunity to serve you.
1) Can this behavior of the LPC-LINK2 CMSIS-DAP firmware be corrected?
-- No, I'm afraid not, and the composite USB device is able to be enumerated with the following sequence of bInterfaceNumber values: 0, 4, 1, 2, 3.
Have a great day,
Ping
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
The fact that the device enumerates is only because most USB host platforms gracefully support devices that violate the USB standard with respect to interface enumeration.
gousb library has since also been updated to deal with broken USB implementations such as NXP's LPC-Link2.