I have a CD Tower device (a USB HID device) which always failed to be identified under CURRENT source without following patch, it is always timeout, could anyone look the following patch: Index: usb_subr.c =================================================================== RCS file: /home/ncvs/src/sys/dev/usb/usb_subr.c,v retrieving revision 1.52 diff -u -u -r1.52 usb_subr.c --- usb_subr.c 17 Jun 2002 20:52:26 -0000 1.52 +++ usb_subr.c 6 Jan 2003 07:48:51 -0000 @@ -1106,9 +1106,15 @@ usbd_reload_device_desc(usbd_device_handle dev) { usbd_status err; - + int i; + /* Get the full device descriptor. */ - err = usbd_get_device_desc(dev, &dev->ddesc); + for (i = 0; i < 3; ++i) { + err = usbd_get_device_desc(dev, &dev->ddesc); + if (!err) + break; + usbd_delay_ms(dev, 200); + } if (err) return (err); -- After patched, I can use usbhidctl to dump some informaton: Report descriptor: Collection page=0xffa0 usage=0x0001 Collection page=0xffa0 usage=0x0002 Input size=8 count=1 page=0xffa1 usage=0x0003, logical range -128..127, physical range 0..-1 Input size=8 count=1 page=0xffa1 usage=0x0004, logical range -128..127, physical range 0..-1 Input size=8 count=1 page=0xffa1 usage=0x0004, logical range -128..127, physical range 0..-1 Input size=8 count=1 page=0xffa1 usage=0x0004, logical range -128..127, physical range 0..-1 Input size=8 count=1 page=0xffa1 usage=0x0004, logical range -128..127, physical range 0..-1 Input size=8 count=1 page=0xffa1 usage=0x0004, logical range -128..127, physical range 0..-1 Input size=8 count=1 page=0xffa1 usage=0x0004, logical range -128..127, physical range 0..-1 Input size=8 count=1 page=0xffa1 usage=0x0004, logical range -128..127, physical range 0..-1 Output size=8 count=1 page=0xffa1 usage=0x0005, logical range -128..127, physical range 0..-1 Output size=8 count=1 page=0xffa1 usage=0x0006, logical range -128..127, physical range 0..-1 Output size=8 count=1 page=0xffa1 usage=0x0006, logical range -128..127, physical range 0..-1 Output size=8 count=1 page=0xffa1 usage=0x0006, logical range -128..127, physical range 0..-1 Output size=8 count=1 page=0xffa1 usage=0x0006, logical range -128..127, physical range 0..-1 Output size=8 count=1 page=0xffa1 usage=0x0006, logical range -128..127, physical range 0..-1 Output size=8 count=1 page=0xffa1 usage=0x0006, logical range -128..127, physical range 0..-1 Output size=8 count=1 page=0xffa1 usage=0x0006, logical range -128..127, physical range 0..-1 End collection End collection Total input size 8 bytes Total output size 8 bytes Total feature size 0 bytes N…'²æìr¸›zǧvf¢–Ú&j:+v‰¨·ž è®"¶§²æìr¸›yúÞy»rêëz{bžØ^n‡r¡ûazg¬±¨