Fix for Logitech DiNovo cordless mouse [PATCH]
Anish Mistry
mistry.7 at osu.edu
Thu Jun 10 00:16:34 GMT 2004
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Wednesday 09 June 2004 02:38 pm, Markus Wild wrote:
> Since yesterday I'm a happy owner of a Logitech dinovo
> cordless USB keyboard/mouse. The keyboard works fine, however
> the mouse didn't move a bit. I saw that other people had similar
> "luck", so I enabled a bit of debugging. This is with FreeBSD-current,
> btw.
>
> The result of the quest was: the hid.c:hid_report_size() function returns a
> bogus iid value:
>
> Jun 9 19:37:06 mothra kernel: ums0: Logitech USB Receiver, rev 1.10/24.04,
> addr 3, iclass 3/1
> Jun 9 19:37:06 mothra kernel: ums_attach: bLength=7 bDescriptorType=5
> bEndpoint Address=2-in bmAttributes=3 wMaxPacketSize=8 bInterval=10
> Jun 9 19:37:06 mothra kernel: ums0: 7 buttons and Z dir.
> Jun 9 19:37:06 mothra kernel: ums_attach: sc=0xc23a1800
> Jun 9 19:37:06 mothra kernel: ums_attach: X 8/12
> Jun 9 19:37:06 mothra kernel: ums_attach: Y 20/12
> Jun 9 19:37:06 mothra kernel: ums_attach: Z 32/8
> Jun 9 19:37:06 mothra kernel: ums_attach: B1 0/1
> Jun 9 19:37:06 mothra kernel: ums_attach: B2 1/1
> Jun 9 19:37:06 mothra kernel: ums_attach: B3 2/1
> Jun 9 19:37:06 mothra kernel: ums_attach: B4 3/1
> Jun 9 19:37:06 mothra kernel: ums_attach: B5 4/1
> Jun 9 19:37:06 mothra kernel: ums_attach: B6 5/1
> Jun 9 19:37:06 mothra kernel: ums_attach: B7 6/1
> Jun 9 19:37:06 mothra kernel: ums_attach: size=36, id=17
>
> Since actual interrupt reports are issed with id 2:
> Jun 9 18:42:10 mothra kernel: ums_intr: sc=0xc23a1800 status=0
> Jun 9 18:42:10 mothra kernel: ums_intr: data = 02 00 fa
>
> So I added a bit of debugging to the id setting for-loop. It
> looks like the ID cycles thru the following values at attach() time:
> Jun 9 19:40:57 mothra kernel: hid_report_size: 00 -> 02
> Jun 9 19:40:57 mothra kernel: hid_report_size: 02 -> 03
> Jun 9 19:40:57 mothra kernel: hid_report_size: 03 -> 04
> Jun 9 19:40:57 mothra kernel: hid_report_size: 04 -> 10
> Jun 9 19:40:57 mothra kernel: hid_report_size: 10 -> 11
> (numbers are hex here)
>
> With this, my current fix is simple: only set id if it's not
> set already:
> diff -u -r1.23 hid.c
> --- hid.c 24 Aug 2003 17:55:54 -0000 1.23
> +++ hid.c 9 Jun 2004 18:34:23 -0000
> @@ -374,9 +374,10 @@
> int size, id;
>
> id = 0;
> + bzero (&h, sizeof (h));
> for (d = hid_start_parse(buf, len, 1<<k); hid_get_item(d, &h); )
> - if (h.report_ID != 0)
> - id = h.report_ID;
> + if (h.report_ID != 0 && !id)
> + id = h.report_ID;
> hid_end_parse(d);
> size = h.loc.pos;
> if (id != 0) {
>
I've attached at big patch that should fix the problem as well as a bunch of
updates from the NetBSD sources. This is a patch against -CURRENT, so you
may have to massage it a bit if you are on -STABLE. I won't have an
offending device to test for at least a week so let me know of any problems.
Thanks,
- --
Anish Mistry
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (FreeBSD)
iD8DBQFAx6hvxqA5ziudZT0RAspMAJ9y4i5rXALWKnn7zrQ3TigCSK0dGACdHcmU
x/J7ZJXwjFeiJptFzZmaXS8=
=eg+L
-----END PGP SIGNATURE-----
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hid-updates.patch
Type: text/x-diff
Size: 12653 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-hardware/attachments/20040609/0f88b6b5/hid-updates.bin
More information about the freebsd-hardware
mailing list