Re: Logitech Mouseman Dual Optical defaults to 400cpi

Brad Hards
2002-06-10T01:00:26Z

On Mon, 10 Jun 2002 01:19, Chris Faherty wrote:
> On Sunday 09 June 2002 04:07 am, Brad Hards wrote:
> > Was that using Snoopy?
>
> I believe that's what it was called. The program was sniffusb 0.13. I had
> problems get later versions to work. Then I found a nice treatise on
> interpreting the log:
>
> http://www.toth.demon.co.uk/usb/reverse-0.2.txt
I'll have to check it out. There are a number of resources (including a nice
Perl script that gets rid of much of the verbosity).
Later versions may be W2K, rather than for 98:
http://sourceforge.net/projects/usbsnoop/

> > Any objections to me taking this to 2.4 and 2.5?
>
> Feel free. I wonder if MS Intellimouse 3.0 has the same resolution
> problem. AFAIK they use the same sensor.
Probably not, because only low end manufacturers use reference designs
directly. I have an intellimouse around here somewhere. Don't know anything
about it, because it wouldn't have occurred to me to read the manual or
install the windows drivers. Might have to check it out.

> > This could have been handled by a blacklist table quirk. Any reason why
> > you chose to do it this way?
>
> How does the blacklist work? Originally I wanted to put the setting in
> mousedev but I wasn't sure how to access the usb_device from there.
Basically we declare a quirk (in drivers/usb/hid.h)
#define HID_QUIRK_LOGITECH_HIRES

and then associate the manufacturer and product IDs for the device with the
quirk in hid-core.c (in hid_blacklist[])
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_DOPTICAL,
HID_QUIRK_LOGITECH_HIRES },

And then use (hid->quirk & HID_QUIRK_LOGITECH_HIRES) as the test instead of
((hid->dev->descriptor.idVendor == USB_VENDOR_ID_LOGITECH) &&
(hid->dev->descriptor.idProduct == USB_DEVICE_ID_LOGITECH_DOPTICAL)) in the
routine you actually want to vary.

The advantage is really apparent when Logitech brings out another device with
different product ID (eg a different colour plastic) that has the same
firmware and needs the same change. Much easier to add to the (now badly
misnamed) blacklist than to add more and more conditions to the if().

I'll try for a patch later, that might make this a bit clearer.

Brad

--
http://conf.linux.org.au. 22-25Jan2003. Perth, Australia. Birds in Black.