XPS13Linux icon indicating copy to clipboard operation
XPS13Linux copied to clipboard

Touchpad Palm Detection not working on Ubuntu

Open LiohMoeller opened this issue 9 years ago • 112 comments

On the default installation of Ubuntu 14.04, the touchpad palm detection is not working correctly.

LiohMoeller avatar May 07 '15 21:05 LiohMoeller

Which BIOS version are you using?

advancingu avatar May 07 '15 21:05 advancingu

A03

LiohMoeller avatar May 07 '15 21:05 LiohMoeller

This is the same when booting from a Live USB 15.04 btw

LiohMoeller avatar May 07 '15 21:05 LiohMoeller

Could help: http://stevenkohlmeyer.com/fixing-palm-detect-ubuntu-14-04/

tgalopin avatar May 12 '15 12:05 tgalopin

If this is also an issue in 15.04 than it might make sense to change the title to avoid confusion.

dchambers avatar May 12 '15 20:05 dchambers

Is this verified to be a palm detect issue?

I assume the issue described here are spurious cursor jumps and text selections or, worst, even shortcut executions (e.g. when cursor jumps into thunderbird K might actually kill the thread.

I am getting the feeling that CPU load may trigger these effects as I have been very careful to keep my palms clear of the touchpad.

And yes I still see all of this in ubuntu 15.04.

anaran avatar May 12 '15 21:05 anaran

My initial report was related to palm detection.

LiohMoeller avatar May 14 '15 20:05 LiohMoeller

@MarcusMoeller yeah, I got lost for a bit between the many possibly related issues. Do you also see those events generated for my recipe in issue #14?

anaran avatar May 14 '15 20:05 anaran

As native Ubuntu unity 14.04 had several problems (hdpi, touchpad, external monitor, etc.) I made fresh install of Ubuntu Gnome (seems much better than Unity re hdpi issues). All is splendid, except the palm detection of the touchpad which is really annoying. I fiddled with it for quite some time but no solution it seems. I also tried: http://stevenkohlmeyer.com/fixing-palm-detect-ubuntu-14-04/ Results: With 'xinput list' I find two items which relate to the touchpad:

  1. DLL0665:01 06CB:76AD UNKNOWN
  2. PS/2 Synaptics TouchPad

When I enable/ switch off the first (DLL) via xinput in the terminal the touchpad indeed toggles on/off. The touchpad does not react at all to enabling/ switcing off the second (Synaptics). The settings of DLL also correspond to the Gnome GUI settings under 'mouse&touchpad' for all tickmark settings and the ON/OFF button. One exception, it does not change settings when I adjust the pointer speed in the GUI (I see no change in the xinput settings, however the pointer does speed up/ slow down...).

When adjusting the palm detection settings with:
xinput set-prop 12 "Synaptics Palm Detection" 1 xinput set-prop 12 "Synaptics Palm Dimensions" 5, 80

And fiddling a lot with the values I have to conclude: they do not do ANYTHING, i.e. when I stroke with my palm the pointer always reacts.

I would be very happy with a solution as I know use a workaround: completely switching off the touchpad when typing with shortkeys.

Dell XPS 9343 (april 2015) bios A03 Ubuntu gnome 15.04 (3.19 kernel)

musicformellons avatar May 29 '15 10:05 musicformellons

@musicformellons, have you seen this comment by @anaran? Does that help at all?

dchambers avatar May 29 '15 10:05 dchambers

I looked into Anaran's issue (and watched his video), but I am pretty sure he addresses another issue: he touches the touchpad with his thumb when using/resting at his space bar. I however do not have this issue: I touch the touchpad with my palms now and then (as everybody does...when typing).

musicformellons avatar May 29 '15 10:05 musicformellons

@musicformellons Not sure what you are trying to say. What I addressed and fixed with a modified config in issue #14 is a separate issue, yes. And as I was able to feel my interactions while recording the video I was not touching the upper rim of the touchpad with my thumbs.

This issue #3 is still unresolved for me. I was not able to get my sytem to ignore brushes of my palms. They still cause cursor moves and even button clicks with tap to click on.

Ah, reading your older comment suggests you are just confirming that palm detection does not work for you either.

anaran avatar May 29 '15 11:05 anaran

Yes, issue #3 still unresolved for both of us.

musicformellons avatar May 29 '15 11:05 musicformellons

Palm detection is disabled by default. I've just tried turning it on like this:

$ synclient PalmDetect=1

It looks like there's also PalmMinWidth and PalmMinZ settings to tinker with (synclient -l to see the full list). Note that you'll need to add this to your xorg conf to make the changes persist (i.e. after a reboot).

Robsteranium avatar Jun 11 '15 09:06 Robsteranium

@Robsteranium : and does palm detection work for you? Because I have the correct setting but it is pretty clear that it does NOT work. When I use my palm on the touchpad the pointer reacts as if using a finger...

My synclient settings: ~$ synclient -l Parameter settings: LeftEdge = 48 RightEdge = 1168 TopEdge = 36 BottomEdge = 644 FingerLow = 25 FingerHigh = 30 MaxTapTime = 180 MaxTapMove = 61 MaxDoubleTapTime = 180 SingleTapTimeout = 180 ClickTime = 100 EmulateMidButtonTime = 0 EmulateTwoFingerMinZ = 282 EmulateTwoFingerMinW = 7 VertScrollDelta = -27 HorizScrollDelta = -27 VertEdgeScroll = 0 HorizEdgeScroll = 0 CornerCoasting = 0 VertTwoFingerScroll = 1 HorizTwoFingerScroll = 1 MinSpeed = 1 MaxSpeed = 1.75 AccelFactor = 0.143575 TouchpadOff = 2 LockedDrags = 0 LockedDragTimeout = 5000 RTCornerButton = 2 RBCornerButton = 3 LTCornerButton = 0 LBCornerButton = 0 TapButton1 = 1 TapButton2 = 3 TapButton3 = 2 ClickFinger1 = 1 ClickFinger2 = 3 ClickFinger3 = 0 CircularScrolling = 0 CircScrollDelta = 0.1 CircScrollTrigger = 0 CircularPad = 0 PalmDetect = 1 PalmMinWidth = 5 PalmMinZ = 5 CoastingSpeed = 20 CoastingFriction = 50 PressureMotionMinZ = 30 PressureMotionMaxZ = 160 PressureMotionMinFactor = 1 PressureMotionMaxFactor = 1 ResolutionDetect = 1 GrabEventDevice = 0 TapAndDragGesture = 1 AreaLeftEdge = 0 AreaRightEdge = 0 AreaTopEdge = 0 AreaBottomEdge = 0 HorizHysteresis = 6 VertHysteresis = 6 ClickPad = 1 RightButtonAreaLeft = 608 RightButtonAreaRight = 0 RightButtonAreaTop = 557 RightButtonAreaBottom = 0 MiddleButtonAreaLeft = 0 MiddleButtonAreaRight = 0 MiddleButtonAreaTop = 0 MiddleButtonAreaBottom = 0

I followed several links on this topic but settings simply do not work so it is a driver issue I suppose: https://wiki.archlinux.org/index.php/Touchpad_Synaptics http://en.community.dell.com/techcenter/os-applications/f/4613/t/19544120 https://wiki.archlinux.org/index.php/Touchpad_Synaptics http://stevenkohlmeyer.com/fixing-palm-detect-ubuntu-14-04/ http://xps13-9333.appspot.com/#touchpad

Did not try the patch in the last link as it is 'way above my head' and pretty unsure whether this will solve it...

musicformellons avatar Jun 11 '15 09:06 musicformellons

Hi @Robsteranium, the ArchLinux XPS 13 page seems to be the best resource for the XPS 13 I can find, and if you ignore Broadcom Wifi & Bluetooth issues (you can after all purchase an Intel card quite cheaply), then this seems to be the only outstanding issue.

dchambers avatar Jun 11 '15 09:06 dchambers

My output of xinput list contained an unknown device:

~ $ xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ DLL0665:01 06CB:76AD UNKNOWN              id=11   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ Integrated_Webcam_HD                      id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=12   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                          id=14   [slave  keyboard (3)]

You see, the DLL0665:01 06CB:76AD UNKNOWN device. I noticed that this was the device in use and not SynPS/2 Synaptics TouchPad, because setting the Device Enabled property to 0 on the latter didn't disable my touchpad but on the former it did. So I tried setting the Synaptics Palm Detection and Synaptics Palm Dimensions properties on this device but it still didn't have any effect.

I checked the Arch Linux XPS 13 wiki page, it says this:

With the latest BIOS patch, most of the touchpad functions should work, although palm detection does not work in i2c mode yet.

I'm not sure what "i2c mode" is and I'm not sure how to disable it, but I just tried a couple of things and I ended up adding this line:

blacklist i2c_hid

to /etc/modprobe.d/blacklist.conf. This blacklists the linux kernel module i2c_hid, so it won't get loaded. After I rebooted the laptop, I noticed the unknown device disappeared from the xinput list output:

~ $ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ Integrated_Webcam_HD                      id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                          id=13   [slave  keyboard (3)]

Not sure why disabling the i2c_hid module has this effect. Anyway, now changing the Device Enabled property on SynPS/2 Synaptics TouchPad did have effect, but changing the Synaptics Palm Detection and Synaptics Palm Dimensions properties still didn't have any effect.

But while I was experimenting, I noticed that the behavior did change somewhat. I noticed that while I was typing, I didn't have accidental taps anymore. I found out this was because the process syndaemon was running. This is a daemon that disables the touchpad when there's keyboard activity. I checked if this was also running if I didn't blacklist the i2c_hid module and it was, but then it apparently didn't have any effect.

So, as far as I can see, blacklisting the linux kernel module ic2_hid makes an unknown device in xinput list disappear and syndaemon work. When syndaemon works, I actually don't have a lot of issues with the touchpad anymore (at least for now).

Hope this helps anyone. Btw, I have a XPS 13 Core i5 without touchscreen, with Ubuntu 15.04 and the latest BIOS driver (A04).

Edit: Too bad, I just noticed that when I'm blacklisting ic2_hid, the mousepad occasionally freezes (the pointer stops moving for about half a second) every couple of seconds. I checked if this was because of syndaemon but turning that off didn't make a change. Very sad, this is at least as annoying as the occasional palm touches... I might just turn of the tap functionality and use the click functionality of the touch pad only.

gitaarik avatar Jun 14 '15 16:06 gitaarik

@gitaarik: I did follow your settings. In the end the "disable while typing" does not work however, I still have jumps and taps. Are you sure it is working for you?

Some other weird behaviour I noticed:

  • setting the "Synaptics Two-Finger Width" to 1 (xinput set-prop 13 "Synaptics Two-Finger Width" 1) or 10000000 does not do anything (two finger scrolling works but the width does not matter); when I set it to 0 however, the cursor stops all together, so that 'does work'.

It think 2 finger width and palm detection are closely related and both do not work with current drivers.

musicformellons avatar Jun 17 '15 10:06 musicformellons

@musicformellons yes, pretty sure it worked for me. Did you have the unknown device in the xinput list output? What did you try? The id of your device (13) doesn't tell me much.

gitaarik avatar Jun 17 '15 12:06 gitaarik

@gitaarik Yes I had the exact same unknown device. All of your steps were the same. Whether I set the Gnome GUI setting checkbox for "Disable while typing" checked or unchecked does not make a difference it seems.

My settings: Device 'SynPS/2 Synaptics TouchPad': Device Enabled (139): 1 Coordinate Transformation Matrix (141): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 Device Accel Profile (272): 1 Device Accel Constant Deceleration (273): 1.000000 Device Accel Adaptive Deceleration (274): 1.000000 Device Accel Velocity Scaling (275): 12.500000 Synaptics Edges (297): 1583, 5359, 1371, 4481 Synaptics Finger (298): 10, 14, 0 Synaptics Tap Time (299): 250 Synaptics Tap Move (300): 350 Synaptics Tap Durations (301): 180, 100, 100 Synaptics ClickPad (302): 1 Synaptics Middle Button Timeout (303): 0 Synaptics Two-Finger Pressure (304): 40 Synaptics Two-Finger Width (305): 12 Synaptics Scrolling Distance (306): -190, -300 Synaptics Edge Scrolling (307): 0, 0, 1 Synaptics Two-Finger Scrolling (308): 1, 1 Synaptics Move Speed (309): 1.000000, 12.000000, 0.022000, 0.000000 Synaptics Off (310): 2 Synaptics Locked Drags (311): 0 Synaptics Locked Drags Timeout (312): 5000 Synaptics Tap Action (313): 2, 3, 0, 8, 1, 3, 2 Synaptics Click Action (314): 1, 3, 0 Synaptics Circular Scrolling (315): 1 Synaptics Circular Scrolling Distance (316): 0.100000 Synaptics Circular Scrolling Trigger (317): 7 Synaptics Circular Pad (318): 0 Synaptics Palm Detection (319): 1 Synaptics Palm Dimensions (320): 5, 5 Synaptics Coasting Speed (321): 20.000000, 50.000000 Synaptics Pressure Motion (322): 30, 160 Synaptics Pressure Motion Factor (323): 1.000000, 1.000000 Synaptics Resolution Detect (324): 1 Synaptics Grab Event Device (325): 0 Synaptics Gestures (326): 1 Synaptics Capabilities (327): 1, 0, 0, 1, 1, 1, 1 Synaptics Pad Resolution (328): 1, 1 Synaptics Area (329): 0, 0, 0, 0 Synaptics Soft Button Areas (330): 3471, 0, 4083, 0, 0, 0, 0, 0 Synaptics Noise Cancellation (331): 28, 28 Device Product ID (259): 2, 7 Device Node (260): "/dev/input/event6"

musicformellons avatar Jun 17 '15 12:06 musicformellons

@gitaarik BTW: I do not have freezes... I am on Dell XPS 13 9343, ubuntu 15.04 Gnome, bios A03 and kernel 4.1

musicformellons avatar Jun 17 '15 13:06 musicformellons

@musicformellons Did you check if the syndaemon process is running?

ps aux | grep syndaemon

For me this process was always running (as long as the "Disable while typing" checkbox in the touchpad settings was checked), but only worked after I blacklisted i2c_hid and restarted. But yeah, then I had the freezes too.

gitaarik avatar Jun 18 '15 08:06 gitaarik

Not sure about output, but seems to be running?!: 885 0.0 0.0 22352 232 ? Ss 10:44 0:00 /usr/bin/syndaemon -d -t -k -i 2 1010 0.0 0.0 22352 2492 ? S 10:44 0:00 syndaemon -i 1.0 -t -K -R 2063 0.0 0.0 13696 2216 pts/0 R+ 10:46 0:00 grep --color=auto syndaemon

2015-06-18 10:36 GMT+02:00 Rik [email protected]:

@musicformellons https://github.com/musicformellons Did you check if the syndaemon process is running?

ps aux | grep syndaemon

For me this process was always running (as long as the "Disable while typing" checkbox in the touchpad settings was checked), but only worked after I blacklisted i2c_hid and restarted. But yeah, then I had the freezes too.

— Reply to this email directly or view it on GitHub https://github.com/advancingu/XPS13Linux/issues/3#issuecomment-113076299 .

musicformellons avatar Jun 18 '15 08:06 musicformellons

It even looks like it's running two times for you, /usr/bin/syndaemon -d -t -k -i 2 and syndaemon -i 1.0 -t -K -R. Not sure why it's running two times for you, maybe that's the problem. You can kill one with kill <process-id> where the number on the left in the output is the process id. You can also spin off a new process by entering the command yourself. You can check the options for syndaemon with man syndaemon or maybe syndaemon --help.

gitaarik avatar Jun 18 '15 10:06 gitaarik

yes, I followed this: https://wiki.debian.org/SynapticsTouchpad which runs the /usr/bin/syndaemon

the other one is the one of Gnome GUI checkbox.

Killing one or the other does not work: touchpad remains on while typing.

I did delete the first one as it seems redundant.

Thanks anyways.

2015-06-18 12:37 GMT+02:00 Rik [email protected]:

It even looks like it's running two times for you, /usr/bin/syndaemon -d -t -k -i 2 and syndaemon -i 1.0 -t -K -R. Not sure why it's running two times for you, maybe that's the problem. You can kill one with kill where the number on the left in the output is the process id. You can also spin off a new process by entering the command yourself. You can check the options for syndaemon with man syndaemon or maybe syndaemon --help.

— Reply to this email directly or view it on GitHub https://github.com/advancingu/XPS13Linux/issues/3#issuecomment-113103315 .

musicformellons avatar Jun 18 '15 11:06 musicformellons

@musicformellons are you also still able to tap-to-click with the touchpad while typing?

gitaarik avatar Jun 18 '15 13:06 gitaarik

@gitaarik AAAH! It works! GREAT! As the value of "Synaptics Off" is set to 2 (I tried setting it to 0 before but that stopped my touchpad completely) I was thinking that the swipes would still occur but that clicks should be blocked. That is what I tested all the time (so I do not know if it worked while having syndaemon running twice). But you are right it is stopping taps form occurring. Very clearly so. So it works for taps which is great!

Actually after fine-tuning the settings I am starting to feel pretty comfortable about the touchpad. A pity that palm detection does not work but this is already quite good.

I tried now to set Synaptics Off to 0 (to also block swiping), but it will not accept this setting it seems. It does not alter the behavior (swipes continue while typing; taps are blocked). The setting gives this (look at the end for strange lines..., it seems to toggle back from 0 to 2... ): ~$ xinput --watch-props 13 Device 'SynPS/2 Synaptics TouchPad': Device Enabled (139): 1 Coordinate Transformation Matrix (141): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 Device Accel Profile (272): 1 Device Accel Constant Deceleration (273): 1.000000 Device Accel Adaptive Deceleration (274): 1.000000 Device Accel Velocity Scaling (275): 12.500000 Synaptics Edges (297): 1583, 5359, 1371, 4481 Synaptics Finger (298): 10, 14, 0 Synaptics Tap Time (299): 180 Synaptics Tap Move (300): 350 Synaptics Tap Durations (301): 180, 100, 100 Synaptics ClickPad (302): 1 Synaptics Middle Button Timeout (303): 0 Synaptics Two-Finger Pressure (304): 40 Synaptics Two-Finger Width (305): 12 Synaptics Scrolling Distance (306): -200, -300 Synaptics Edge Scrolling (307): 0, 0, 1 Synaptics Two-Finger Scrolling (308): 1, 1 Synaptics Move Speed (309): 1.000000, 12.000000, 0.022000, 0.000000 Synaptics Off (310): 2 Synaptics Locked Drags (311): 1 Synaptics Locked Drags Timeout (312): 5000 Synaptics Tap Action (313): 2, 3, 0, 8, 1, 3, 2 Synaptics Click Action (314): 1, 3, 0 Synaptics Circular Scrolling (315): 0 Synaptics Circular Scrolling Distance (316): 0.100000 Synaptics Circular Scrolling Trigger (317): 7 Synaptics Circular Pad (318): 0 Synaptics Palm Detection (319): 1 Synaptics Palm Dimensions (320): 5, 5 Synaptics Coasting Speed (321): 20.000000, 50.000000 Synaptics Pressure Motion (322): 30, 160 Synaptics Pressure Motion Factor (323): 1.000000, 1.000000 Synaptics Resolution Detect (324): 1 Synaptics Grab Event Device (325): 0 Synaptics Gestures (326): 1 Synaptics Capabilities (327): 1, 0, 0, 1, 1, 1, 1 Synaptics Pad Resolution (328): 1, 1 Synaptics Area (329): 0, 0, 0, 0 Synaptics Soft Button Areas (330): 3471, 0, 4083, 0, 0, 0, 0, 0 Synaptics Noise Cancellation (331): 28, 28 Device Product ID (259): 2, 7 Device Node (260): "/dev/input/event5" Property 'Synaptics Off' changed. Synaptics Off (310): 0 Property 'Synaptics Off' changed. Synaptics Off (310): 2 Property 'Synaptics Off' changed. Synaptics Off (310): 0

2015-06-18 15:04 GMT+02:00 Rik [email protected]:

@musicformellons https://github.com/musicformellons are you also still able to tap-to-click with the touchpad while typing?

— Reply to this email directly or view it on GitHub https://github.com/advancingu/XPS13Linux/issues/3#issuecomment-113149235 .

musicformellons avatar Jun 18 '15 13:06 musicformellons

The other syndaemon service (I had before) works as well separately (when I uncheck 'disable typing') and then I can set the inverval as I like.

2015-06-18 15:04 GMT+02:00 Rik [email protected]:

@musicformellons https://github.com/musicformellons are you also still able to tap-to-click with the touchpad while typing?

— Reply to this email directly or view it on GitHub https://github.com/advancingu/XPS13Linux/issues/3#issuecomment-113149235 .

musicformellons avatar Jun 18 '15 13:06 musicformellons

@musicformellons Ok nice going, did you also had to blacklist i2c_hid? And aren't you getting the occasional freezes?

gitaarik avatar Jun 18 '15 13:06 gitaarik

@gitaarik The freezes you have: these are really obvious to notice?

My cursor sometimes seems to 'hang' for a second or so but I think maybe my pressure settings need some adjusting, since when I just make swiping circles (or just up and down) for a long time (with more or less same pressure) it does not hang.

2015-06-18 15:04 GMT+02:00 Rik [email protected]:

@musicformellons https://github.com/musicformellons are you also still able to tap-to-click with the touchpad while typing?

— Reply to this email directly or view it on GitHub https://github.com/advancingu/XPS13Linux/issues/3#issuecomment-113149235 .

musicformellons avatar Jun 18 '15 13:06 musicformellons