[ltp] Synaptics touchpad mostly-disappeared!

Ben Pearre linux-thinkpad@linux-thinkpad.org
Fri, 5 Aug 2005 11:22:01 -0600


It looks like some other people have been having similar problems, but
I couldn't yet make anything work for me.  I can get events with
synclient but not in X!

I am running Debian unstable on an R40.  Until quite recently, the
touchpad was working fine.  I did a big dist-upgrade (about a month's
worth of updates, including going to Xorg), and the touchpad no longer
works.  Switching back to XFree86 doesn't fix anything.  The clit
continues working as well as ever--it's my main pointing device, but I
use the touchpad for scrolling.

I was running linux-2.6.11.3 without Stephen Evanchik's patch, and
I've tried 2.6.10 and I'm now on 2.6.12.3 with the patch (thanks,
Stephen!).  No change in behaviour so far...

>From dmesg:

Synaptics Touchpad, model: 1, fw: 5.9, id: 0x2c6ab1, caps: 0x884793/0x0
serio: Synaptics pass-through port at isa0060/serio1/input0
input: SynPS/2 Synaptics TouchPad on isa0060/serio1
Adding 982792k swap on /dev/hda3.  Priority:-1 extents:1
EXT3 FS on hda2, internal journal
Real Time Clock Driver v1.12
IBM TrackPoint firmware: 0x0E
input: TrackPoint IBM TrackPoint on synaptics-pt/serio0

serio1?  serio0 looks like the clit...

(0)% ll ../../../devices/platform/i8042/serio0
total 0
drwxr-xr-x  5 root root    0 2005-08-05 13:59 ./
drwxr-xr-x  5 root root    0 2005-08-05 13:02 ../
-rw-r--r--  1 root root 4096 2005-08-05 13:59 bind_mode
lrwxrwxrwx  1 root root    0 2005-08-05 13:59 bus -> ../../../../bus/serio/
-r--r--r--  1 root root 4096 2005-08-05 13:59 description
lrwxrwxrwx  1 root root    0 2005-08-05 13:59 driver -> ../../../../bus/serio/drivers/psmouse/
--w-------  1 root root 4096 2005-08-05 13:59 drvctl
drwxr-xr-x  2 root root    0 2005-08-05 13:02 id/
drwxr-xr-x  2 root root    0 2005-08-05 13:02 power/
-rw-r--r--  1 root root 4096 2005-08-05 13:59 rate
-rw-r--r--  1 root root 4096 2005-08-05 13:59 resetafter
-rw-r--r--  1 root root 4096 2005-08-05 13:59 resolution
drwxr-xr-x  4 root root    0 2005-08-05 13:02 serio2/
(0)% ll /sys/devices/platform/i8042/serio1 
total 0
drwxr-xr-x  4 root root    0 2005-08-05 13:02 ./
drwxr-xr-x  5 root root    0 2005-08-05 13:02 ../
-rw-r--r--  1 root root 4096 2005-08-05 14:00 bind_mode
lrwxrwxrwx  1 root root    0 2005-08-05 14:00 bus -> ../../../../bus/serio/
-r--r--r--  1 root root 4096 2005-08-05 14:00 description
lrwxrwxrwx  1 root root    0 2005-08-05 14:00 driver -> ../../../../bus/serio/drivers/atkbd/
--w-------  1 root root 4096 2005-08-05 14:00 drvctl
-rw-r--r--  1 root root 4096 2005-08-05 14:00 extra
drwxr-xr-x  2 root root    0 2005-08-05 13:02 id/
drwxr-xr-x  2 root root    0 2005-08-05 13:02 power/
-rw-r--r--  1 root root 4096 2005-08-05 14:00 scroll
-rw-r--r--  1 root root 4096 2005-08-05 14:00 set
-rw-r--r--  1 root root 4096 2005-08-05 14:00 softraw
-rw-r--r--  1 root root 4096 2005-08-05 14:00 softrepeat

serio1 is driven by atkbd.  What has that to do with a touchpad?

>From /var/log/XFree86.0.log:

(II) LoadModule: "synaptics"
(II) Loading /usr/X11R6/lib/modules/input/synaptics_drv.o
(II) Module synaptics: vendor="The XFree86 Project"
        compiled for 4.2.0, module version = 1.0.0
        Module class: XFree86 XInput Driver
        ABI class: XFree86 XInput driver, version 0.3

Now here's the catch:

"Synclient -m 10" or whatever displays correct touchpad events!  lsof
doesn't indicate that it's speaking to any device files but the tty...

However, xev doesn't see any touchpad events.  I've used ksynaptic to
turn on the pad, and played around with synclient:

(0)% synclient -h
Hardware properties:
    Can't detect hardware properties.
    This is normal if you are running linux kernel 2.6.
    Check the kernel log for touchpad hardware information.
(0)% synclient -l
Parameter settings:
    LeftEdge             = 1400
    RightEdge            = 4700
    TopEdge              = 1400
    BottomEdge           = 5600
    FingerLow            = 38
    FingerHigh           = 43
    MaxTapTime           = 0
    MaxTapMove           = 0
    MaxDoubleTapTime     = 0
    ClickTime            = 0
    FastTaps             = 0
    EmulateMidButtonTime = 75
    VertScrollDelta      = 166
    HorizScrollDelta     = 167
    MinSpeed             = 0
    MaxSpeed             = 0
    AccelFactor          = 0
    EdgeMotionMinZ       = 30
    EdgeMotionMaxZ       = 160
    EdgeMotionMinSpeed   = 0
    EdgeMotionMaxSpeed   = 0
    EdgeMotionUseAlways  = 1
    UpDownScrolling      = 1
    LeftRightScrolling   = 0
    UpDownRepeat         = 1
    LeftRightRepeat      = 1
    ScrollButtonRepeat   = 2
    TouchpadOff          = 3
    GuestMouseOff        = 0
    LockedDrags          = 0
    RTCornerButton       = 1
    RBCornerButton       = 2
    LTCornerButton       = 3
    LBCornerButton       = 1
    TapButton1           = 206158430
    TapButton2           = 1070017282
    TapButton3           = 3
    CircularScrolling    = 1
    CircScrollDelta      = 0.001
    CircScrollTrigger    = 3
    CircularPad          = 0
    PalmDetect           = 1078132736
    PalmMinWidth         = 10
    PalmMinZ             = 200
    CoastingSpeed        = 0

Everything seems to be in order.

My XF86Config is the same that worked before.  I have

        Load    "synaptics"     # touchpad driver

...and later:

"InputDevice"
        Identifier      "TouchPad"
        Driver          "synaptics"
        Option          "Device"                "/dev/input/mouse0"
        Option          "SendCoreEvents"        "true"
        Option          "Protocol"              "auto-dev"
        Option          "Buttons"               "7"
        Option          "SHMConfig"             "true"
[and all the other Options].

But now /dev/input/mouse0 does not list any events when I cat it,
although mouse1 gets clit events quite happily.  I have also tried
/dev/input/mice, /dev/psaux, higher /dev/input/mousex, and a couple of
others.

Given that the dist-upgrade seems to have messed with the synaptics
settings, I expect that it is a library, rather than the kernel,
that's responsible for the device not working anymore.  The most
obvious culprit (scapegoat?) is Xorg...  maybe Debian's XFree86
package didn't correctly reinstall intself?  But if there's a kernel
fix for this (I know interfaces change), then I'd love a pointer to
the information.

What should the device be?  Not /dev/input/mouse0, apparently...

Many thanks for reading my longwinded post!

--
Ben Pearre          http://hebb.mit.edu/~ben       PGP: CFDA6CDA
         Free music at http://hebb.mit.edu/FreeMusic
Don't let Bush read your email!             http://www.gnupg.org