Bug 43197 - Sentelic touchpad bug
Sentelic touchpad bug
Status: REOPENED
Product: Drivers
Classification: Unclassified
Component: Input Devices
All Linux
: P1 normal
Assigned To: drivers_input-devices
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2012-05-03 03:53 UTC by Leks13
Modified: 2015-02-19 17:36 UTC (History)
17 users (show)

See Also:
Kernel Version: 3.16
Tree: Mainline
Regression: No


Attachments
testing zone for jumpy cursor (37.20 KB, image/jpeg)
2012-05-10 04:58 UTC, kernel-bugzilla.3.atliang
Details
bash script for retrieving FSP production information (776 bytes, application/x-shellscript)
2012-05-11 04:09 UTC, kernel-bugzilla.3.atliang
Details
patch to filter bad movement (535 bytes, application/octet-stream)
2012-05-31 07:17 UTC, kernel-bugzilla.3.atliang
Details
Patch to filter out data causing errating movements (1.26 KB, patch)
2012-06-04 22:24 UTC, Dmitry Torokhov
Details | Diff
A dmesg debug report featuring two finger scroll jumping to (x,y)=(0,0) (249.09 KB, text/plain)
2012-06-05 16:04 UTC, Eddie Dunn
Details
(x, y) getting stuck alternating between two sets of coordinates (249.11 KB, text/plain)
2012-06-05 16:10 UTC, Eddie Dunn
Details
v2 patch to filter out bad movement (2.31 KB, patch)
2012-06-07 05:14 UTC, kernel-bugzilla.3.atliang
Details | Diff
dmesg with latest filter patch (https://bugzilla.kernel.org/attachment.cgi?id=73519) applied (10.46 KB, application/octet-stream)
2012-06-07 15:03 UTC, Eddie Dunn
Details
Scroll jumps up and down continously until I remove hand from trackpad (21.22 KB, application/octet-stream)
2012-06-08 08:37 UTC, Eddie Dunn
Details
v3 patch to filter out bad movement (5.59 KB, patch)
2012-06-08 13:48 UTC, kernel-bugzilla.3.atliang
Details | Diff
debug output filter patch 3 (10.62 KB, text/plain)
2012-06-10 21:43 UTC, Eddie Dunn
Details
dmesg output seems normal, as far as I can tell (10.49 KB, text/plain)
2012-06-11 19:36 UTC, Eddie Dunn
Details
v4 patch to filter out bad movement (5.59 KB, patch)
2012-06-22 10:23 UTC, kernel-bugzilla.3.atliang
Details | Diff
v5 patch to filter out bad movement (6.08 KB, patch)
2012-06-29 15:13 UTC, kernel-bugzilla.3.atliang
Details | Diff
indeferend i/o log (243.97 KB, application/octet-stream)
2012-07-17 22:21 UTC, Pavel Belyaev
Details
dmesg log after timeout 2500 (153.67 KB, text/plain)
2012-07-18 13:54 UTC, Pavel Belyaev
Details
patch for upstream submission (7.39 KB, patch)
2012-07-19 00:40 UTC, kernel-bugzilla.3.atliang
Details | Diff

Description Leks13 2012-05-03 03:53:16 UTC
I use at Ubuntu 12.04:
I: Bus=0011 Vendor=0002 Product=000f Version=0000
N: Name="FSPPS/2 Sentelic FingerSensingPad"
P: Phys=isa0060/serio1/input0
S: Sysfs=/devices/platform/i8042/serio1/input/input9
U: Uniq=
H: Handlers=mouse0 event9
B: PROP=8
B: EV=b
B: KEY=2420 0 30000 0 0 0 0 0 0 0 0
B: ABS=2608000 3
Until kernel 3.2.0-24-generic touchpad it was defined as a mouse, configured in the settings of the mouse. Worked boundary scrolling. Multi-touch is not working.
With this Kernel 3.2.0-24 touchpad appeared in the settings, became multi-function, but the boundary was lost scrolls.
Dvuhpaltsevy scrolling works. Also in the middle of the strip under the scrolling on the touchpad appeared a place that throws the pointer in the upper left corner.

Now I tested kernel 3.4-rc4 and it`s have bug. Touchpad works very bad.
Comment 1 Leks13 2012-05-03 03:56:46 UTC
This bug in Launchpad bug tracker - https://bugs.launchpad.net/ubuntu/+source/linux/+bug/990260
Comment 2 Dmitry Torokhov 2012-05-03 19:05:04 UTC
FYI - "Dvuhpaltsevy" means "double-finger".
Comment 3 kernel-bugzilla.3.atliang 2012-05-04 13:07:27 UTC
(In reply to comment #0)
> I use at Ubuntu 12.04:
[...]
> Until kernel 3.2.0-24-generic touchpad it was defined as a mouse, configured in
> the settings of the mouse. Worked boundary scrolling. Multi-touch is not
> working.
> With this Kernel 3.2.0-24 touchpad appeared in the settings, became
> multi-function, but the boundary was lost scrolls.

  If I understand it correctly, two finger(dvuhpaltsevy?) scrolling and edge(boundary) scrolling are mutually exclusive.  That is, once you enabled two finger scrolling, edge scrolling will be disabled.

> Dvuhpaltsevy scrolling works. Also in the middle of the strip under the
> scrolling on the touchpad appeared a place that throws the pointer in the upper
> left corner.
> 
> Now I tested kernel 3.4-rc4 and it`s have bug. Touchpad works very bad.
Comment 4 Leks13 2012-05-04 19:00:30 UTC
But it is not working. Edge scroll does not work, and with two finger scrolling area in the middle of the touchpad, which is used for normal scrolling transition occurs in the upper left corner. It is this section of the touchpad is not working properly, which is very annoying.

I would also like to return back midle scrolling, because two-finger scrolling is awkward to me. I like the behavior that was when the touchpad is defined as a mouse.
Now I use the old kernel.

Sorry for my bad English.
Comment 5 Leks13 2012-05-04 19:09:11 UTC
My original error message in Russian posted here [1]. I'll be glad if someone will add or correct my bug report message in English.

[1] - http://forum.ubuntu.ru/index.php?topic=189999.0
Comment 6 Dmitry Torokhov 2012-05-04 22:47:00 UTC
(In reply to comment #5)
> My original error message in Russian posted here [1]. I'll be glad if someone
> will add or correct my bug report message in English.
> 
> [1] - http://forum.ubuntu.ru/index.php?topic=189999.0

I have really hard time making sense of the original report as well. What is the difference between "краевая прокрутка" and "однопальцевый скроллинг"?

Re: two finger vs. edge scrolling - I am not sure what display manager you are using, but in KDE if two finger scrolling is enabled then edge scrolling is automatically disabled. I am not sure what behavior Gnome/Unity has. It could also be that touchpad dimensions are not quite right.

Re: jumps into upper left corner: where is the scrolling area located? You are saying that it in in the middle of the touchpad, which does not make sense. The scrolling areas are usually marked along the right and/or bottom edge of the touchpad.

Re: "return back midle scrolling" - what is it exactly?

Re: "I like the behavior that was when the touchpad is defined as
a mouse" - boot with psmouse.proto=imps or add "options psmouse proto=imps" (depending on whether psmouse is built into the kernel or is a loadable module).

Thanks.
Comment 7 Leks13 2012-05-05 02:59:42 UTC
>the difference between "краевая прокрутка" and "однопальцевый скроллинг"?
It's the same thing.

>Re: two finger vs. edge scrolling - I am not sure what display manager you are
>using, but in KDE if two finger scrolling is enabled then edge scrolling is
>automatically disabled. I am not sure what behavior Gnome/Unity has. It could
>also be that touchpad dimensions are not quite right.
The boundary value MUST turn off scrolling, but not disabled.
The entire touchpad works correctly (no edge scrolling), but that this part [1] of the pressing one or two fingers sends the cursor in the upper left corner.

>Re: "return back midle scrolling" - what is it exactly?
To work scrolling in one finger mode with midle scrolling. Now it not work.

[1] - Photo of touchpad. 
http://dl.dropbox.com/u/3484004/static/SSA45983.JPG
 Red marked area of ​​hitting a finger on which is getting the cursor in the upper left corner.
Comment 8 Leks13 2012-05-05 03:16:42 UTC
>Re: "I like the behavior that was when the touchpad is defined as
>a mouse" - boot with psmouse.proto=imps or add "options psmouse proto=imps"
>(depending on whether psmouse is built into the kernel or is a loadable
>module).
The touchpad is detected as a mouse, and began work as well as in the old core. This behavior suits me. The scroll work.
Thank you!
Comment 9 Leks13 2012-05-05 03:19:33 UTC
But this is a temporary solution does not eliminate malfunction of the touchpad. Please do not close the bug until it is fixed.
Comment 10 kernel-bugzilla.3.atliang 2012-05-07 06:24:24 UTC
Hi Leks13,

  Need your help to provide the packet dump generated during edge scrolling.  You'll need to rebuild psmouse.ko by adding following two lines at the beginning of drivers/input/mouse/sentelic.c:

#define FSP_DEBUG
#define DEBUG

  Additionally, what's the hardware revision are you using(dmesg | grep Finger)?  According to the photo you provided, it doesn't seem like an ASUS UX[23]1 to me.
Comment 11 Leks13 2012-05-07 06:53:51 UTC
> Need your help to provide the packet dump generated during edge scrolling. 
>You'll need to rebuild psmouse.ko by adding following two lines at the
>beginning of drivers/input/mouse/sentelic.c:
How can I do?
Can you provide step by step instructions?

>Additionally, what's the hardware revision are you using(dmesg | grep
>Finger)?  According to the photo you provided, it doesn't seem like an ASUS
>UX[23]1 to me.
It`s china notebook Quanta UW3(DNS (0136475)).
dmesg | grep Finger
[   12.748805] psmouse serio1: sentelic: Finger Sensing Pad, hw: 14.1.1, sw: 1.0.0-K
[   12.813665] input: FSPPS/2 Sentelic FingerSensingPad as /devices/platform/i8042/serio1/input/input6
Comment 12 Leks13 2012-05-07 07:09:49 UTC
:~$ cat /lib/modules/`uname -r`/kernel/drivers/input/mouse/sentelic.c
cat: /lib/modules/3.2.0-24-generic/kernel/drivers/input/mouse/sentelic.c: File not found
:~$ cd /lib/modules/`uname -r`/kernel/drivers/input/mouse/
:/lib/modules/3.2.0-24-generic/kernel/drivers/input/mouse$ ls
appletouch.ko  gpio_mouse.ko  logibm.ko    psmouse.ko   synaptics_i2c.ko
bcm5974.ko     inport.ko      pc110pad.ko  sermouse.ko  vsxxxaa.ko

 I do not know what to do. Simply create a new file sentelic.c? And then what?
Comment 13 kernel-bugzilla.3.atliang 2012-05-07 08:28:33 UTC
(In reply to comment #12)
> :~$ cat /lib/modules/`uname -r`/kernel/drivers/input/mouse/sentelic.c
> cat: /lib/modules/3.2.0-24-generic/kernel/drivers/input/mouse/sentelic.c: File
> not found
> :~$ cd /lib/modules/`uname -r`/kernel/drivers/input/mouse/
> :/lib/modules/3.2.0-24-generic/kernel/drivers/input/mouse$ ls
> appletouch.ko  gpio_mouse.ko  logibm.ko    psmouse.ko   synaptics_i2c.ko
> bcm5974.ko     inport.ko      pc110pad.ko  sermouse.ko  vsxxxaa.ko
> 
>  I do not know what to do. Simply create a new file sentelic.c? And then what?

  You'll need to get the full kernel source code to rebuild kernel.  https://help.ubuntu.com/community/Kernel/Compile should give you some hints.  For example:

 $ apt-get source linux-image-3.2.0-24-generic
 $ sudo apt-get build-dep linux-image-3.2.0-24-generic
 $ cd linux-3.2.0
 $ chmod +x debian/scripts/misc/* debian/scripts/*
 $ debian/rules updateconfigs
 $ vi drivers/input/mouse/sentelic.c # add #define FSP_DEBUG and #define DEBUG
 $ env skipabi=true fakeroot debian/rules binary-generic

 If nothing goes wrong, you should see a installable package such like ../linux-image-3.2.0-24-generic_3.2.0-24.37_i386.deb in the parent directory.
Comment 14 Leks13 2012-05-07 08:38:34 UTC
Okay.
When I rebuild and restart in new kernel where I found debug messages?
What I will post to bug report?
Comment 15 kernel-bugzilla.3.atliang 2012-05-07 08:46:29 UTC
(In reply to comment #14)
> Okay.
> When I rebuild and restart in new kernel where I found debug messages?
> What I will post to bug report?

  After booting with the FSP_DEBUG enabled kernel, you should see something like the following in your dmesg when finger is on the FSP:

[  183.114646] psmouse serio1: sentelic: -0117064ms Absolute packets: 58, 73, 5f, 05; abs_x: 461, abs_y: 381
[  183.126820] psmouse serio1: sentelic: -0117052ms Absolute packets: 58, 70, 5e, 03; abs_x: 448, abs_y: 379
[  183.139041] psmouse serio1: sentelic: -0117036ms Absolute packets: 58, 6c, 5e, 0b; abs_x: 434, abs_y: 379
[  183.151250] psmouse serio1: sentelic: -0117024ms Absolute packets: 58, 69, 5e, 03; abs_x: 420, abs_y: 379
[  183.163416] psmouse serio1: sentelic: -0117012ms Absolute packets: 58, 66, 5e, 07; abs_x: 409, abs_y: 379
[  183.175596] psmouse serio1: sentelic: -0117000ms Absolute packets: 58, 64, 5e, 01; abs_x: 400, abs_y: 377
[  183.199941] psmouse serio1: sentelic: -0116976ms Absolute packets: 58, 00, 00, 00; abs_x: 0, abs_y: 0
[  183.212173] psmouse serio1: sentelic: -0116964ms Absolute packets: 58, 00, 00, 00; abs_x: 0, abs_y: 0
[  183.224369] psmouse serio1: sentelic: -0116952ms Absolute packets: 58, 00, 00, 00; abs_x: 0, abs_y: 0

  I'll need the message generated whilst you're performing edge scrolling(particularly the one with "cursor jumping back to top-left corner when moving through the red-mark area").

  Thanks!
Comment 16 Leks13 2012-05-07 15:47:32 UTC
Hmm...
I`m build kernel, install it, reboot to it, but I don`t have a message in dmesg!
Before build a have two files: linux-image-3.2.0-24-generic_3.2.0-24.37_i386.deb, linux-headers-3.2.0-24-generic_3.2.0-24.37_i386.deb. I install this and reboot. I don`t undestand why I don`t have report about touchpad.

My redacted  drivers/input/mouse/sentelic.c pasted to http://paste.ubuntu.com/973790/
Comment 17 Leks13 2012-05-07 15:50:25 UTC
dmesg | grep psmouse
[   16.503933] psmouse serio1: hgpk: ID: 10 00 64
[   16.716690] psmouse serio1: sentelic: Finger Sensing Pad, hw: 14.1.1, sw: 1.0.0-K

I have only this, after reboot to my new build kernel.
Comment 18 kernel-bugzilla.3.atliang 2012-05-07 16:26:40 UTC
(In reply to comment #16)
> Hmm...
> I`m build kernel, install it, reboot to it, but I don`t have a message in
> dmesg!
[...]
> My redacted  drivers/input/mouse/sentelic.c pasted to
> http://paste.ubuntu.com/973790/

  You'll have to put DEBUG & FSP_DEBUG before various #include lines, something like:

#define DEBUG
#define FSP_DEBUG
/*-
 * Finger Sensing Pad PS/2 mouse driver.
 *
 ...
Comment 19 Leks13 2012-05-07 21:20:46 UTC
My edge scrolling http://paste.ubuntu.com/974487/
In this moment cursor has been moved to left top corner of the screen http://paste.ubuntu.com/974499/

I hope the logs will help.
Comment 20 kernel-bugzilla.3.atliang 2012-05-08 01:43:23 UTC
(In reply to comment #19)
> My edge scrolling http://paste.ubuntu.com/974487/

  I presume that you're moving your finger from top-right to bottom-right corner, right?  What looks strange to me is that the y coordinate(62) is still far from the red zone, which should be about half of the height(300+) if I read your image correctly.

> In this moment cursor has been moved to left top corner of the screen
> http://paste.ubuntu.com/974499/

  In this dump, was starting from the red zone(line 6 ~ 38) and then moving toward the bottom-right corner?

  Is line 58 ~ 59 the time your finger crossing/entering the red zone?
Comment 21 Leks13 2012-05-08 07:04:57 UTC
How I tested - I wrote last message in dmesg, moved in top right to bottom right, and posted all before this wrote message.
http://paste.ubuntu.com/975147/

Red zone just below the middle. Figure I depicts a little bit wrong.

>In this dump, was starting from the red zone(line 6 ~ 38) and then moving
toward the bottom-right corner?
>Is line 58 ~ 59 the time your finger crossing/entering the red zone?
I don`t know. I started scrolling around the red zone and ended up after moving the pointer to the red zone in the upper left corner.
Comment 22 kernel-bugzilla.3.atliang 2012-05-10 04:58:36 UTC
Created attachment 73240 [details]
testing zone for jumpy cursor

Need Leks13 to test if cursor jumping still occurs when finger is moving on the yellow/blue zone.  If cursor still jumps back to top-left corner, please also provide the packet dump.
Comment 23 Leks13 2012-05-10 10:14:46 UTC
Yellow zone testing video[1], log[2].

[1] - http://dl.dropbox.com/u/3484004/temp/yellow.AVI
[2] - http://paste.ubuntu.com/979575/

If you move your finger across the touchpad from the top down, then hit the finger at the end of the touchpad the cursor moves sharply up the screen (just up, but not in the top left).
Comment 24 Leks13 2012-05-10 10:31:24 UTC
Blue zone.
The touchpad works strange: sometimes ok, sometimes not. In two pass log sealed touch pad from top to bottom. The first pass - everything is normal, the second - the cursor jumped to the top left corner.
I do not know what the reason, and play it does not always work. Maybe that plays the role of the force pressing or something, but when working for the touchpad are spontaneous movements occur several times per hour and is very annoying.
http://paste.ubuntu.com/979595/
Comment 25 kernel-bugzilla.3.atliang 2012-05-11 04:09:30 UTC
Created attachment 73249 [details]
bash script for retrieving FSP production information

Please post the result returned by this script(sudo bash fsp_sn.sh). Thanks!
Comment 26 Leks13 2012-05-11 10:54:06 UTC
 sudo sh fsp_sn.sh 
[sudo] password for leks13: 
fsp_sn.sh: 9: fsp_sn.sh: cannot create /sys/bus/serio/drivers/psmouse/serio*/page: Directory nonexistent
fsp_sn.sh: 10: fsp_sn.sh: cannot create /sys/bus/serio/drivers/psmouse/serio*/getreg: Directory nonexistent
fsp_sn.sh: 12: fsp_sn.sh: cannot create /sys/bus/serio/drivers/psmouse/serio*/getreg: Directory nonexistent
fsp_sn.sh: 14: fsp_sn.sh: cannot create /sys/bus/serio/drivers/psmouse/serio*/getreg: Directory nonexistent
fsp_sn.sh: 17: fsp_sn.sh: cannot create /sys/bus/serio/drivers/psmouse/serio*/page: Directory nonexistent
sn: 0000, 0000, 0000
Comment 27 Leks13 2012-05-11 10:55:20 UTC
Sorry. This is true result:
sudo bash fsp_sn.sh
sn: 4004, 4187, 4210
Comment 28 kernel-bugzilla.3.atliang 2012-05-31 07:17:33 UTC
Created attachment 73475 [details]
patch to filter bad movement

Hi Leks13,

  Please try to see if this patch works for you or not.  You'll need to rebuild/re-install the patched kernel source.

  Steps to apply patch(taking comment#13 building steps as an example):

  $ cd linux-3.2.0/drivers/input/mouse
  $ patch < filter_bad_movement.patch
Comment 29 Leks13 2012-05-31 15:03:56 UTC
No. It`s don`t worked correctly.
Edge srolling - not work.
Jump zone - has come out less often, but sometimes it throws the cursor still.
Two-finger scrolling - not work.
Comment 30 Leks13 2012-05-31 15:07:38 UTC
Yes, let them work, defined as a mouse. I was quite happy. Also, it bothers small number of users. Much more often make synaptic touchpad.
Comment 31 kernel-bugzilla.3.atliang 2012-05-31 16:55:50 UTC
(In reply to comment #29)
> No. It`s don`t worked correctly.
> Edge srolling - not work.
> Jump zone - has come out less often, but sometimes it throws the cursor still.
> Two-finger scrolling - not work.

  Oops, I got it wrong.  Please move the "abs_x = GET_ABS_X(packet);" and "abs_y = GET_ABS_Y(packet);" lines after the filter if statement. Something like:

case FSP_PKT_TYPE_ABS:
  if ((packet[0] == 0x48 || packet[0] == 0x49) &&
      packet[1] == 0 && packet[2] == 0) {
          /*
           * filtering out erratic movement which will cause
           * unexpected cursor jumping to top-left corner
           */
          packet[3] &= 0xf0;
  }
  abs_x = GET_ABS_X(packet);
  abs_y = GET_ABS_Y(packet);

  if (packet[0] & FSP_PB0_MFMC) {
    ...
Comment 32 Leks13 2012-05-31 17:10:35 UTC
I fixed it this[1]. Is that true?
 Just do not want to once again build the core. It's too long on the Atom.

[1] - http://paste.ubuntu.com/1016641/
Comment 33 Leks13 2012-05-31 22:57:58 UTC
I build kernel, apped #32 patch.
But it work bad. 
Two-finger scrolling - work.
Edge scrolling - not work.
Jump zone - has come out less often, but sometimes it throws the cursor still.
Comment 34 Leks13 2012-06-01 09:49:39 UTC
I got an email about the bug, but I can not answer it. The letter is not delivered.
I have this error:
"This message was created automatically by mail delivery software.
A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:
  avatar@sentelic.com
    SMTP error from remote mail server after RCPT TO:<avatar@sentelic.com>:
    host yggdrasil.sentelic.com [203.69.18.18]: 554 5.7.1 Service unavailable; Client host [91.219.194.22] blocked using ru.countries.nerd.dk; Your IP is in ru, rejected based on geographical location"

I will reply to the letter publicly in the ticket.

I use Ubuntu 12.04 and $ uname -a
Linux flamme 3.2.0-24-generic #39-Ubuntu SMP Mon May 21 16:51:22 UTC 2012 i686 i686 i386 GNU/Linux
This is standart kernel in Ubuntu repository.

This is filter_bad_movement.patch - http://paste.ubuntu.com/1017599/
This is sentelic.c no patch - http://paste.ubuntu.com/1017604/
Patch process this - http://paste.ubuntu.com/1017607/
This is sentelic.c after patch - http://paste.ubuntu.com/1017610/
Comment 35 Leks13 2012-06-02 10:34:16 UTC
Great. Tested the new driver - everything works great.
Comment 36 Eddie Dunn 2012-06-04 22:00:47 UTC
How does the touchpad work with two finger scroll with patches and a newer kernel? I am currently running Ubuntu 12.04 with kernel 3.2.0-24-generic on an Asus UX21E, and it's basically unusable.

Also "Disable touchpad while typing" does not work either.

Or should I open a separate bug about these issues since the one reported here seems to be solved.
Comment 37 Dmitry Torokhov 2012-06-04 22:23:18 UTC
(In reply to comment #36)
> How does the touchpad work with two finger scroll with patches and a newer
> kernel? I am currently running Ubuntu 12.04 with kernel 3.2.0-24-generic on an
> Asus UX21E, and it's basically unusable.

Please try the patch - we need more testers to make sure it works well before getting the patch applied (

> 
> Also "Disable touchpad while typing" does not work either.
> 

Disabling touchpad while typing is not done within the kernel so I'd recommend opening the bug with your distro and having them route it properly.

Thanks.
Comment 38 Dmitry Torokhov 2012-06-04 22:24:28 UTC
Created attachment 73506 [details]
Patch to filter out data causing errating movements

The latest version of the patch
Comment 39 Eddie Dunn 2012-06-05 10:18:48 UTC
I followed this procedure to build the kernel with the latest patch:
 $ apt-get source linux-image-3.2.0-24-generic
 $ sudo apt-get build-dep linux-image-3.2.0-24-generic
 $ cd linux-3.2.0
 $ chmod +x debian/scripts/misc/* debian/scripts/*
 $ debian/rules updateconfigs
 $ vi drivers/input/mouse/sentelic.c # add #define FSP_DEBUG and #define DEBUG
 $ cd linux-3.2.0/drivers/input/mouse
 $ patch < filter_bad_movement.patch
 $ cd -
 $ env skipabi=true fakeroot debian/rules binary-generic
 $ cd ..
 $ sudo dpkg -i linux-headers-3.2.0-24-generic_3.2.0-24.39_amd64.deb linux-image-3.2.0-24-generic_3.2.0-24.39_amd64.deb

This did not improve two finger scroll at all.

Palm detection doesn't work either, which makes typing a hassle. Is this something that is kernel or distro specific?

Also, is there a way to set driver patches without recompiling the entire kernel? Maybe load it like a module or something similar? Compiling the kernel takes a while, which makes testing potential fixes more difficult.
Comment 40 Leks13 2012-06-05 10:24:10 UTC
filter_bad_movement.patch - it`s old wrong patch
Comment 41 Eddie Dunn 2012-06-05 10:28:21 UTC
I used the latest patch ( https://bugzilla.kernel.org/attachment.cgi?id=73506 ), just forgot to change the name to "sentelic.patch" in the comment.
Comment 42 kernel-bugzilla.3.atliang 2012-06-05 10:50:05 UTC
(In reply to comment #39)
>  $ vi drivers/input/mouse/sentelic.c # add #define FSP_DEBUG and #define DEBUG

  Since you already have FSP_DEBUG and DEBUG defined at the beginning of sentelic.c, please do two fingers scrolling first and then use dmesg to get packet dump for analysis. Thanks.
Comment 43 Leks13 2012-06-05 13:36:58 UTC
Patch work fine in Ubuntu 12.04 on my touchpad(3.2.0-24-generic).

After loading for a comfortable working with edge scrolling needed to run "synclient RightEdge = 900" (the value may change depending on the laptop).

Thank you all for corrected bug.
Comment 44 Eddie Dunn 2012-06-05 16:04:43 UTC
Created attachment 73511 [details]
A dmesg debug report featuring two finger scroll jumping to (x,y)=(0,0)

Note at the end of the log how I am scrolling down a page and (x, y) suddenly resets to abs pos (0, 0).
Comment 45 Eddie Dunn 2012-06-05 16:10:50 UTC
Created attachment 73512 [details]
(x, y) getting stuck alternating between two sets of coordinates

Notice close to the end how the absolute coordinates shift between two sets of coordinates very quickly:
[  562.271845] psmouse serio4: sentelic: 00263060ms Absolute packets: 7c, 80, 56, 0f; abs_x: 515, abs_y: 347
[  562.279471] psmouse serio4: sentelic: 00263068ms Absolute packets: 78, a4, 81, 03; abs_x: 656, abs_y: 519
[  562.284430] psmouse serio4: sentelic: 00263072ms Absolute packets: 7c, 80, 56, 0a; abs_x: 514, abs_y: 346
[  562.291770] psmouse serio4: sentelic: 00263080ms Absolute packets: 78, a4, 82, 01; abs_x: 656, abs_y: 521
[  562.296709] psmouse serio4: sentelic: 00263084ms Absolute packets: 7c, 80, 56, 0d; abs_x: 515, abs_y: 345
[  562.304887] psmouse serio4: sentelic: 00263092ms Absolute packets: 78, a3, 82, 0a; abs_x: 654, abs_y: 522
[  562.310118] psmouse serio4: sentelic: 00263096ms Absolute packets: 7c, 80, 56, 09; abs_x: 514, abs_y: 345
[  562.317782] psmouse serio4: sentelic: 00263104ms Absolute packets: 78, a3, 82, 07; abs_x: 653, abs_y: 523
[  562.323105] psmouse serio4: sentelic: 00263112ms Absolute packets: 7c, 80, 55, 0f; abs_x: 515, abs_y: 343

This resulted in the web page I was trying to scroll down scrolling up and down very quickly on the spot.
Comment 46 kernel-bugzilla.3.atliang 2012-06-07 05:14:23 UTC
Created attachment 73519 [details]
v2 patch to filter out bad movement

Hi Eddie,

  Please revert sentelic.patch and try this one instead. Thanks.
Comment 47 Eddie Dunn 2012-06-07 15:03:57 UTC
Created attachment 73527 [details]
dmesg with latest filter patch (https://bugzilla.kernel.org/attachment.cgi?id=73519) applied

Behavior is a -lot- better; I don't get the crazy up-down-up-down-up-down lockup any longer. However, if I'm scrolling down a long page, it sometimes scrolls to the top of the page all of a sudden, which is very annoying.
Comment 48 kernel-bugzilla.3.atliang 2012-06-07 16:48:11 UTC
(In reply to comment #47)
> Behavior is a -lot- better; I don't get the crazy up-down-up-down-up-down
> lockup any longer. However, if I'm scrolling down a long page, it sometimes
> scrolls to the top of the page all of a sudden, which is very annoying.

  Looks to me the jumping was caused by 1446.818497 and 1446.843775. I probably misunderstood how input_mt_report_slot_state() works.  Dmitry, should we simply stop calling fsp_set_slot() upon receiving bad movement(0,0) in multi-finger(MFMC) case?
Comment 49 Dmitry Torokhov 2012-06-07 18:41:01 UTC
I think if a device truly sends garbage data sometimes then we need to completely ignore such packets and not adjust slot state, since contact will "recover" in the next packet(s).
Comment 50 kernel-bugzilla.3.atliang 2012-06-08 08:05:27 UTC
(In reply to comment #47)
[...]
> However, if I'm scrolling down a long page, it sometimes
> scrolls to the top of the page all of a sudden, which is very annoying.

  Interesting...  It appears to me that the final 7c, 00, 00, 00 doesn't cause these jumps.  Not sure if this is the same with Eddie's observation; however, I can reproduce similar jumping by putting two fingers at two places(in opposite direction. For example, one at the top left and the other at the bottom right corner), hold two fingers for a few seconds, then move both of them away -- now the browser scroll bar starts to roll.

  If that's the case, we probably have to fix the code by _not_ invoking fsp_set_slot() unless two fingers' coordinates are ready. That is, accumulate both fingers' packets and report at once with something like the xxx_report_semi_mt_data() found in other touchpad drivers.
Comment 51 Eddie Dunn 2012-06-08 08:37:12 UTC
Created attachment 73542 [details]
Scroll jumps up and down continously until I remove hand from trackpad

My last comment about the latest patch fixing jumping up and down was wrong. See end of attached dmesg.

This happens while I'm scrolling down and one finger "moves ahead" of the other. In my case I was scrolling down with my right hand, and my middle finger moved from being horizontal with my ring finger to being about 2 centimeters farther down.
Comment 52 kernel-bugzilla.3.atliang 2012-06-08 13:48:20 UTC
Created attachment 73546 [details]
v3 patch to filter out bad movement

Hi Eddie,
  Please see if this patch works for you.  Thanks.
Comment 53 Eddie Dunn 2012-06-10 21:43:46 UTC
Created attachment 73554 [details]
debug output filter patch 3

Latest patch gives a much better result overall.

However, the crazy fast scroll still occurs sometimes. I have attached a debug report.
Comment 54 kernel-bugzilla.3.atliang 2012-06-11 01:43:55 UTC
(In reply to comment #53)
> However, the crazy fast scroll still occurs sometimes.

  How does the crazy fast scroll look like?  Does it scroll back all the way to the top most page or just scroll back a short distance?

> I have attached a debug report.

  I can see the Y coordinate of the first finger jumps back from 750 to 597 at 1567.914751. I'm wondering if this could be filtered in the userland as the kernel driver may need more resource to keep the track of movement history before applying certain heuristics to ignore such jumpy packet.
Comment 55 Eddie Dunn 2012-06-11 09:06:48 UTC
(In reply to comment #54)
>   How does the crazy fast scroll look like?  Does it scroll back all the way to
> the top most page or just scroll back a short distance?
Both can happen, actually. But the most annoying (and more common) is if you're scrolling down a page and it suddenly goes really fast either to the top or to the bottom of the page (it can also happen).
Comment 56 Eddie Dunn 2012-06-11 19:36:51 UTC
Created attachment 73562 [details]
dmesg output seems normal, as far as I can tell

I just noticed a slightly disconcerting bug -- after resuming from suspend, I can no longer use two finger scroll. Edge scrolling works normally if I switch to it.
Comment 57 kernel-bugzilla.3.atliang 2012-06-12 07:57:32 UTC
(In reply to comment #56)
> I just noticed a slightly disconcerting bug -- after resuming from suspend, I
> can no longer use two finger scroll. Edge scrolling works normally if I switch
> to it.

  There's a typo in the v3 patch.  Please try to change the 'fgrs = 1' to 'fgrs = 2' after the 'MFMC 1st finger' line and see if it helps:

   } else if (IS_MFMC_FGR1(packet[0])) {
           /* MFMC 1st finger */
           fgrs = 2;

           /*
            * accumulate the coordaintes and proceed to
            * the next run
            */
...

  The above bug should be observable before entering to suspend mode, though.
Comment 58 Pavel Belyaev 2012-06-13 01:50:03 UTC
I have notebook DNS X300 (china export)
In windows installed drivers sentelic and work fine.

In linux (Ubuntu 12.04) touchpad not detect. Tap working, scroll not working, configure utils show only mouse.

$ xinput list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ ImPS/2 Generic Wheel Mouse              	id=11	[slave  pointer  (2)]

$ dmesg |grep PS/2
[    1.140559] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f03:PS2M] at 0x60,0x64 irq 1,12
[    1.146588] mousedev: PS/2 mouse device common for all mice
[    2.551662] input: ImPS/2 Generic Wheel Mouse as /devices/platform/i8042/serio2/input/input5

$ fspc -h
FSP not detected.


Any patches not helped me
Comment 59 Pavel Belyaev 2012-06-13 01:57:39 UTC
I have ubuntu 12.04 amd64 version
Comment 60 kernel-bugzilla.3.atliang 2012-06-14 05:05:01 UTC
(In reply to comment #58)
[...]
> $ dmesg |grep PS/2
> [    1.140559] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f03:PS2M] at
> 0x60,0x64 irq 1,12
> [    1.146588] mousedev: PS/2 mouse device common for all mice
> [    2.551662] input: ImPS/2 Generic Wheel Mouse as
> /devices/platform/i8042/serio2/input/input5

  Booting with FSP_DEBUG and DEBUG enabled driver could help. Otherwise, you may want to boot with i8042.debug=1 to get the full I/O log.
Comment 61 Jakub Luzny 2012-06-20 19:29:21 UTC
I have a MSI CR640 laptop with Sentelic touchpad. It worked well without any scrolling support before 3.4. After upgrading to 3.4, the cursor became jumpy and any scrolling still wasn't working. After applying v3 patch (and modifying one line as said in later comment) from this thread, the cursor doesn't jump, two-finger vertical scrolling partially works (it usually scrolls but when i put finger up, it returns to original position) and edge scrolling doesn't work. I tried changing hscroll attribute in /sys/devices/platform/i8042/serio2, but it didn't do anything.
Comment 62 kernel-bugzilla.3.atliang 2012-06-21 01:58:43 UTC
(In reply to comment #61)
[...]
> two-finger vertical scrolling partially works (it usually scrolls but when i
> put finger up, it returns to original position)

  Would you please be more specific about what the 'original position' refers
to? For example, if you do a two-finger vertical scrolling from top-most edge
to bottom-most edge, does the cursor returns all-the-way to top-most edge after
fingers moving away? Or does it scrolls back, say, perhaps 1/10 of current
screen height?

> and edge scrolling doesn't work.

  Which window manager are you using? In Gnome/Unity configuration menu,
two fingers scrolling and edge scrolling are mutual exclusive -- you can only
have one of them activated at any given moment.

  Another possibility of non-working edge scrolling is that pad dimensions
don't match to your physical hardware. To confirm this, you'll need to load
the FSP_DEBUG and DEBUG enabled driver(see comment#39 and comment#18) and
the packet dump will reveal what the max X/Y are when you're putting one finger
on the bottom-right corner.

> I tried changing hscroll attribute in /sys/devices/platform/i8042/serio2,
> but it didn't do anything.

  hscroll only works in relative coordinates mode, which doesn't apply to the
configuration you're running with.
Comment 63 Jakub Luzny 2012-06-21 06:27:20 UTC
(In reply to comment #62)
> (In reply to comment #61)
>   Would you please be more specific about what the 'original position' refers
> to? For example, if you do a two-finger vertical scrolling from top-most edge
> to bottom-most edge, does the cursor returns all-the-way to top-most edge after
> fingers moving away? Or does it scrolls back, say, perhaps 1/10 of current
> screen height?

I'm sorry, I just used it wrong. I put one finger down and moved another, but I need to move both :) 
> 
>   Which window manager are you using? In Gnome/Unity configuration menu,
> two fingers scrolling and edge scrolling are mutual exclusive -- you can only
> have one of them activated at any given moment.
> 
I'm using KWin. Are there any problems or should I try the FSP_DEBUG?
Comment 64 kernel-bugzilla.3.atliang 2012-06-22 10:01:55 UTC
(In reply to comment #63)
> I'm using KWin. Are there any problems or should I try the FSP_DEBUG?

  Hmm, KDE accepts both scrolling settings being enabled at the same time.
I don't know if turning two finger scrolling would make any difference.
You can get/set current scrolling state by running synclient or xinput, though:

   $ synclient | grep Scroll        # get current scrolling options
   $ synclient VertEdgeScroll=1     # enable vertical edge scrolling
   $ synclient VertTwoFingerScroll=1     # enable vertical two finger scrolling

  If you don't have the time to rebuild the kernel with FSP_DEBUG, tweaking
the RightEdge parameter probably helps but you'll have to guess the value
since you don't have the accurate geometric information(which probably isn't
correct enough in current driver):

   $ synclient | grep RightEdge     # get the right edge boundary
   $ synclient RightEdge=??         # reduce the value and see if right edge scrolling can be detected
Comment 65 kernel-bugzilla.3.atliang 2012-06-22 10:23:12 UTC
Created attachment 73991 [details]
v4 patch to filter out bad movement

Correcting typo for the number of fingers in MFMC 1st finger case. v3 patch will generate staggered report(one vs. two fingers) which will confuse the user land.
Comment 66 kernel-bugzilla.3.atliang 2012-06-29 15:13:23 UTC
Created attachment 74431 [details]
v5 patch to filter out bad movement

This updated patch revert to the original last_mt_fgrs workaround to allow
finger movement after two to one finger transition taking place.
Hopefully this addresses bug#43591 as well.
Comment 67 Eddie Dunn 2012-07-05 09:41:37 UTC
I can confirm that the latest patch fixed the issue with two-finger-scroll not working after resuming from suspend. Good job!
Comment 68 Pavel Belyaev 2012-07-17 22:21:53 UTC
Created attachment 75601 [details]
indeferend i/o log

$ dmesg|grep sentel
[    2.474127] psmouse serio2: sentelic: READ REG: 0x00 is 0x00 (rc = -1)

$ synclient 
Couldn't find synaptics properties. No synaptics driver loaded?

$ xinput 
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ ImExPS/2 Generic Explorer Mouse         	id=11	[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)]
    ↳ AT Translated Set 2 keyboard            	id=10	[slave  keyboard (3)]


Not working scroll and any touchpad configure utils.

Help me please :)
Thanks!
Comment 69 kernel-bugzilla.3.atliang 2012-07-18 02:32:07 UTC
(In reply to comment #68)
> Created an attachment (id=75601) [details]
> indeferend i/o log
[...]
> [    2.430719] i8042: [337] 91 -> i8042 (command)
> [    2.430933] i8042: [337] 66 -> i8042 (parameter)
> [    2.434670] i8042: [338] fe <- i8042 (interrupt, 3, 12)
> [    2.435926] i8042: [339] 91 -> i8042 (command)
> [    2.436088] i8042: [339] 88 -> i8042 (parameter)

  Missing the 'fc' response.

> [    2.466948] i8042: [347] 91 -> i8042 (command)
> [    2.467524] i8042: [347] f3 -> i8042 (parameter)
> [    2.470534] i8042: [347] fc <- i8042 (interrupt, 3, 12)

  Should be 'fa' instead.

[    2.470551] i8042: [347] 91 -> i8042 (command)
[    2.470766] i8042: [347] f4 -> i8042 (parameter)
[    2.474091] i8042: [348] fa <- i8042 (interrupt, 3, 12)
[    2.474127] psmouse serio2: sentelic: READ REG: 0x00 is 0x00 (rc = -1)

  It looks to me that EC response is one byte slower. Will there be any
difference if you increase FSP_CMD_TIMEOUT2 from 30 to something larger
(ex: 2500)?
Comment 70 Pavel Belyaev 2012-07-18 03:14:37 UTC
(In reply to comment #69)
> (In reply to comment #68)
> > Created an attachment (id=75601) [details] [details]
> > indeferend i/o log
> [...]
> > [    2.430719] i8042: [337] 91 -> i8042 (command)
> > [    2.430933] i8042: [337] 66 -> i8042 (parameter)
> > [    2.434670] i8042: [338] fe <- i8042 (interrupt, 3, 12)
> > [    2.435926] i8042: [339] 91 -> i8042 (command)
> > [    2.436088] i8042: [339] 88 -> i8042 (parameter)
> 
>   Missing the 'fc' response.
> 
> > [    2.466948] i8042: [347] 91 -> i8042 (command)
> > [    2.467524] i8042: [347] f3 -> i8042 (parameter)
> > [    2.470534] i8042: [347] fc <- i8042 (interrupt, 3, 12)
> 
>   Should be 'fa' instead.
> 
> [    2.470551] i8042: [347] 91 -> i8042 (command)
> [    2.470766] i8042: [347] f4 -> i8042 (parameter)
> [    2.474091] i8042: [348] fa <- i8042 (interrupt, 3, 12)
> [    2.474127] psmouse serio2: sentelic: READ REG: 0x00 is 0x00 (rc = -1)
> 
>   It looks to me that EC response is one byte slower. Will there be any
> difference if you increase FSP_CMD_TIMEOUT2 from 30 to something larger
> (ex: 2500)?

did not help
Comment 71 kernel-bugzilla.3.atliang 2012-07-18 03:22:51 UTC
(In reply to comment #70)
> (In reply to comment #69)
> >   It looks to me that EC response is one byte slower. Will there be any
> > difference if you increase FSP_CMD_TIMEOUT2 from 30 to something larger
> > (ex: 2500)?
> 
> did not help

  Please post i8042.debug dump, thanks.
Comment 72 Pavel Belyaev 2012-07-18 13:54:44 UTC
Created attachment 75651 [details]
dmesg log after timeout 2500

My dmesg after FSP_CMD_TIMEOUT2=2500 in drivers/input/mouse/sentelic.c and recompile
Comment 73 Patrik Kullman 2012-07-18 19:55:55 UTC
How far off is this to hit mainline kernel?

Even if the patch isn't perfect, shouldn't current improvements be eligible for 3.6?
Comment 74 kernel-bugzilla.3.atliang 2012-07-19 00:40:14 UTC
Created attachment 75741 [details]
patch for upstream submission

Patch based on v5 with additional S-O-B and Tested-by tags for Dmitry's review.
Comment 75 Pavel Belyaev 2012-07-19 03:30:02 UTC
This patch has not helped me, too. Have to throw the laptop in the trash :(
Comment 76 kernel-bugzilla.3.atliang 2012-07-19 03:57:35 UTC
(In reply to comment #75)
> This patch has not helped me, too. Have to throw the laptop in the trash :(

[    2.327464] i8042: [308] 91 -> i8042 (command)
[    2.327733] i8042: [309] 66 -> i8042 (parameter)
[    2.330645] i8042: [309] fe <- i8042 (interrupt, 3, 12)
[    2.330652] i8042: [309] 91 -> i8042 (command)
[    2.330876] i8042: [309] 88 -> i8042 (parameter)
[...]
[    4.825925] i8042: [934] 91 -> i8042 (command)
[    4.826090] i8042: [934] f3 -> i8042 (parameter)
[    4.829576] i8042: [934] fc <- i8042 (interrupt, 3, 12)

  According to the above log, driver failed to detect the hardware because command
88 timed out.

  I'm afraid that this patch won't help you as the problem you're running into
seems to be EC related.  There are a few MUX error in your log:

[    1.227636] i8042: [33] 90 -> i8042 (command)
[    1.228579] i8042: [33] f2 -> i8042 (parameter)
[    1.233864] i8042: [35] MUX error, status is 25, data is fc
[    1.233875] i8042: [35] fe <- i8042 (interrupt, 2, 12, timeout)
[    1.233931] i8042: [35] 90 -> i8042 (command)
[    1.235031] i8042: [35] ed -> i8042 (parameter)
[    1.240302] i8042: [36] MUX error, status is 25, data is fc
[    1.240313] i8042: [36] fe <- i8042 (interrupt, 2, 12, timeout)

  Not sure if there are any other i8042 knobs to workaround this problem. Perhaps
Dmitry can shed some light for us?
Comment 77 Dmitry Torokhov 2012-07-19 17:21:47 UTC
(In reply to comment #76)
> 
>   I'm afraid that this patch won't help you as the problem you're running into
> seems to be EC related.  There are a few MUX error in your log:
> 
> [    1.227636] i8042: [33] 90 -> i8042 (command)
> [    1.228579] i8042: [33] f2 -> i8042 (parameter)
> [    1.233864] i8042: [35] MUX error, status is 25, data is fc
> [    1.233875] i8042: [35] fe <- i8042 (interrupt, 2, 12, timeout)
> [    1.233931] i8042: [35] 90 -> i8042 (command)
> [    1.235031] i8042: [35] ed -> i8042 (parameter)
> [    1.240302] i8042: [36] MUX error, status is 25, data is fc
> [    1.240313] i8042: [36] fe <- i8042 (interrupt, 2, 12, timeout)
> 
>   Not sure if there are any other i8042 knobs to workaround this problem.
> Perhaps
> Dmitry can shed some light for us?

There are lots of boxes that have iffy MUX implementation, try booting with i8042.nomux to disable the active multiplexing and stay in legacy mode.
Comment 78 Pavel Belyaev 2012-07-22 05:09:25 UTC
Thank you!!! After add parameter i8024.nomux, my touchpad works.


 $ xinput
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ FSPPS/2 Sentelic FingerSensingPad       	id=11	[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)]
    ↳ AT Translated Set 2 keyboard            	id=10	[slave  keyboard (3)]
Comment 79 Dmitry Torokhov 2012-07-23 17:16:51 UTC
Pavel, could you please open a separate bug and post output of dmidecode for your box?
Comment 80 Pavel Belyaev 2012-07-23 20:14:55 UTC
https://bugzilla.kernel.org/show_bug.cgi?id=45101
Comment 81 elibl 2012-08-30 14:26:21 UTC
Hi, is this still actual? when this will get upstream?

i've got a Medion Akoya P6631 Laptop with Sentelic Touchpad:

$ xinput
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ FSPPS/2 Sentelic FingerSensingPad       	id=13	[slave  pointer  (2)]

i also had this erratic movements and jumps to the upper left corner also scrolling didn't work neither edge nor two-finger...

i rebuilt this kernel:

$ uname -r
3.2.0-29-generic-pae

by:

 $ apt-get source linux-image-3.2.0-29-generic-pae
 $ sudo apt-get build-dep linux-image-3.2.0-29-generic-pae
 $ cd linux-3.2.0
 $ chmod +x debian/scripts/misc/* debian/scripts/*
 $ debian/rules updateconfigs
 $ cd drivers/input/mouse

then i first applied this patch: http://markmail.org/thread/l5jmpiioajfcffyo as for fsp_drv_ver[] = "1.0.0-K" i had...
and afterwards the last patch from this thread

 $ patch < *.patch
 $ cd -
 $ env skipabi=true fakeroot debian/rules binary-generic-pae
 $ cd ..
 $ sudo dpkg -i linux-headers-3.2.0-29-generic-pae_3.2.0-29.46_i386.deb
linux-image-3.2.0-29-generic-pae_3.2.0-29.46_i386.deb
 $ sudo reboot

after this my touchpad doesn't has this erratic movements anymore and all options from touchpad settings work except 'disable when typing' and 'sensitivity' i couldn't figure out rightly...

but edge scrolling was a bit difficult to hit / unresponsive... so i additionally made this changes:

$ synclient | grep Edge
    LeftEdge                = 38
    RightEdge               = 929
    TopEdge                 = 38
    BottomEdge              = 673
    VertEdgeScroll          = 1
    HorizEdgeScroll         = 1
    EdgeMotionMinZ          = 30
    EdgeMotionMaxZ          = 160
    EdgeMotionMinSpeed      = 1
    EdgeMotionMaxSpeed      = 96
    EdgeMotionUseAlways     = 0
    AreaLeftEdge            = 0
    AreaRightEdge           = 0
    AreaTopEdge             = 0
    AreaBottomEdge          = 0
$ synclient RightEdge=900
$ synclient BottomEdge=650

with this mods my touchpad nearly works perfectly :) thanks a lot!

so some minor bugs i have: sometimes it generates a rigth-click or double-click(for marking an area) at scroll beginning and one time it scrolled very very fast but that's all not that problem

so i hope i did everything right especially for kernel (like modules or so or as i'm in need of the additional bumblebee driver for nvidia optimus support) but i think everything should be the same as before just with touchpad support? am i right???

as last question: how do i make this edge modification remaining after reboot?

thanks in advance 

all the best 

elibl
Comment 82 Florian Mickler 2012-10-15 21:27:14 UTC
A patch referencing this bug report has been merged in Linux v3.6-rc7:

commit 30ebb7fa0e3e92145b859ad6e44aa6dc636b4103
Author: Tai-hwa Liang <avatar@sentelic.com>
Date:   Wed Sep 19 11:10:47 2012 -0700

    Input: sentelic - filter out erratic movement when lifting finger
Comment 83 Patrik Kullman 2012-10-23 19:59:28 UTC
Using 3.6 final from kernel.ubuntu.com/~kernel-ppa/mainline/ I still have erratic movement with my Sentelic touchpad.

It either scrolls to top, scrolls the reverse direction when lifting the fingers, continues scrolling same/reverse direction after lifting the fingers, or flickers intently when trying to hold the fingers still in the middle of a scroll.

Is there any kernel change that hasn't been merged yet, any patch that is outside the scope of the kernel, any configuration that needs to be done with synclient or is Ubuntu building their kernels in a way that ignores these fixes?
Comment 84 Eddie Dunn 2012-10-27 14:12:13 UTC
Patrik,

Have you tried running with a kernel you patched yourself? If it works, then the issue is probably because Ubuntu somehow ignored the fixes.
Comment 85 Bartosz Feński 2012-11-04 19:42:52 UTC
Is this fix supposed to work also with Sentelic touchpad in UX31?
I tried 3.6.5 kernel and it still doesn't work. Even with i8024.nomux kernel parameter.

It works however with driver from https://github.com/saaros.
Comment 86 elibl 2012-11-15 08:08:08 UTC
it's a pity that this patch is still not applied to mainline cause it's an essential bugfix (for my touchpad) without the use is very annoying.

so please ubuntu people/ mainline maintainer submit this patch!!!

built now custom kernel 3.5.0 with this patch for ubuntu 12.10

for other people with sentelic touchpad just build your own kernel the way i did 5 posts above it should work for the most the same way

all the best
Comment 87 Florian Mickler 2012-11-16 09:53:44 UTC
(In reply to comment #86)
> it's a pity that this patch is still not applied to mainline cause it's an
> essential bugfix (for my touchpad) without the use is very annoying.

Which patch do you mean?
I just checked and I guess you seem to mean patch https://bugzilla.kernel.org/attachment.cgi?id=75741 ?

Can you verify my guess is indeed correct?

@Dimitry: the patch I mentioned above indeed is not yet in mainline... Oversight?
Comment 88 elibl 2012-11-17 00:35:30 UTC
(In reply to comment #87)
> Can you verify my guess is indeed correct?

completely ;)
Comment 89 Bartosz Feński 2012-11-21 18:54:40 UTC
Could someone in charge make a statement which kernel is going to include this patch?
Comment 90 Bartosz Feński 2012-12-20 11:00:42 UTC
Looks like we've got progress.
With vanilla version 3.7.1 of the kernel touchpad doesn't work but as a bonus it's not possible to patch it with driver from https://github.com/saaros cause there are errors during compilation.

I'm back to 3.6.0 with mentioned patch.

Please could someone summarize the current status of this bugreport?
Comment 91 rhn 2013-01-02 22:15:47 UTC
I have a Syntelic touchpad  that suffers from a similar problem: scrolling only happens in the corners. No edge scrolling, no two-finger scrolling (Fedora 17, stock kernel 3.6.10).
I noticced that you're using the synclient application to control scrolling, however I'm only getting an error:

$ synclient
Couldn't find synaptics properties. No synaptics driver loaded?

Does it mean I have a kernel problem or xorg?
I know this might be the wrong place to ask, but I noticed some people here got synclient to work and I don't know a better place.
Comment 92 Bartosz Feński 2013-03-29 19:12:42 UTC
Does anyone know when these patches will be included in mainline kernel?
Comment 93 Dmitry Torokhov 2013-03-29 21:36:16 UTC
There was the following change applied to mainline:

commit a25461659050b913e114d282bf58823682eb56b6
Author: Christophe TORDEUX <christophe@tordeux.net>
Date:   Mon Dec 24 09:20:40 2012 -0800

    Input: sentelic - only report position of first finger as ST coordinates
    
    Report only the position of the first finger as absolute non-MT coordinates,
    instead of reporting both fingers alternatively. Actual MT events are
    unaffected.
    
    This fixes horizontal and improves vertical scrolling with the touchpad.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Christophe TORDEUX <christophe@tordeux.net>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

It went into 3.8. If 3.8 still exhibits the bad behavior then we have to look again.
Comment 94 Dams 2014-07-07 14:03:16 UTC
For the record it's still pretty annoying on a Fedora 20 w/3.14 kernel.
Comment 95 Johannes Seitz 2014-07-07 14:12:05 UTC
Agreed. This issue is still reproducible on the latest Ubuntu with 3.14 kernel. 
It's not the horizontal scrolling that was fixed with the commit Dmitry mentions that's bugging me. It's really annoying: on my Zenbook I keep scrolling down with two fingers and sometimes it's scrolling the page all the way to the top instead.
Comment 96 Zigma 2014-07-12 13:03:04 UTC
Hello guys!

I use a Clevo W310CZ laptop with a sentelic touchpad,
on Ubuntu 14.04 LTS, and the 3.13.0-30-generic kernel.

Using the touchpad is really a pain!
It works good some time, then the cursor gets completely mad.
I do not think I have the "mouse jumping to upper left corner" already described there. I would rather say that the cursor moves faster and jumps *anywhere* on the screen.


WHAT I DID:

I disabled every 'DoubleFinger'-like occurence with synclient

I also tried to patch the kernel but I think this one (3.13.0-30-generic) already contained the patched part. Below is the original "sentelic.c" as I found it:
***
	if ((packet[0] == 0x48 || packet[0] == 0x49) &&
	    packet[1] == 0 && packet[2] == 0) {
		/*
		 * Ignore coordinate noise when finger leaving the
		 * surface, otherwise cursor may jump to upper-left
		 * corner.
		 */
		packet[3] &= 0xf0;
	}

	abs_x = GET_ABS_X(packet);
	abs_y = GET_ABS_Y(packet);
***
so, the patch "sentelic.patch" described sooner in this thread does nothing.



Question:
what more can I try to fix this problem? 
Does anyone still have this problem with this kernel?
Could using an older kernel (eg 3.2) with ubuntu 12.04 help in any way?

Thank you
Comment 97 exzemat 2014-07-21 05:21:33 UTC
Hello,
I used too a Clevo W310CZ laptop with a sentelic touchpad and ubuntu 14.04.
I'm agree with Zigma description : "cursor jumps *anywhere* on the screen"
Comment 98 Zigma 2014-07-21 17:57:20 UTC
I had to send back my laptop for a refound after a ten-day struggle...
Comment 99 exzemat 2014-07-22 09:00:31 UTC
I had "i8042.nomux=1 i8042.reset=1" to my GRUB_CMDLINE_LINUX_DEFAULT (/etc/default/grub).
erratic jump/selection seems to be less frequently but still present...
Comment 100 exzemat 2014-07-22 13:17:29 UTC
I use too
synclient PalmMinZ=1
synclient PalmMinWidth=1
synclient MaxSpeed=1
to minimize erratic jump/selection...
Comment 101 Mateusz Jończyk 2014-08-01 17:54:25 UTC
Generally with regressions as described here the best tool is bisection. I have seen noone attempt that with this bug.
Comment 102 exzemat 2014-08-18 11:41:16 UTC
I tested ubuntu mainline kernel (linux-headers-3.16.0-031600-generic_3.16.0-031600.201408031935_amd64.deb)
Still erratic jump/selection.

to complet bug's description : I also found that if I restart the computer when the cursor is crazy, the cursor is blocked in the middle of the screen (only the right click works).
I need to reboot several times to have the possibility to move the cursor.

I'm afraid that the problems is also in the hardware or firmware level of the touchpad. Because if I restart on Windows (when the cursor is blocked on Ubuntu), the cursor is also blocked in the middle of the screen on Windows.
However, if I only use Windows (never boot on Ubuntu), I never have a problem with cursor...

Note You need to log in before you can comment on or make changes to this bug.