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));