Date: Wed, 9 Jun 2004 18:58:00 -0400 From: Anish Mistry <mistry.7@osu.edu> To: freebsd-hardware@freebsd.org Cc: Markus Wild <mwild@vianetworks.ch> Subject: Re: Fix for Logitech DiNovo cordless mouse Message-ID: <200406091858.34042.mistry.7@osu.edu> In-Reply-To: <200406091838.i59Icugc063061@smsgw.vianetworks.ch> References: <200406091838.i59Icugc063061@smsgw.vianetworks.ch>
next in thread | previous in thread | raw e-mail | index | archive | help
=2D----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.0= 4, > addr 3, iclass 3/1 > Jun 9 19:37:06 mothra kernel: ums_attach: bLength=3D7 bDescriptorType=3D5 > bEndpoint Address=3D2-in bmAttributes=3D3 wMaxPacketSize=3D8 bInterval=3D= 10 > Jun 9 19:37:06 mothra kernel: ums0: 7 buttons and Z dir. > Jun 9 19:37:06 mothra kernel: ums_attach: sc=3D0xc23a1800 > 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=3D36, id=3D17 > > Since actual interrupt reports are issed with id 2: > Jun 9 18:42:10 mothra kernel: ums_intr: sc=3D0xc23a1800 status=3D0 > Jun 9 18:42:10 mothra kernel: ums_intr: data =3D 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 =3D 0; > + bzero (&h, sizeof (h)); > for (d =3D hid_start_parse(buf, len, 1<<k); hid_get_item(d, &h); ) > - if (h.report_ID !=3D 0) > - id =3D h.report_ID; > + if (h.report_ID !=3D 0 && !id) > + id =3D h.report_ID; > hid_end_parse(d); > size =3D h.loc.pos; > if (id !=3D 0) { > > I don't know whether this is any more correct or buggy than the > previous version, and I don't know whether it will break currently > working configurations, but it did get mine working. If your mouse > is currently of not much use, you might give it a try. > I just checked the NetBSD sources, and this has been fixed in revision 1.18= ,=20 which is over 2 years old and still hasn't been imported :(. I'm going to= =20 see if I can work up a big patch tonight. According to the NetBSD sources you need to have the following initilizatio= n: h.report_ID =3D 0; =2D --=20 Anish Mistry =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (FreeBSD) iD8DBQFAx5YNxqA5ziudZT0RAljPAKDH0SMzK3al1i2+E42VAwc4OMdGQgCfb20E gqaGoDFGn6PtSJkgW+4cwsM=3D =3Dv+S2 =2D----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200406091858.34042.mistry.7>