You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It is my (hopefully correct) understanding that only USB 2.0 LPM and later standards (bcdUSB > 0x0200) require devices to support BOS descriptor query. However, the libusb function libusb_get_bos_descriptor() does not contain logic to first check the bcdUSB value is high enough, and therefore still queries devices with bcdUSB <= 0x0200 for a BOS descriptor.
For older USB 1.0 or USB 2.0 (not LPM) devices, the descriptor type = 0x0f could be undefined and requesting it could cause abnormal device behavior and the library could return LIBUSB_ERROR_TIMEOUT or LIBUSB_ERROR_PIPE when it should be returning LIBUSB_ERROR_NOT_FOUND according to the doxygen comment.
It is my (hopefully correct) understanding that only USB 2.0 LPM and later standards (bcdUSB > 0x0200) require devices to support BOS descriptor query. However, the libusb function
libusb_get_bos_descriptor()
does not contain logic to first check the bcdUSB value is high enough, and therefore still queries devices with bcdUSB <= 0x0200 for a BOS descriptor.For older USB 1.0 or USB 2.0 (not LPM) devices, the descriptor type = 0x0f could be undefined and requesting it could cause abnormal device behavior and the library could return LIBUSB_ERROR_TIMEOUT or LIBUSB_ERROR_PIPE when it should be returning LIBUSB_ERROR_NOT_FOUND according to the doxygen comment.
Some background:
https://techcommunity.microsoft.com/t5/microsoft-usb-blog/usb-2-1-2-0-1-1-device-enumeration-changes-in-windows-8/ba-p/270775
https://microchip.my.site.com/s/article/Does-a-USB2-1-Specification-Exist
The text was updated successfully, but these errors were encountered: