On Mon, Jun 07, 2004 at 09:09:32AM -0500, Leif Sorensen wrote:
I did not get a chance to try out the recomended solutions until this weekened, and none of them seem to work. I know that the lines added are loading, because the scroll wheel disapears from the mouse under proto=bare, but the mouse still does not function properly under the KVM. I also tried switching back and forth witht the ctrl+alt+(function key), as suggested and none seemed to work. Would this have anything to do with the fact that it is an optical mouse and not a trackball? I can provide my menu.lst, and name and models of the mouse and KVM if needed. Hoping someone may have a few more suggestions.
Newer SuSE kernel (based on the 2.6.5) have a new workaround for this problem: Add psmouse.resetafter=1 to the boot parameter. This reconnect the mouse after detecting one bad protocol frame. Hint: after switching the console move the mouse only few millimeters, this works very well for me. Here the patch for older versions: diff -urN linux-2.6.5/drivers/input/mouse/psmouse-base.c linux-2.6.5-resetafter/drivers/input/mouse/psmouse-base.c --- linux-2.6.5/drivers/input/mouse/psmouse-base.c 2004-04-04 05:36:27.000000000 +0200 +++ linux-2.6.5-resetafter/drivers/input/mouse/psmouse-base.c 2004-04-19 17:11:35.559937923 +0200 @@ -45,7 +45,7 @@ unsigned int psmouse_resetafter; module_param_named(resetafter, psmouse_resetafter, uint, 0); -MODULE_PARM_DESC(resetafter, "Reset Synaptics Touchpad after so many bad packets (0 = never)."); +MODULE_PARM_DESC(resetafter, "Reset mouse after so many bad packets (0 = never)."); __obsolete_setup("psmouse_noext"); __obsolete_setup("psmouse_resolution="); @@ -168,6 +168,20 @@ printk(KERN_WARNING "psmouse.c: %s at %s lost synchronization, throwing %d bytes away.\n", psmouse->name, psmouse->phys, psmouse->pktcnt); psmouse->pktcnt = 0; + psmouse->error++; + /* + * this maybe come from a internal resetted mouse e.g. a IMPS2 mouse + * which falled back into PS2 mode, so if resetafter parameter is set + * try a reconnect + */ + if (psmouse_resetafter && (psmouse->error >= psmouse_resetafter)) { + psmouse->error = 0; + psmouse->state = PSMOUSE_IGNORE; + printk(KERN_NOTICE "psmouse.c: %s at %s issuing reconnect request\n", + psmouse->name, psmouse->phys); + serio_reconnect(psmouse->serio); + goto out; + } } psmouse->last = jiffies; diff -urN linux-2.6.5/drivers/input/mouse/psmouse.h linux-2.6.5-resetafter/drivers/input/mouse/psmouse.h --- linux-2.6.5/drivers/input/mouse/psmouse.h 2004-04-04 05:38:13.000000000 +0200 +++ linux-2.6.5-resetafter/drivers/input/mouse/psmouse.h 2004-04-19 17:11:35.559937923 +0200 @@ -48,7 +48,7 @@ unsigned char state; char acking; volatile char ack; - char error; + unsigned char error; char devname[64]; char phys[32]; -- Karsten Keil SuSE Labs ISDN development