Re: Bug with IMPS/2 w/ Microsoft Intellimouse 1.3A on Linux

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi!

I had the same problem, and I figured out two things:
- Sometimes the mouse is confused and imps2 init will fail if I do not
send a reset to it.
- moving the mouse before, or during initialization will make it fail.

The attached patch solved all my problems, so can try it, but this is not
official :)

I didn't want to send it yet to the list, but you asked for it :).

On Sat, 15 Jun 2002, Shawn Starr wrote:

>
> === ERROR ===: [/usr/src/other/gpm-1.20.0/src/mice.c(1727)]:
> imps2: PS/2 mouse failed init
> === ERROR ===: [/usr/src/other/gpm-1.20.0/src/mice.c(1727)]:
>
> When loading gpm and moving the mouse the driver bombs on load. Also,
> sometimes it will fail with:
>
> === ERROR ===: [/usr/src/other/gpm-1.20.0/src/mice.c(1755)]:
> imps2: Auto-detected unknown mouse type 250, assuming standard PS/2
>
> Options used to load gpm:
>
> gpm -m /dev/psaux -t imps2 -b 9600"
>
> * Note: For some reason I have to specify baud rate (?)
>
> Any ideas? :)
>
> Thanks,
>
> Shawn Starr, sh0n.net, <spstarr@xxxxxxxx>
> Maintainer: -shawn kernel patches: http://xfs.sh0n.net/2.4/
> Developer Support Engineer
> Datawire Communication Networks Inc.
> 10 Carlson Court, Suite 300
> Toronto, ON, M9W 6L2
> T: 416.213.2001 ext 179 F: 416.213.2008
>
> _______________________________________________
> gpm mailing list
> gpm@xxxxxxxxxxxxxx
> http://lists.linux.it/listinfo/gpm
>

-- 
pozsy
diff -Naur gpm-1.20.0/src/mice.c gpm-1.20.0-mod/src/mice.c
--- gpm-1.20.0/src/mice.c	Sat Feb 23 15:42:23 2002
+++ gpm-1.20.0-mod/src/mice.c	Fri Jun 14 08:22:09 2002
@@ -1715,9 +1747,17 @@
                                                        int argc, char **argv)
 {
    int id;
-   static unsigned char basic_init[] = { GPM_AUX_ENABLE_DEV, GPM_AUX_SET_SAMPLE, 100 };
+   static unsigned char reset[] = { GPM_AUX_RESET };
+   static unsigned char basic_init[] = { GPM_AUX_SET_SAMPLE, 100 };
    static unsigned char imps2_init[] = { GPM_AUX_SET_SAMPLE, 200, GPM_AUX_SET_SAMPLE, 100, GPM_AUX_SET_SAMPLE, 80, };
-   static unsigned char ps2_init[] = { GPM_AUX_SET_SCALE11, GPM_AUX_ENABLE_DEV, GPM_AUX_SET_SAMPLE, 100, GPM_AUX_SET_RES, 3, };
+   static unsigned char ps2_init[] = { GPM_AUX_ENABLE_DEV, GPM_AUX_SET_SCALE11, GPM_AUX_ENABLE_DEV, GPM_AUX_SET_SAMPLE, 100, GPM_AUX_SET_RES, 3, };
+   unsigned char tmp;
+
+   /* Do a reset as some mice seem to need it sometimes
+      -- hope it doesn't break others */
+   write(fd, reset, sizeof (reset));
+   usleep (30000);
+   do { read(fd, &tmp, 1); } while (tmp != 0x00); // Wait for 0x00
 
    /* Do a basic init in case the mouse is confused */
    write_to_mouse(fd, basic_init, sizeof (basic_init));

[Index of Archives]     [Kernel Development]     [Red Hat Install]     [Red Hat Watch]     [Red Hat Development]     [Gimp]     [Yosemite News]