USB keyboard/mouse combo fails to attach
Jason Harmening
jason.harmening at gmail.com
Sun Jun 21 20:28:31 UTC 2009
On Sun, 21 Jun 2009 03:00:12 +0200
Hans Petter Selasky <hselasky at c2i.net> wrote:
>
> In /sys/dev/usb/usb_device.c :
>
> There is some code to re-enumerate the device, when errors are
> detected. Maybe we should add an automatic re-enumeration in case the
> full device descriptor cannot be retrieved aswell.
>
> Search for:
> err = usbd_req_get_desc(udev, NULL, NULL, &udev->ddesc,
> USB_MAX_IPACKET, USB_MAX_IPACKET, 0, UDESC_DEVICE, 0, 0);
> if (err) {
> DPRINTFN(0, "getting device descriptor "
> "at addr %d failed, %s!\n", udev->address,
> usbd_errstr(err));
> /* XXX try to re-enumerate the device */
> err = usbd_req_re_enumerate(udev, NULL);
> if (err) {
> goto done;
> }
> }
>
> Some lines down you patch the code like this:
>
> /* get the full device descriptor */
> err = usbd_req_get_device_desc(udev, NULL, &udev->ddesc);
> if (err) {
> DPRINTF("addr=%d, getting full desc failed\n",
> udev->address);
> + /* XXX try to re-enumerate the device */
> + err = usbd_req_re_enumerate(udev, NULL);
> + if (err) {
> + goto done;
> + }
> - goto done;
> }
>
> --HPS
That seems to work--thanks!
So is this just flaky firmware then? I had such high hopes for the
device, as it's advertised as needing no special drivers (in Windows of
course), but I guess the firmware probably still "expects" the
Windows HID layer on the other end...*sigh*
Also, thanks for your tremendous work on the new USB stack! I should
mention that while this device always *enumerated* under 7, it never
completely *worked*--only the keyboard part seemed to work w/ the old
HID layer. Also, it's really nice to be giant-free on a 4-CPU machine.
--Jason
More information about the freebsd-current
mailing list