Upgrade to Intrepid removes Synaptics touchpad vertical scrolling

Bug #278585 reported by Dave
6
Affects Status Importance Assigned to Milestone
xserver-xorg-input-synaptics (Ubuntu)
Incomplete
Undecided
Unassigned
Intrepid
Incomplete
Undecided
Unassigned

Bug Description

Binary package hint: xfree86-driver-synaptics

On my Hardy install, I didn't need to do anything to have my Toshiba Portege R100's Synaptics touchpad be configured to provide vertical scrolling (through use of the right-hand-edge of the touchpad). Having upgraded to Intrepid, thus function has vanished: the right edge of the trackpad just moves the cursor in the manner of the rest of the trackpad. I installed gsynaptics to see whether I could turn scrolling back on.

Running gsynaptics required me to add a SHMConfig line to my xorg.conf, which now reads:

Section "InputDevice"
        Identifier "Synaptics Touchpad"
        Driver "synaptics"
        Option "SendCoreEvents" "true"
        Option "Device" "/dev/psaux"
        Option "Protocol" "auto-dev"
        Option "HorizEdgeScroll" "0"
        Option "SHMConfig" "true"
EndSection

(...)

Section "ServerLayout"
        Identifier "Default Layout"
  screen 0 "Default Screen" 0 0
        Inputdevice "Synaptics Touchpad"
EndSection

Unfortunately gsynaptics believes that vertical scrolling is already enabled. I tried changing its parameters to see whether this might tweak things into working, but without success.

ProblemType: Bug
Architecture: i386
DistroRelease: Ubuntu 8.10
Package: xserver-xorg-input-synaptics 0.15.2-0ubuntu3
ProcEnviron:
 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
 LANG=en_GB.UTF-8
 SHELL=/bin/bash
SourcePackage: xfree86-driver-synaptics
Uname: Linux 2.6.27-4-generic i686

Tags: apport-bug
Revision history for this message
Dave (dme26-lp) wrote :
Revision history for this message
_blue (blue) wrote :

I am having the same problem: my touchpad worked fine in Hardy, but *mostly* doesn't work in Intrepid. If I repeatedly try to scroll (move up and down at the right side of my touchpad) I can get it to scroll a little bit. This makes me think that vertical scrolling is on, but the tolerances are not correct so inputs are not being recognized properly.

I am using a Dell Inspiron 1420. (purchased with pre-loaded ubuntu) and have just upgraded to Intrepid beta.

Revision history for this message
Dave (dme26-lp) wrote :

blue: Interesting to know this is not just a Toshiba thing then.

BTW looking at this post I just realised that:

Option "HorizEdgeScroll" "0"

Might well be something I should try to update! However, after changing this to:

Option "HorizEdgeScroll" "1"

and restarting X, the behaviour is unchanged.

Revision history for this message
_blue (blue) wrote :

Fixed! The odd behavior I was getting when I kept trying to scroll was because my finger would occasionally register at a point on the pad that was close enough to the "right edge" to be considered a scroll. Let me explain:

The touchpad registers an (x,y) coordinate whenever you touch it; then this is compared to the previous position to get a mouse movement or to the "edge" of the touchpad to determine if its a scroll gesture. What I think has been happening is the syntaptics driver is deciding what x coordinate that edge has in a different way. Manually setting the x coordinate of that edge did the trick for me.

Here's how:
1) turn on "SHMConfig" in your xorg.conf file (this makes synclient work)
2) run synclient -m 1000 - this program will tell you what the touchpad is currently registering. Use it to get your min and max x and y values.
3) Use those values to manually set the edges in xorg.conf:
Section "InputDevice"
    Identifier "Synaptics Touchpad"
    Driver "synaptics"
    Option "SendCoreEvents" "true"
    Option "Device" "/dev/psaux"
    Option "Protocol" "auto-dev"
    Option "VertEdgeScroll" "1"
    Option "HorizEdgeScroll" "1"
    Option "SHMConfig" "true"
    Option "LeftEdge" "40" # x_min
    Option "RightEdge" "935" # x_max
    Option "TopEdge" "40" # y_min
    Option "BottomEdge" "690" # y_max
EndSection
4) Reboot X and repeat: I had to try several settings before I found the right ones, so play with the values. It doesn't matter if your left and top edges are too low, but you don't want your right and bottom too high or else it wont work.

You can also use synclient -l to get your current edge positions, if you'd like to start there instead.

About the HorizEdgeScroll: I'm not sure what's going on there, but I don't know if these settings are used. I tried using "VertTwoFingerScroll" "1" and it didn't work at all.

I hope this works for you.

-blue

Revision history for this message
James (egghead-rogers) wrote :

I have the identical issue on my Dell Inspiron 1525. The vertical scroll worked fine on both Gutsy and Hardy until I upgraded to the Intrepid beta. I'm posting because I've noticed that I get vertical scrolling back if I close the lid on my laptop thus suspending the laptop.For some reason "waking up" the laptop restarts something. I've done this at least a dozen times over the last few days. Logging out and back in when the vertical scroll isn't working does not the fix the issue. Only the un-suspend.

Let me know if any new info is required.

James

Revision history for this message
Dave (dme26-lp) wrote : Re: [Bug 278585] Re: Upgrade to Intrepid removes Synaptics touchpad vertical scrolling

Thanks, blue, for writing that up! Yep - that fixed my problem too. I've
not got horizontal scrolling back yet, but just haven't tinkered enough I
suspect. Much appreciated!

So this probably isn't a bug in xfree86-driver-synaptics then ... but
something is wrong somewhere in the upgrade process to Intrepid. Perhaps a
fresh install of Intrepid would have initialised things differently?

Revision history for this message
_blue (blue) wrote :

I'm not sure where to attribute this. It depends on where the change in edge calculation is taking place. I don't think that a fresh install would have helped, especially if this is the same problem that James is having (if so, edges are calculated when X comes up?).

James: I'd be interested to see if this solution works for you too, perhaps the edge calculation is coming up differently when you have been suspended? Can you run synclient before and after and see if your edges are coming up differently?

Either way, I think the solution is to extend the System > Preferences > Mouse tool. There's nothing in there about calibrating where the edges of your touchpad are, but if we're having these troubles, then perhaps there should be. I'm sure there's a pattern to the min/max stuff that we're doing with synclient, so it wouldn't be too bad to extend the tool to have an edge calibration feature. Perhaps more; the current tool seems bare.

Revision history for this message
Dave (dme26-lp) wrote :

blue wrote:
> I'm not sure where to attribute this. It depends on where the change in
> edge calculation is taking place.

Yes. This is not something I've ever thought about before TBH!

> Either way, I think the solution is to extend the System > Preferences >
> Mouse tool. There's nothing in there about calibrating where the edges
> of your touchpad are, but if we're having these troubles, then perhaps
> there should be.

Agreed. Brings back old analogue joystick calibration memories...

Revision history for this message
James (egghead-rogers) wrote :

blue, I'm trying to reproduce the issue and gain as much info as possible for both before and after things start working. When investigating how to enable SHMConfig I hit on this link. Notice the sentence "Ubuntu 8.10 (Intrepid Ibex) and later completely rework how touchpads are configured and detected" near the top of the page. Late in the page it mentions "Note: In Ubuntu 8.10 (Intrepid Ibex) and later, tools such as xinput can alter touchpad settings without needing SHMConfig to be enabled." I suspect there's some bad math or an exception going on.

https://help.ubuntu.com/community/SynapticsTouchpad

I will continue my efforts to get what you asked for.

Cheers
James

Revision history for this message
James (egghead-rogers) wrote :

synclient before

    time x y z f w l r u d m multi gl gm gr gdx gdy
   0.000 802 452 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0

synclient after

    time x y z f w l r u d m multi gl gm gr gdx gdy
   0.000 505 387 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0

I did not modify xorg.conf except to enable SHMConfig. I have not modified the trackpad boundaries at all otherwise.

Revision history for this message
_blue (blue) wrote :

James,

First, nice find with the synaptics touchpad thing, I bet whomever put that on the wiki can shed a bit more insight into what's going on here. For now though, I think `synclient -l` output would be more informative. What you have here is the `synclient -m n` output, which just shows the current position that the touchpad is reading (if I read the man page right), so it makes sense that its different. I could just be mis-interpreting what you pasted---did you capture specific finger positions before and after suspend? Thanks,

-blue

Revision history for this message
James (egghead-rogers) wrote :
Download full text (4.4 KiB)

blue, you are correct.

synclient -l before

Parameter settings:
    LeftEdge = 40
    RightEdge = 983
    TopEdge = 42
    BottomEdge = 725
    FingerLow = 25
    FingerHigh = 30
    FingerPress = 256
    MaxTapTime = 180
    MaxTapMove = 220
    MaxDoubleTapTime = 180
    SingleTapTimeout = 180
    ClickTime = 100
    FastTaps = 0
    EmulateMidButtonTime = 75
    EmulateTwoFingerMinZ = 257
    VertScrollDelta = 25
    HorizScrollDelta = 30
    VertEdgeScroll = 1
    HorizEdgeScroll = 0
    CornerCoasting = 0
    VertTwoFingerScroll = 0
    HorizTwoFingerScroll = 0
    MinSpeed = 0.355932
    MaxSpeed = 0.713168
    AccelFactor = 0.0015
    TrackstickSpeed = 40
    EdgeMotionMinZ = 30
    EdgeMotionMaxZ = 160
    EdgeMotionMinSpeed = 1
    EdgeMotionMaxSpeed = 102
    EdgeMotionUseAlways = 0
    UpDownScrolling = 1
    LeftRightScrolling = 1
    UpDownScrollRepeat = 1
    LeftRightScrollRepeat = 1
    ScrollButtonRepeat = 100
    TouchpadOff = 0
    GuestMouseOff = 0
    LockedDrags = 0
    LockedDragTimeout = 5000
    RTCornerButton = 2
    RBCornerButton = 3
    LTCornerButton = 0
    LBCornerButton = 0
    TapButton1 = 1
    TapButton2 = 2
    TapButton3 = 3
    ClickFinger1 = 1
    ClickFinger2 = 1
    ClickFinger3 = 1
    CircularScrolling = 0
    CircScrollDelta = 0.1
    CircScrollTrigger = 0
    CircularPad = 0
    PalmDetect = 1
    PalmMinWidth = 10
    PalmMinZ = 200
    CoastingSpeed = 0
    PressureMotionMinZ = 30
    PressureMotionMaxZ = 160
    PressureMotionMinFactor = 1
    PressureMotionMaxFactor = 1
    GrabEventDevice = 1

after 2 suspends i got this with the same. the second one was a manual click on "suspend". I will test more tomorrow weather it's a manual versus two time thing. there were many updates pushed onto the machine tonight.

Parameter settings:
    LeftEdge = 40
    RightEdge = 983
    TopEdge = 42
    BottomEdge = 725
    FingerLow = 25
    FingerHigh = 30
    FingerPress = 256
    MaxTapTime = 180
    MaxTapMove = 220
    MaxDoubleTapTime = 180
    SingleTapTimeout = 180
    ClickTime = 100
    FastTaps = 0
    EmulateMidButtonTime = 75
    EmulateTwoFingerMinZ = 257
    VertScrollDelta = 25
    HorizScrollDelta = 30
    VertEdgeScroll = 1
    HorizEdgeScroll = 0
    CornerCoasting = 0
    VertTwoFingerScroll = 0
    HorizTwoFingerScroll = 0
    MinSpeed = 0.355932
    MaxSpeed = 0.713168
    Ac...

Read more...

Revision history for this message
James (egghead-rogers) wrote :

hmmm, put the data in a spreadsheet to compare the values side by side. they are identical. sorry.

Revision history for this message
_blue (blue) wrote :

No worries. What's interesting is that they're the same, and that my settings (from a Dell Insprion 1420) were the same--at least I'm pretty sure they were! I'm not at all sure why it works after suspend for you, does setting these values specifically in xorg.conf fix the problem for you? But, it is interesting that the edge calculations for both machines were the same. I hope this isn't something that would affect all Dell users, that could be really bad for the 8.10 release. Do either of you know how to escalate a potential issue like this?

Revision history for this message
Rob Frohne (frohro) wrote :

I had this problem with a Dell D600 upon upgrading to Intrepid. Adding the appropriate section to xorg.conf as mentioned by blue above fixed the problem for me.

Revision history for this message
Dave (dme26-lp) wrote :

> Do either of you know how to escalate a potential issue like this?

No, I'm afraid I don't. I'd like to note that the Intrepid upgrade broke a
number of things (e.g. Toshiba fn keys, suspend, hibernate, touchpad
scrolling). Most of the problems aren't the fault of the packages that do
the job though (e.g. you've fixed my touchpad scrolling, and I can suspend
to RAM from shell - it's just missing from the GUI now), they're problems
with the upgrade process. I'd thus like to know how to more correctly file
these problems, instead of just poking bug reports at packages.

Revision history for this message
_blue (blue) wrote :

I nominated this bug for Intrepid. I'm not sure what exactly that means, but I think it essentially means that someone has to look at it and determine if it is a priority to fix it before the 30th. Hopefully that's what that means. I don't like the idea of breaking scrolling in a release; that would turn a lot of people off.

Revision history for this message
James (egghead-rogers) wrote :

I've tried the workaround of editing the xorg.conf and adding the dimensions of the trackpad. It worked but I still have to play with the numbers a bit later.

Personally I don't think this is the right fix though. I'm pretty comfortable editing the config files but there are a lot of users who won't want to or be able to change these values.

I'm a Windows developer by trade but I understand the process of debugging this stuff. I'm still willingly to take suggestions on other things to try.

I was thinking about this bug at work today and the behavior where it starts working after a suspend seemed odd to me. That combined with the values i posted last night being the same before and after seems to point to a program/driver that is interfering with the trackpad driver. I'm betting that sometimes that interfering code isn't restarting after a suspend and therefore doesn't get in the way. Just a thought.

Cheers
James

Revision history for this message
William Grant (wgrant) wrote :

Have you tried running without a Synaptics-related section in your xorg.conf?

Changed in xserver-xorg-input-synaptics:
status: New → Incomplete
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.