Bug 1110011 - ASUS X550 Touchpad not working and interferes with mouse
Summary: ASUS X550 Touchpad not working and interferes with mouse
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: kernel
Version: 20
Hardware: i686
OS: Linux
unspecified
unspecified
Target Milestone: ---
Assignee: Kernel Maintainer List
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2014-06-16 20:13 UTC by uwe geercken
Modified: 2015-04-10 18:06 UTC (History)
38 users (show)

Fixed In Version: kernel-3.16.3-300.fc21
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-04-10 18:06:05 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)
lshw output (17.55 KB, text/plain)
2014-06-16 20:13 UTC, uwe geercken
no flags Details
dmesg output (67.61 KB, text/plain)
2014-06-19 18:38 UTC, uwe geercken
no flags Details
dmesg_2.output (73.88 KB, text/plain)
2014-06-21 12:42 UTC, uwe geercken
no flags Details
dyndbg_snapshot (1.59 MB, image/jpeg)
2014-06-23 07:02 UTC, uwe geercken
no flags Details
dmesg_3output (80.89 KB, text/plain)
2014-06-26 18:36 UTC, uwe geercken
no flags Details
DSDT.dsl file (817.00 KB, text/x-dsl)
2014-06-27 17:51 UTC, uwe geercken
no flags Details
dmesg output file (64.82 KB, text/plain)
2014-07-01 19:37 UTC, uwe geercken
no flags Details
dmesg output file (96.26 KB, text/plain)
2014-07-02 20:31 UTC, uwe geercken
no flags Details
dmesg_6 (119.69 KB, text/plain)
2014-07-15 17:55 UTC, uwe geercken
no flags Details
dmesg_7 (71.62 KB, text/plain)
2014-07-15 17:56 UTC, uwe geercken
no flags Details
dmesg of a X550 (R150L in some european regions) (66.80 KB, text/plain)
2014-09-08 08:49 UTC, Elisa
no flags Details
dmesg output after testing 3.16 kernel regarding auto ps2 mouse emu (94.20 KB, text/plain)
2014-09-10 16:54 UTC, Jo Are By
no flags Details
[PATCH 1/3] i8042: Also store the aux firmware id in multi-plexed aux ports (964 bytes, patch)
2014-09-11 08:54 UTC, Hans de Goede
no flags Details | Diff
[PATCH 2/3] psmouse: Add psmouse_matches_pnp_id helper function (3.47 KB, patch)
2014-09-11 08:55 UTC, Hans de Goede
no flags Details | Diff
[PATCH 3/3] psmouse: Add support for detecting FocalTech PS/2 touchpads (4.96 KB, patch)
2014-09-11 08:55 UTC, Hans de Goede
no flags Details | Diff
dmesg after reboot running kernel 3.15.10-201.fc20.x86_64 (84.42 KB, text/plain)
2014-09-12 02:09 UTC, jdcaddie
no flags Details
dmesg after reboot running kernel 3.16.2-200.fc20.x86_64 (88.06 KB, text/plain)
2014-09-12 02:35 UTC, jdcaddie
no flags Details
acpi-devices.log of a focaltech touchpad (7.65 KB, text/plain)
2014-09-23 17:43 UTC, Elisa
no flags Details
lspci.log of a focaltech touchpad (1.90 KB, text/plain)
2014-09-23 17:44 UTC, Elisa
no flags Details
dmesg after booting with 3.17.0-rc6+ with dtor master merged (59.86 KB, text/plain)
2014-09-23 20:08 UTC, despernal
no flags Details
lspci on 3.17.0-rc6+ (1.52 KB, text/plain)
2014-09-23 20:09 UTC, despernal
no flags Details
acpi-devices 3.17.0-rc6+ (7.82 KB, text/plain)
2014-09-23 20:10 UTC, despernal
no flags Details
acpi-devices.log requested by Hans (6.71 KB, text/plain)
2014-09-23 20:46 UTC, Nikola Nikolov
no flags Details
lspci.log requested by Hans (1.73 KB, text/plain)
2014-09-23 20:46 UTC, Nikola Nikolov
no flags Details
dmesg output after adding the dyndbg="file drivers/input/mouse/* +p" boot flag (63.07 KB, text/plain)
2014-09-24 09:32 UTC, Nikola Nikolov
no flags Details
dmesg output with "dyndbg=file drivers/input/serio/* +p" (63.08 KB, text/plain)
2014-09-24 11:40 UTC, Nikola Nikolov
no flags Details
dmesg without any i8042 flags and with "dyndbg=file drivers/input/serio/* +p" (64.32 KB, text/plain)
2014-10-06 22:15 UTC, Nikola Nikolov
no flags Details
dmesg with debug enabled for i8042 for suspend/resume (80.33 KB, text/plain)
2014-11-03 10:12 UTC, auguste.olivry
no flags Details
dmesg with i8042 debug enabled after suspend (103.59 KB, text/plain)
2014-11-11 11:54 UTC, auguste.olivry
no flags Details
Patch against 3.18.6-200 Fedora kernel (14.18 KB, patch)
2015-02-26 20:02 UTC, Michael J. Kidd
no flags Details | Diff
Patch against 3.18.6-200 kernel.spec file (793 bytes, patch)
2015-02-26 20:27 UTC, Michael J. Kidd
no flags Details | Diff
dmesg with X550ZE (189.67 KB, text/plain)
2015-03-29 00:29 UTC, Luya Tshimbalanga
no flags Details
dmesg with X550ZE detecting Elantech input (114.61 KB, text/plain)
2015-03-29 00:45 UTC, Luya Tshimbalanga
no flags Details
dmesg X550ZE with psmouse.proto=bare (93.58 KB, text/plain)
2015-03-29 00:47 UTC, Luya Tshimbalanga
no flags Details
X550ZE hardware info (26.47 KB, text/plain)
2015-03-29 18:03 UTC, Luya Tshimbalanga
no flags Details

Description uwe geercken 2014-06-16 20:13:44 UTC
Created attachment 909256 [details]
lshw output

Description of problem:

New install of Fedora 20 on ASUS X550 laptop. The touchpad does not work; neither swiping nor clicking. Sometimes the pointer moves a little bit when swiping.

The touchpad obviously interferes with an USB mouse. The mouse hangs for some seconds and is unusable. Then after some time it is usable again but shotly after it is not usable again.

During install from Fedora Live the touchpad was showed the same symtoms. Other distributions such as Debian had the same problem.

How reproducible:
Install Fedora 20 on ASUS X550LA Laptop
Touchpad does not work

Steps to Reproduce:
1.
2.
3.

Actual results:
Touchpad is completely unusable and interferes with USB mouse

Expected results:
Toucpad should allow cursor movement and clicking and possibly gestures.

Additional info:
dmesg:
[    1.067570] sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[    1.446307] usb 2-1: Manufacturer: Logitech
[    1.448429] input: Logitech USB Optical Mouse as /devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1:1.0/0003:046D:C05A.0001/input/input12
[    1.448613] hid-generic 0003:046D:C05A.0001: input,hidraw0: USB HID v1.11 Mouse [Logitech USB Optical Mouse] on usb-0000:00:14.0-1/input0
[    3.463254] input: PS/2 Logitech Wheel Mouse as /devices/platform/i8042/serio4/input/input11
...
...
...
[  639.012316] psmouse serio4: Failed to enable mouse on isa0060/serio4
[  642.352675] psmouse serio4: Failed to enable mouse on isa0060/serio4
[  645.707438] psmouse serio4: Failed to enable mouse on isa0060/serio4
[  649.017101] psmouse serio4: Failed to enable mouse on isa0060/serio4
[  652.316302] psmouse serio4: Failed to enable mouse on isa0060/serio4
[  655.628493] psmouse serio4: Failed to enable mouse on isa0060/serio4
[  658.956132] psmouse serio4: Failed to enable mouse on isa0060/serio4
[  662.328087] psmouse serio4: Failed to enable mouse on isa0060/serio4
[  665.662987] psmouse serio4: Failed to enable mouse on isa0060/serio4
[  668.981500] psmouse serio4: Failed to enable mouse on isa0060/serio4
[  672.297323] psmouse serio4: Failed to enable mouse on isa0060/serio4
[  675.602802] psmouse serio4: Failed to enable mouse on isa0060/serio4
[  678.942739] psmouse serio4: Failed to enable mouse on isa0060/serio4
[  682.257076] psmouse serio4: Failed to enable mouse on isa0060/serio4
[  685.557429] psmouse serio4: Failed to enable mouse on isa0060/serio4

xinput:
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Logitech USB Optical Mouse              	id=9	[slave  pointer  (2)]
⎜   ↳ PS/2 Logitech Wheel Mouse               	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)]
    ↳ Sleep Button                            	id=8	[slave  keyboard (3)]
    ↳ USB2.0 HD UVC WebCam                    	id=10	[slave  keyboard (3)]
    ↳ Asus WMI hotkeys                        	id=11	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=12	[slave  keyboard (3)]

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

hwinfo:
see attached

Comment 1 Peter Hutterer 2014-06-17 00:12:02 UTC
Hans, can you look at this please? Thanks

Comment 2 David Zeuthen 2014-06-17 00:37:01 UTC
(No idea what adds zeuthen to these bugs but if someone can fix it to not do that, it would be appreciated. Thanks!)

Comment 3 Hans de Goede 2014-06-17 06:41:20 UTC
Hi Uwe,

Can you please try booting with i8042.nomux=1 added to the kernel commandline and see if that helps ?

If that does not help can you try booting with i8042.reset=1 instead ?

And if that does not help can you try booting with both on the kernel commandline ?

Thanks,

Hans

Comment 4 Hans de Goede 2014-06-17 07:20:09 UTC
Note I've just read some forum posts stating that in some cases it is necessary to powercycle the machine to get the i8042 controller unstuck if booted without the right commandline options. So please power down the laptop before and between testing the commandline options.

Comment 5 uwe geercken 2014-06-17 14:01:18 UTC
Thanks - I will completely shutdown the laptop.

Do I add this to the grub config?

uwe

Comment 6 Hans de Goede 2014-06-17 14:12:15 UTC
(In reply to uwe geercken from comment #5)
> Thanks - I will completely shutdown the laptop.
> 
> Do I add this to the grub config?

You can edit the boot commands in grub, then add a space + the option you want to try it to the end of the long line which starts with "linux ", and press ctrl+x or F10 to boot with the modified kernel cmdline.

If you find something which works you can add it to /etc/grub2.cfg for now (once for each kernel listed there), but that is a temporary solution. If you find an option that works I'll give you a kernel-build with a patch which makes the kernel automatically do the right thing to test, and once you've successfully tested that kernel I'll send that patch upstream for integration into the official kernel, so that if in the future other people try to use Linux on their ASUS X550 things will just work.

Comment 7 uwe geercken 2014-06-17 18:36:14 UTC
you have to help me with this one.

I have edited /etc/grub2.cfg but when I reboot and press "e" to edit the boot parameters, I do not see my changes. do I have to edit a different file?

anyway, I have edited the command line (mine starts with "linuxefi") and did the following
1. added i8042.nomux=1 - result: no change
2. added i8042.reset=1 - result: no change
3. added i8042.nomux=1 and i8042.reset=1 - result: no change
4. turn the two around: result: no change

anything else I can do?

thanks for your efforts.

uwe

Comment 8 uwe geercken 2014-06-17 18:38:20 UTC
one more thing: 

do I have to maybe remove the synaptics driver? or doesn't it matter?

I buy you a beer if you get this working.......

Comment 9 Hans de Goede 2014-06-17 19:14:56 UTC
(In reply to uwe geercken from comment #7)
> you have to help me with this one.
> 
> I have edited /etc/grub2.cfg but when I reboot and press "e" to edit the
> boot parameters, I do not see my changes. do I have to edit a different file?
> 
> anyway, I have edited the command line (mine starts with "linuxefi")

Ah you've EFI, then there should be a grub config file under /boot/efi/EFI I think.

> and did
> the following
> 1. added i8042.nomux=1 - result: no change
> 2. added i8042.reset=1 - result: no change
> 3. added i8042.nomux=1 and i8042.reset=1 - result: no change
> 4. turn the two around: result: no change
> 
> anything else I can do?

Can you try again, and when you've booted with the nomux parameter, do:

cat /proc/cmdline

And ensure that the option is there.

If it is there please also do:

ls /sys/bus/serio/devices/

You should only have serio0 and serio1 there now, so at a minimum the serio4 errors you were getting should be gone now.

Regards,

Hans

Comment 10 uwe geercken 2014-06-18 18:18:09 UTC
output of cat /proc/cmdline:

BOOT_IMAGE=/vmlinuz-3.14.7-200.fc20.x86_64 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora/root rhgb quiet LANG=de_CH.UTF-8 i8042.nomux=1

output of ls /sys/bus/serio/devices/:

serio0  serio1

I am trying the other options now.

Comment 11 uwe geercken 2014-06-18 18:35:05 UTC
I tried it with i8042.reset=1 but it did not help.

now I tried it with both i8042.nomux=1 and i8042.reset=1 and still it does not work.

from dmesg I now get the following:
[  152.580207] psmouse serio1: Failed to enable mouse on isa0060/serio1
[  155.893947] psmouse serio1: Failed to enable mouse on isa0060/serio1
[  159.189812] psmouse serio1: Failed to enable mouse on isa0060/serio1
[  162.491988] psmouse serio1: Failed to enable mouse on isa0060/serio1
[  165.804113] psmouse serio1: Failed to enable mouse on isa0060/serio1
[  169.114374] psmouse serio1: Failed to enable mouse on isa0060/serio1
[  172.432552] psmouse serio1: Failed to enable mouse on isa0060/serio1
[  175.764979] psmouse serio1: Failed to enable mouse on isa0060/serio1

so it switched the error message to serio1...

Comment 12 Hans de Goede 2014-06-19 13:35:05 UTC
Hi,

Ok I've done some digging, 2 more things to try:

1) Various touchpad drivers have gotten support for new model touchpads in 3.15, so please download
kernel-core-3.15.0-1.fc21.x86_64.rpm and kernel-modules-3.15.0-1.fc21.x86_64.rpm from here:

http://koji.fedoraproject.org/koji/buildinfo?buildID=537163

And then install them from the command line with:

rpm -ivh kernel-core-3.15.0-1.fc21.x86_64.rpm kernel-modules-3.15.0-1.fc21.x86_64.rpm

Reboot into the new kernel and see if that magically fixes things.


2) If 1). does not magically fixes things, then please boot with the following added to your kernel commandline:

dyndbg="file drivers/input/mouse/* +p"

And then after boot open a terminal and do:

dmesg > dmesg.txt

And attached the generated dmesg.txt file here.

Thanks,

Hans

Comment 13 uwe geercken 2014-06-19 18:19:12 UTC
when I tried to install the kernel and modules I got following error:

rpm -ivh kernel-core-3.15.0-1.fc21.x86_64.rpm kernel-modules-3.15.0-1.fc21.x86_64.rpm 
Vorbereiten...                        ################################# [100%]
Aktualisierung/ Installation...

   1:kernel-core-3.15.0-1.fc21        ################################# [ 50%]
   2:kernel-modules-3.15.0-1.fc21     ################################# [100%]
Error! echo
Your kernel headers for kernel 3.15.0-1.fc21.x86_64 cannot be found at
/lib/modules/3.15.0-1.fc21.x86_64/build or /lib/modules/3.15.0-1.fc21.x86_64/source.
[root@asusx550 Downloads]#

Comment 14 uwe geercken 2014-06-19 18:30:14 UTC
ok. I downloaded the header file also, removed 3.14 headers and rebootet, but no luck.

by the way: do I have to have the synaptics driver installed or not?

h

Comment 15 uwe geercken 2014-06-19 18:37:22 UTC
no luck. also the dyndbg command did not help.

cat /proc/cmdline 
BOOT_IMAGE=/vmlinuz-3.15.0-1.fc21.x86_64 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora/root rhgb quiet LANG=de_CH.UTF-8 "dyndbg=file\x20drivers/input/mouse/=*\x20+p"

attached the dmesg output.

thanks for your help.

Comment 16 uwe geercken 2014-06-19 18:38:01 UTC
Created attachment 910487 [details]
dmesg output

Comment 17 Hans de Goede 2014-06-20 10:18:10 UTC
(In reply to uwe geercken from comment #15)
> no luck. also the dyndbg command did not help.
> 
> cat /proc/cmdline 
> BOOT_IMAGE=/vmlinuz-3.15.0-1.fc21.x86_64 root=/dev/mapper/fedora-root ro
> rd.lvm.lv=fedora/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora/root
> rhgb quiet LANG=de_CH.UTF-8 "dyndbg=file\x20drivers/input/mouse/=*\x20+p"

There is not supposed to be a '=' between the / and *  in dyndbg="file drivers/input/mouse/* +p"

Can you please try booting the 3.15 kernel again with the correct dyndbg argument and then collect dmesg output again ?

Then we'll see from there.

Comment 18 uwe geercken 2014-06-21 12:41:19 UTC
hello,

here is the output of cmdline:
cat /proc/cmdline 
BOOT_IMAGE=/vmlinuz-3.15.0-1.fc21.x86_64 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora/root rhgb quiet LANG=de_CH.UTF-8 i8042.reset i8042.nomux "dyndbg=file\x20/drivers/input/mouse/*\x20+p"

actually the boot.cfg file does not contain the \x20 sequences.

I attach the dmesg output.

thanks again for all your help.

uwe

Comment 19 uwe geercken 2014-06-21 12:42:37 UTC
Created attachment 911004 [details]
dmesg_2.output

Comment 20 uwe geercken 2014-06-23 07:01:29 UTC
as indicated, I have added the line to the /boot/efi/EFI/fedora config file. but I believe the quotes are not correct. an error is shown - please see the attachment.

what am I doing wrong? should I use single quotes maybe?

uwe

Comment 21 uwe geercken 2014-06-23 07:02:38 UTC
Created attachment 911302 [details]
dyndbg_snapshot

Comment 22 Hans de Goede 2014-06-23 07:06:38 UTC
Hi,

(In reply to uwe geercken from comment #20)
> as indicated, I have added the line to the /boot/efi/EFI/fedora config file.
> but I believe the quotes are not correct.

I've come to the same conclusion when reading your previous comments this weekend, in the beginning I thought the \x20 was being inserted by the kernel before printing, but testing on my own laptop showed that that was not the case. I believe that this is something specific to the efi version of grub.

> what am I doing wrong? should I use single quotes maybe?

Maybe, I did not reply this weekend, as today I've access to a laptop booting through efi myself. So let me try and get back to you.

Regards,

Hans

Comment 23 Hans de Goede 2014-06-23 09:27:31 UTC
Hi Again,

So using single quotes does not help, it turns out this is a grub2-efi bug, see bug 923374. So I've just spend some time fixing that bug :)

I've put a copy of a fixed grub2 scratch build I've done here:

http://people.fedoraproject.org/~jwrdegoede/grub2-rhbz923374/

To test this do the following:

1) Run "rpm -qa | grep grub2" to see which grub2 packages you've installed
2) Download the relevant packages
3) run "rpm -Uvh grub2*.rpm" to install the new version
4) reboot

Note:
1) Upgrading your bootloader always brings a risk of ending up with a non bootable machine with it !
2) This is a build for f21, but you can install it on f20 without problems
3) No need to run grub2-install since this only affects machines booting through EFI, where grub2-install is not necessary

You now should be able to use kernel cmdline arguments with spaces in there without issues, so please try using the dyndbg argument and collecting dmesg again.

Thanks,

Hans


p.s.

I've one other thing for you to try, which should hopefully give you a working touchpad in ps/2 mouse emulation mode (so no 2 finger scrolling, etc.), and stop it from interfering with an external mouse. 

Sounds good? Try booting with "psmouse.proto=bare" on the kernel cmdline. Note please also do try the grub update + dyndbg + dmesg collection, as ultimately we want the touchpad to work in its native mode. And sorry for not thinking about this sooner, I'm still a bit new to ps/2 touchpad problem debugging.

Comment 24 Jiri Slaby 2014-06-24 17:45:19 UTC
(In reply to Hans de Goede from comment #23)
> I've one other thing for you to try, which should hopefully give you a
> working touchpad in ps/2 mouse emulation mode (so no 2 finger scrolling,
> etc.), and stop it from interfering with an external mouse. 
> 
> Sounds good? Try booting with "psmouse.proto=bare" on the kernel cmdline.
> Note please also do try the grub update + dyndbg + dmesg collection, as
> ultimately we want the touchpad to work in its native mode. And sorry for
> not thinking about this sooner, I'm still a bit new to ps/2 touchpad problem
> debugging.

I am afraid this is a lower layer problem, i.e. at 8042. The above did not help me.

Originally, I created an entry for this laptop at:
https://bugzilla.kernel.org/show_bug.cgi?id=77391

With 8042.debug we can see that there are MUX errors. i8042.nomux=1 helps to get rid of them indeed. But it still does not work.

As a workaround, I use a USB mouse and i8042.noaux=1 (i.e. disable touchpad auxiliary port).

Comment 25 Hans de Goede 2014-06-24 19:54:35 UTC
Hi,

(In reply to Jiri Slaby from comment #24)
> (In reply to Hans de Goede from comment #23)
> > I've one other thing for you to try, which should hopefully give you a
> > working touchpad in ps/2 mouse emulation mode (so no 2 finger scrolling,
> > etc.), and stop it from interfering with an external mouse. 
> > 
> > Sounds good? Try booting with "psmouse.proto=bare" on the kernel cmdline.
> > Note please also do try the grub update + dyndbg + dmesg collection, as
> > ultimately we want the touchpad to work in its native mode. And sorry for
> > not thinking about this sooner, I'm still a bit new to ps/2 touchpad problem
> > debugging.
> 
> I am afraid this is a lower layer problem, i.e. at 8042. The above did not
> help me.
> 
> Originally, I created an entry for this laptop at:
> https://bugzilla.kernel.org/show_bug.cgi?id=77391
> 
> With 8042.debug we can see that there are MUX errors. i8042.nomux=1 helps to
> get rid of them indeed. But it still does not work.
> 
> As a workaround, I use a USB mouse and i8042.noaux=1 (i.e. disable touchpad
> auxiliary port).

Weird, I've put the same hint in a related ubuntu bug, and there it did help the user,
have you tried combining i8042.nomux with psmouse.proto=bare ?

Comment 26 uwe geercken 2014-06-24 21:23:46 UTC
I tried i8042.nomux and psmouse.proto=bare and it works. I have to do some more tests now, but it looks like this is the solution.

here is the output from dmesg:

dmesg | grep psmouse
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.14.8-200.fc20.x86_64 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora/root rhgb quiet LANG=de_CH.UTF-8 i8042.nomux psmouse.proto=bare

Note: I received a new kernel today. previously I had installed the 3.15 modules but now I am back to 3.14.8. but I believe this has no influence on the result.

Comment 27 Hans de Goede 2014-06-24 21:57:26 UTC
(In reply to uwe geercken from comment #26)
> I tried i8042.nomux and psmouse.proto=bare and it works. I have to do some
> more tests now, but it looks like this is the solution.

Good to hear that this helps, but it is not the real solution, we really want to be able to use the touchpad in its native mode and not in ps2 mouse emulation mode.

Can you please still try to install the grub update from comment 23, and then boot with the dyndbg option and without the psmouse.proto=bare option, and then collect dmesg ?

Thanks,

Hans

Comment 28 uwe geercken 2014-06-26 10:00:00 UTC
ok no problem. anyway, the touchpad is not recognized in gnome3 and thus I can not change e.g. the sensitivity. also scrolling using the touchpad does not work.

I have downloaded the file in the x86_64 folder - I hope those are the right ones.

I will try to test this evening.

I thank YOU!

uwe

Comment 29 uwe geercken 2014-06-26 18:35:11 UTC
ok. I installed the grub files and shutdown and restartet the computer, booting with the dyndbg line:

cat /proc/cmdline 
BOOT_IMAGE=/vmlinuz-3.14.8-200.fc20.x86_64 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora/root rhgb quiet LANG=de_CH.UTF-8 "dyndbg=file drivers/input/mouse/* +p"

attached the output of dmesg.

thanks.

uwe

Comment 30 uwe geercken 2014-06-26 18:36:05 UTC
Created attachment 912515 [details]
dmesg_3output

Comment 31 Benjamin Tissoires 2014-06-27 15:03:40 UTC
uwe, Jiri,

Hans pointed me this bug and requested me to check with you if your touchpad can be used through i2c-hid as the Windows driver would suggest.

Can I ask one of you to attach the DSDT:

$ cd /tmp
# cp /sys/firmware/acpi/tables/DSDT .
# iasl -d ./DSDT

and attach the resulting DSDT.dsl

Thanks,
Benjamin

Comment 32 uwe geercken 2014-06-27 17:51:37 UTC
Created attachment 912895 [details]
DSDT.dsl file

Comment 33 Benjamin Tissoires 2014-06-27 20:47:42 UTC
Thanks for the table. Well, I must say I have been a little bit surprised to see that there are 12 i2c-hid devices declared in the file. And it looks like 11 of them are touchpad or touchscreens :)

The i2c controller should be drived by i2c_designware, but it does not seem to appear in the dmesg. I guess there might be some ACPI command which disable all of this.

I'll reach some ACPI experts and try to figure out what is going on there.

Comment 34 Hans de Goede 2014-06-28 08:48:50 UTC
Hi Uwe,

First of all thanks for the dmesg with the dyn_dbg option. It did work this time, unfortunately it did not really help to identify your touchpad. So I went to look at the pnp ids instead, as listed in this line of dmesg:

[    0.224227] pnp 00:09: Plug and Play ACPI device, IDs FLT0101 SYN0a00 SYN0002 PNP0f03 PNP0f13 PNP0f12 (active)

The id telling us what sort of device you've is the FLT0101 pnp-id. After downloading Asus' latest windows touchpad drivers, and looking at the .inf files shipped with those. I've managed to finally identify your touchpad manufacturer. What I've learned is that there is a new touchpad manufacturer on the market now called FocalTech, and the Asus X450 and X550 seem to be the first laptops with a FocalTech touchpad. This is pad news as this means we've no native driver for the touchpad and we'll have to make do with the mouse emulation mode for now.

The windows drivers .inf files seem to indicate that your touchpad may also have an i2c interface (touchpads being interfaced through both ps/2 and i2c are becoming more standard now a days), and that the i2c interface uses the standard i2c-hid protocol. This is where Benjamin comes in, as he is the expert on i2c-hid.

So moving forward with this, I've prepared a kernel which contains 2 patch-sets relevant for your laptop:

1) It contains a patch-set to the ps2 code to identify your touchpad based on the pnp-id and to stop the ps2 probing for other brand touchpads which was confusing your touchpad. So with this kernel you should be able to have things work (in mouse emulation mode) without specifying psmouse.proto=bare on the kernel commandline.

2) As said with some luck we may be able to use your touchpad in native mode over i2c. So I've also added a patch to enable some extra i2c controllers found on haswell itd devices.

Can you please download kernel-3...rpm for your arch from this kernel scratch build:
https://koji.fedoraproject.org/koji/taskinfo?taskID=7086051

(note still building atm, should be done in about 30 minutes)

And the install it with "sudo rpm -ivh kernel...rpm", and reboot into it without specifying any special kernel commandline parameters, and then:

1) Check that the touchpad works in mouse emulation mode

2) Do the following:
  sudo yum install i2c-tools
  sudo modprobe i2c-dev
  sudo i2cdetect -l

  And paste the output of the i2cdetect command here ?

If the outcome of 1). is successful then I'll send the patches for this upstream, so that other x450 / x550 users will have things just work ootb (in mouse emulation mode).

Benjamin will get back to you on the outcome of the 2nd test.

Thanks & Regards,

Hans

Comment 35 uwe geercken 2014-06-28 15:08:22 UTC
hello Hans,

number 1 did not work. I installed the kernel from https://koji.fedoraproject.org/koji/taskinfo?taskID=7086053 and only the kernel, but not the other files. or did you mean to install all rpm's?

the output of dmesg is again what it was before:

psmouse serio4: Failed to enable mouse on isa0060/serio4

cat /proc/cmdline 
BOOT_IMAGE=/vmlinuz-3.15.1-3.fc20.x86_64 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora/root rhgb quiet LANG=de_CH.UTF-8


I went ahead anyway and did 2). but it did not work either - the ouput was:

yum install ic2-tools
Geladene Plugins: langpacks, refresh-packagekit
Kein Paket ic2-tools verfügbar.
Fehler: Nichts zu tun

(no package available). do I need to use a different repository? also yum search did not reveal anything.

regards,

uwe

Comment 36 Hans de Goede 2014-06-29 12:19:41 UTC
HI,

(In reply to uwe geercken from comment #35)
> hello Hans,
> 
> number 1 did not work. I installed the kernel from
> https://koji.fedoraproject.org/koji/taskinfo?taskID=7086053 and only the
> kernel, but not the other files. or did you mean to install all rpm's?
> 
> the output of dmesg is again what it was before:
> 
> psmouse serio4: Failed to enable mouse on isa0060/serio4
> 
> cat /proc/cmdline 
> BOOT_IMAGE=/vmlinuz-3.15.1-3.fc20.x86_64 root=/dev/mapper/fedora-root ro
> rd.lvm.lv=fedora/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora/root
> rhgb quiet LANG=de_CH.UTF-8

Bummer, can you boot with this kernel the dyndbg argument and collect dmesg again ?

> I went ahead anyway and did 2). but it did not work either - the ouput was:
> 
> yum install ic2-tools
> Geladene Plugins: langpacks, refresh-packagekit
> Kein Paket ic2-tools verfügbar.
> Fehler: Nichts zu tun
> 
> (no package available). do I need to use a different repository? also yum
> search did not reveal anything.

You made a typo there, it is i2c-tools not ic2-tools :)

Thanks,

Hans

Comment 37 uwe geercken 2014-07-01 19:36:45 UTC
ok. I bootet and added the dyndbg line:

cat /proc/cmdline 
BOOT_IMAGE=/vmlinuz-3.15.1-3.fc20.x86_64 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora/root rhgb quiet LANG=de_CH.UTF-8 i8042.nomux psmouse.proto=bare "dyndbg=file drivers/input/mouse/* +p"

attached find the dmesg output.

and then I installed the i2c-tools and this is the output:

modprobe i2c-dev
[root@asusx550 uwe]# i2cdetect -l
i2c-0	i2c       	i915 gmbus ssc                  	I2C adapter
i2c-1	i2c       	i915 gmbus vga                  	I2C adapter
i2c-2	i2c       	i915 gmbus panel                	I2C adapter
i2c-3	i2c       	i915 gmbus dpc                  	I2C adapter
i2c-4	i2c       	i915 gmbus dpb                  	I2C adapter
i2c-5	i2c       	i915 gmbus dpd                  	I2C adapter
i2c-6	i2c       	DPDDC-A                         	I2C adapter
i2c-7	i2c       	DPDDC-B                         	I2C adapter

hope this helps.

thanks.

uwe

Comment 38 uwe geercken 2014-07-01 19:37:40 UTC
Created attachment 913906 [details]
dmesg output file

Comment 39 Hans de Goede 2014-07-01 20:01:09 UTC
(In reply to uwe geercken from comment #37)
> ok. I bootet and added the dyndbg line:
> 
> cat /proc/cmdline 
> BOOT_IMAGE=/vmlinuz-3.15.1-3.fc20.x86_64 root=/dev/mapper/fedora-root ro
> rd.lvm.lv=fedora/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora/root
> rhgb quiet LANG=de_CH.UTF-8 i8042.nomux psmouse.proto=bare "dyndbg=file
> drivers/input/mouse/* +p"
> 
> attached find the dmesg output.

Thanks, but I'm afraid there has been some miscommunication, I need you to boot the 3.15.1-3 kernel with dyndbg and without the psmouse.proto=bare. Also when you said that kernel did not work before, what did you mean with "did not work" ?

Regards,

Hans

Comment 40 uwe geercken 2014-07-01 20:50:48 UTC
ok. I will boot again with dnybdg and without the other stuff. will send you the results tomorrow.

"did not work" meant that booting the kernel without any additional parameters resulted in that the touchpad was unusable again.

regards,

uwe

Comment 41 uwe geercken 2014-07-02 20:30:48 UTC
I bootet with the dyndbg line:

cat /proc/cmdline 
BOOT_IMAGE=/vmlinuz-3.15.1-3.fc20.x86_64 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora/root rhgb quiet LANG=de_CH.UTF-8 "dyndbg=file drivers/input/mouse/* +p"

attached again the dmesg output.

regards,

uwe

Comment 42 uwe geercken 2014-07-02 20:31:27 UTC
Created attachment 914298 [details]
dmesg output file

Comment 43 Hans de Goede 2014-07-06 14:26:59 UTC
Hi,

(In reply to uwe geercken from comment #42)
> Created attachment 914298 [details]
> dmesg output file

Once more thanks for all your testing and patience in resolving this. I think I know what is going on, can you try booting the 3.15.1-3 test kernel with just i8042.nomux=1 added on the commandline ?

I expect that will make it work the same as it does with psmouse.proto=bare, if that is the case I need a way to get to the pnp-ids when the muxing code is active.

Thanks,

Hans

Comment 44 uwe geercken 2014-07-06 16:10:10 UTC
Hans,

no luck. When booting with i8042.nomux=1, the toupad again does not work at all. the cursor does not move a millimeter...

cat /proc/cmdline 
BOOT_IMAGE=/vmlinuz-3.15.1-3.fc20.x86_64 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora/root rhgb quiet LANG=de_CH.UTF-8 i8042.nomux=1

the dmesg output is as it was in the past:
...
...
...
422.117522] psmouse serio1: Failed to enable mouse on isa0060/serio1
[  422.709892] psmouse serio1: Failed to enable mouse on isa0060/serio1
[  423.306760] psmouse serio1: Failed to enable mouse on isa0060/serio1
[  423.896705] psmouse serio1: Failed to enable mouse on isa0060/serio1
[  424.482452] psmouse serio1: Failed to enable mouse on isa0060/serio1
[  425.068341] psmouse serio1: Failed to enable mouse on isa0060/serio1
[  425.656178] psmouse serio1: Failed to enable mouse on isa0060/serio1
[  426.242376] psmouse serio1: Failed to enable mouse on isa0060/serio1

greetings,

uwe

Comment 45 uwe geercken 2014-07-13 13:24:19 UTC
Hans,

should I update the laptop, as new kernels are out and updates to other software as well?

or should I stay with the kernel you provided?

uwe

Comment 46 Hans de Goede 2014-07-14 07:10:43 UTC
Hi,

(In reply to uwe geercken from comment #45)
> Hans,
> 
> should I update the laptop, as new kernels are out and updates to other
> software as well?

Feel free to update, but don't expect it to fix any touchpad problems.

> or should I stay with the kernel you provided?

Any kernel should work (somewhat) as long as you use psmouse.proto=bare

The latest test kernel I gave you tries to automatically do "psmouse.proto=bare" when it sees a touchpad with a pnp-id of FLT0101 but for some reason that is not working :|  Other then that it is just a regular Fedora kernel.

I've started a new scratch build with the same patches + some extra debugging to try and figure out why it is not working, can you please download and install this kernel:

http://koji.fedoraproject.org/koji/taskinfo?taskID=7135712

(note still building atm)

And then boot twice once with and once without i8042.nomux=1 (and with no other special options in either case), and collect dmesg from both boots and attach it here ?

Thanks for your patience with this, hopefully the debug info will allow me to get my patches to work, so that future X450 / X550 issues won't need to find out output needing psmouse.proto=bare, as it will be done automatically.

Regards,

Hans

Comment 47 uwe geercken 2014-07-15 17:54:53 UTC
Hello Hans,

I installed the kernel and did as you said.

dmesg_6.txt file was created after booting with the i8042.nomux=1 and

dmesg_7.txt file was created after booting without.

none of the two boot sequences had any additional arguments.

in none of the two cases the touchpad worked.

greetings,

uwe

Comment 48 uwe geercken 2014-07-15 17:55:45 UTC
Created attachment 918211 [details]
dmesg_6

Comment 49 uwe geercken 2014-07-15 17:56:31 UTC
Created attachment 918212 [details]
dmesg_7

Comment 50 Hans de Goede 2014-07-15 21:32:04 UTC
Thanks, quite useful info in both dmesg-s. I'll prepare a patch which should really really make things work without any commandline options as time permits.

Comment 51 uwe geercken 2014-07-22 10:20:36 UTC
thanks a lot. will I be notified when the patch is available?

uwe

Comment 52 Hans de Goede 2014-07-22 11:21:24 UTC
(In reply to uwe geercken from comment #51)
> thanks a lot. will I be notified when the patch is available?

Yes, as I will need you to test it :)  I'm afraid I've had a bit of a busy week hopefully I will get around to this at the end of this week / beginning of the next week.

Comment 53 Benjamin Tissoires 2014-07-24 17:29:59 UTC
Better late than never, I received few days ago the answer from the ACPI expert I contacted. He told me that you should have two i2c devices appearing in:

  /sys/bus/platform/devices/INT33C2:00
  /sys/bus/platform/devices/INT33C3:00

Then, if you manually load i2c-designware-platform.ko (modprobe i2c-designware-platform), /proc/interrupts should show those two devices as well.

Once they appear in /proc/interrupts, the touchpad should be enumerated by ACPI, and maybe it will be bound to i2c-hid.

Another interesting output that we may need is the output of "i2cdetect -l" once i2c-dev and i2c-designware-platform are modprobed (your previous output did not showed anything related to the touchpad).

Uwe, can you provide those info? It's very prospective, but it will help us understand what is happening here.

Comment 54 uwe geercken 2014-07-25 22:07:26 UTC
Benjamin,

there are no such devices in /sys/bus/platform/devices

this is what I have:
[root@asusx550 devices]# ll
insgesamt 0
lrwxrwxrwx. 1 root root 0 22. Jul 14:56 alarmtimer -> ../../../devices/platform/alarmtimer
lrwxrwxrwx. 1 root root 0 25. Jul 23:54 asus-nb-wmi -> ../../../devices/platform/asus-nb-wmi
lrwxrwxrwx. 1 root root 0 25. Jul 23:54 coretemp.0 -> ../../../devices/platform/coretemp.0
lrwxrwxrwx. 1 root root 0 22. Jul 14:56 efi-framebuffer.0 -> ../../../devices/platform/efi-framebuffer.0
lrwxrwxrwx. 1 root root 0 22. Jul 14:56 Fixed MDIO bus.0 -> ../../../devices/platform/Fixed MDIO bus.0
lrwxrwxrwx. 1 root root 0 22. Jul 14:56 i8042 -> ../../../devices/platform/i8042
lrwxrwxrwx. 1 root root 0 25. Jul 23:54 iTCO_wdt -> ../../../devices/pci0000:00/0000:00:1f.0/iTCO_wdt
lrwxrwxrwx. 1 root root 0 25. Jul 23:54 microcode -> ../../../devices/platform/microcode
lrwxrwxrwx. 1 root root 0 22. Jul 14:56 pcspkr -> ../../../devices/platform/pcspkr
lrwxrwxrwx. 1 root root 0 25. Jul 23:54 regulatory.0 -> ../../../devices/platform/regulatory.0
lrwxrwxrwx. 1 root root 0 25. Jul 23:54 rtsx_pci_ms.0 -> ../../../devices/pci0000:00/0000:00:1c.2/0000:02:00.0/rtsx_pci_ms.0
lrwxrwxrwx. 1 root root 0 25. Jul 23:54 rtsx_pci_sdmmc.0 -> ../../../devices/pci0000:00/0000:00:1c.2/0000:02:00.0/rtsx_pci_sdmmc.0
lrwxrwxrwx. 1 root root 0 22. Jul 14:56 serial8250 -> ../../../devices/platform/serial8250

I then loaded the i2c-designware-platform. here is the output of cat /proc/interupts:

[root@asusx550 devices]# cat /proc/interrupts 
           CPU0       CPU1       CPU2       CPU3       
  0:         64          0          0          0   IO-APIC-edge      timer
  1:       2170         97       2120        130   IO-APIC-edge      i8042
  8:          0          0          1          0   IO-APIC-edge      rtc0
  9:        433        148        197        248   IO-APIC-fasteoi   acpi
 12:      15274       1881      55754       2211   IO-APIC-edge      i8042
 19:      73752      14399     507297      21127   IO-APIC-fasteoi   ath9k
 23:         34          3         44          0   IO-APIC-fasteoi   ehci_hcd:usb1
 56:       3758        374       7353     105057   PCI-MSI-edge      ahci
 57:        168          0        492          0   PCI-MSI-edge      snd_hda_intel
 58:     169175          0          2          1   PCI-MSI-edge      p2p1
 59:        161          0     482405          0   PCI-MSI-edge      i915
 60:          3          0         15          0   PCI-MSI-edge      snd_hda_intel
 61:         21          4         10          3   PCI-MSI-edge      rtsx_pci
 62:          7          0          7          0   PCI-MSI-edge      mei_me
 63:          1          0         17          0   PCI-MSI-edge      xhci_hcd
NMI:          0          0          0          0   Non-maskable interrupts
LOC:     787493     811765    2037619     781498   Local timer interrupts
SPU:          0          0          0          0   Spurious interrupts
PMI:          0          0          0          0   Performance monitoring interrupts
IWI:      73260      49349     262487      42265   IRQ work interrupts
RTR:          3          1          0          0   APIC ICR read retries
RES:      34411      34959      66297      18591   Rescheduling interrupts
CAL:      13559      12080       3078      13900   Function call interrupts
TLB:      26972      23646      19801      26814   TLB shootdowns
TRM:          0          0          0          0   Thermal event interrupts
THR:          0          0          0          0   Threshold APIC interrupts
MCE:          0          0          0          0   Machine check exceptions
MCP:         53         52         52         52   Machine check polls
THR:          0          0          0          0   Hypervisor callback interrupts
ERR:          0
MIS:          0

then I loaded i2c-dev. here is the output of i2cdetect -l:
[root@asusx550 devices]# i2cdetect -l
i2c-0	i2c       	i915 gmbus ssc                  	I2C adapter
i2c-1	i2c       	i915 gmbus vga                  	I2C adapter
i2c-2	i2c       	i915 gmbus panel                	I2C adapter
i2c-3	i2c       	i915 gmbus dpc                  	I2C adapter
i2c-4	i2c       	i915 gmbus dpb                  	I2C adapter
i2c-5	i2c       	i915 gmbus dpd                  	I2C adapter
i2c-6	i2c       	DPDDC-A                         	I2C adapter
i2c-7	i2c       	DPDDC-B                         	I2C adapter

hope this helps. let me know if I can provide more details.

uwe

Comment 55 Benjamin Tissoires 2014-07-25 23:25:29 UTC
Thanks for the outputs. Unfortunately, as you discovered, this just does not provide us the right i2c controller to access the device.

I don't think I'll be able to debug that remotely. If you can stay with the plain serial connection, Hans' solution will be just fine for you. I am afraid you are missing raw reporting, so that means no gestures, but really, here, I can not tell you how to untangle this :(

Comment 56 Hans de Goede 2014-08-13 09:23:18 UTC
Quick status update on my kernel patches for making the kernel do psmouse.proto=bare automatically for these devices.

Unfortunately I have not been able to find the time to work on this the last 2 weeks, and right now I have 2 weeks of vacation ahead of me.

I will get back to you with a test kernel, but I'm afraid it is going to take longer then I would have wanted.

Comment 57 aguitel 2014-08-14 13:01:20 UTC
in archlinux touchpad is not working too
in kubuntu touchpad is not working too

any conclusion or any tips

Comment 58 Hans de Goede 2014-08-14 13:34:08 UTC
(In reply to aguitel from comment #57)
> in archlinux touchpad is not working too
> in kubuntu touchpad is not working too
> 
> any conclusion or any tips

Boot with psmouse.proto=bare on the kernel commandline to make it work (in mouse emulation mode).

Comment 59 aguitel 2014-08-14 17:22:02 UTC
how add this command y kernel ?

Comment 60 aguitel 2014-08-14 17:27:02 UTC
and what is mouse emulation mode?

Comment 61 raphaelh 2014-09-03 06:56:46 UTC
Màrius did a minor modification to the elantech.c source file and now has full support for his touchpad on his Asus s301l :

http://mariusmonton.com/?p=489

He just replaced:
static const unsigned char rates[] = { 200, 100, 80, 60, 40, 20, 10 };

with:
static const unsigned char rates[] = { 200, 100, 80, 60, 40, 21, 10 };

Comment 62 Hans de Goede 2014-09-03 08:14:04 UTC
(In reply to raphaelh from comment #61)
> Màrius did a minor modification to the elantech.c source file and now has
> full support for his touchpad on his Asus s301l :
> 
> http://mariusmonton.com/?p=489
> 
> He just replaced:
> static const unsigned char rates[] = { 200, 100, 80, 60, 40, 20, 10 };
> 
> with:
> static const unsigned char rates[] = { 200, 100, 80, 60, 40, 21, 10 };

Thanks for pointing this out to me, I've gotten into contact with Màrius to get a proper fix for this upstream. Unfortunately this won't help for X450 / X550 owners as that model really has a completely different touchpad.

Comment 63 Jiri Slaby 2014-09-03 08:17:17 UTC
(In reply to Hans de Goede from comment #62)
> Unfortunately this won't help for X450 /
> X550 owners as that model really has a completely different touchpad.

BTW Mateusz did some debugging at:
https://bugzilla.kernel.org/show_bug.cgi?id=77391

Maybe it's worth trying. I won't be able to do so, as I don't have the machine at hand for the next few weeks :(.

Comment 64 Elisa 2014-09-04 20:11:02 UTC
Hi, I have an ASUS X550 (here known ad R510L). I'm using Arch Linux and I have never work with the kernel or drivers, but if you need someone to debug I'm up to it. I don't know if this is the place to put this, but...

Comment 65 jdcaddie 2014-09-04 21:09:53 UTC
Hello, I am running into the same issue running FC20 (3.11.10-301.fc20.x86_64
) on my ASUS Q550LF and am available to conduct some troubleshooting to resolve this issue.

Please let me know how I can help in any way.
JC

Comment 66 Hans de Goede 2014-09-05 07:20:04 UTC
(In reply to Elisa from comment #64)
> Hi, I have an ASUS X550 (here known ad R510L). I'm using Arch Linux and I
> have never work with the kernel or drivers, but if you need someone to debug
> I'm up to it. I don't know if this is the place to put this, but...

(In reply to jdcaddie from comment #65)
> Hello, I am running into the same issue running FC20 (3.11.10-301.fc20.x86_64
> ) on my ASUS Q550LF and am available to conduct some troubleshooting to
> resolve this issue.

Hi Elisa, JC,

It would be good to confirm that your models really have the same issue, can you please do:

dmesg > dmesg.txt

Directly after boot, from a terminal, and then attach the resulting dmesg.txt here ?

Thanks,

Hans

Comment 67 Elisa 2014-09-08 08:49:43 UTC
Created attachment 935276 [details]
dmesg of a X550 (R150L in some european regions)

Comment 68 Hans de Goede 2014-09-10 14:30:41 UTC
(In reply to Hans de Goede from comment #52)
> (In reply to uwe geercken from comment #51)
> > thanks a lot. will I be notified when the patch is available?
> 
> Yes, as I will need you to test it :)  I'm afraid I've had a bit of a busy
> week hopefully I will get around to this at the end of this week / beginning
> of the next week.

So I've finally managed to make some time to take care of this. I've started a scratch build with a set of patches which should make the touchpad work without needing to specify anything on the kernel commandline:

http://koji.fedoraproject.org/koji/taskinfo?taskID=7564392

(note still building atm.

Please download kernel-3.16...rpm for your architecture, install using:

rpm -ivh kernel-3.16...rpm

Reboot into the new kernel, without specifying any special commandline arguments, and let me know if the touchpad then works (in mouse emulation mode). If it does not work, please do:

dmesg > dmesg.txt

Directly after boot, and attach dmesg.txt here.

Thanks & Regards,

Hans

Comment 69 Jo Are By 2014-09-10 16:50:37 UTC
(In reply to Hans de Goede from comment #68)
> (In reply to Hans de Goede from comment #52)
> > (In reply to uwe geercken from comment #51)
> > > thanks a lot. will I be notified when the patch is available?
> > 
> > Yes, as I will need you to test it :)  I'm afraid I've had a bit of a busy
> > week hopefully I will get around to this at the end of this week / beginning
> > of the next week.
> 
> So I've finally managed to make some time to take care of this. I've started
> a scratch build with a set of patches which should make the touchpad work
> without needing to specify anything on the kernel commandline:
> 
> http://koji.fedoraproject.org/koji/taskinfo?taskID=7564392
> 
> (note still building atm.
> 
> Please download kernel-3.16...rpm for your architecture, install using:
> 
> rpm -ivh kernel-3.16...rpm
> 
> Reboot into the new kernel, without specifying any special commandline
> arguments, and let me know if the touchpad then works (in mouse emulation
> mode). If it does not work, please do:
> 
> dmesg > dmesg.txt
> 
> Directly after boot, and attach dmesg.txt here.
> 
> Thanks & Regards,
> 
> Hans

I have seemingly identical issues on an Asus F550L. Tried your 3.16 kernel - does not automatically enable ps2 emu. I will attach dmesg as soon as I figure out how.

Excerpt (dmesg):

psmouse serio4: focaltech: Checking for focaltech touchpad, firmware_id: ....
psmouse serio4: focaltech: Found focaltech touchpad!
psmouse serio4: Failed to enable mouse on isa0060/serio4

This appears 119 times in dmesg.txt


Regards

Jo Are By

Comment 70 Jo Are By 2014-09-10 16:54:57 UTC
Created attachment 936265 [details]
dmesg output after testing 3.16 kernel regarding auto ps2 mouse emu

Comment 71 Hans de Goede 2014-09-10 18:00:40 UTC
Hi Jo,

Thanks for the testing. I assume that ps2 emu does work when you use "mouse.proto=bare" on the kernel command line ?

Looks like I need to dig a bit deeper then.

Regards,

Hans

Comment 72 Jo Are By 2014-09-10 18:21:21 UTC
(In reply to Hans de Goede from comment #71)
> Hi Jo,
> 
> Thanks for the testing. I assume that ps2 emu does work when you use
> "mouse.proto=bare" on the kernel command line ?
> 
> Looks like I need to dig a bit deeper then.
> 
> Regards,
> 
> Hans

You're welcome, and thanks for looking into this issue.

"psmouse.proto=bare" results in a working touchpad on both default and testbuild (3.16) kernels.

From the testbuild with "psmouse.proto=bare":

psmouse serio4: focaltech: Checking for focaltech touchpad, firmware_id: ....
psmouse serio4: focaltech: Found focaltech touchpad!
input: PS/2 FocalTech FocalTech Touchpad in mouse emulation mode as /devices/platform/i8042/serio4/input/input11

appear once, and the psmouse fail messages are gone from dmesg.


Regards,

Jo Are

Comment 73 Hans de Goede 2014-09-10 18:36:17 UTC
Hi again,

Ok, I think I've figured out the problem with my previous patch-set. Can you please give this build a try
(once it has finished building):

http://koji.fedoraproject.org/koji/taskinfo?taskID=7565447

Same instructions as before, this time things should hopefully really work without adding anything on the kernel commandline.

Thanks,

Hans

Comment 74 uwe geercken 2014-09-10 18:58:43 UTC
Hans,

is this also valid for me? should I give it a try?

rgds,

Uwe

Comment 75 Jo Are By 2014-09-10 20:37:58 UTC
The last patch set seem to work as advertised. I have a working touchpad now without explicit kernel command line.

Thanks & regards,

Jo Are

Comment 76 Hans de Goede 2014-09-11 08:53:40 UTC
(In reply to uwe geercken from comment #74)
> Hans,
> 
> is this also valid for me? should I give it a try?

Yes, this build should also make things work for you without any special kernel commandline options:

http://koji.fedoraproject.org/koji/taskinfo?taskID=7565447

Note that since Jo has already confirmed this fixes things, you don't need to test this too, but if you want to feel free.

(In reply to Jo Are By from comment #75)
> The last patch set seem to work as advertised. I have a working touchpad now
> without explicit kernel command line.

That is great, thanks.

Comment 77 Hans de Goede 2014-09-11 08:54:43 UTC
Created attachment 936449 [details]
[PATCH 1/3] i8042: Also store the aux firmware id in multi-plexed aux ports

Comment 78 Hans de Goede 2014-09-11 08:55:12 UTC
Created attachment 936450 [details]
[PATCH 2/3] psmouse: Add psmouse_matches_pnp_id helper function

Comment 79 Hans de Goede 2014-09-11 08:55:56 UTC
Created attachment 936452 [details]
[PATCH 3/3] psmouse: Add support for detecting FocalTech PS/2 touchpads

Comment 80 Hans de Goede 2014-09-11 08:58:58 UTC
Josh,

The 3 patches which I've just attached fix this, can you please add them to the 3.16 and 3.17 Fedora kernels ? They are against 3.17, but I expect them to apply fine to 3.16 too.

I've also send these 3 upstream about 5 minutes ago. They may still make 3.17, otherwise they should be in 3.18 .

Thanks,

Hans

Comment 81 Josh Boyer 2014-09-11 11:30:14 UTC
Sure.  I'll get to them in a bit.

Comment 82 Josh Boyer 2014-09-11 14:09:57 UTC
Patches added to rawhide-F20.  Thanks again, Hans.

Comment 83 jdcaddie 2014-09-12 02:09:12 UTC
Created attachment 936719 [details]
dmesg after reboot running kernel 3.15.10-201.fc20.x86_64

Sorry for the delay here is my dmesg output

Comment 84 jdcaddie 2014-09-12 02:35:16 UTC
Created attachment 936721 [details]
dmesg after reboot running kernel  3.16.2-200.fc20.x86_64

I updated to kernel 3.16.2-200.fc20.x86_64 from the fedora-update-testing repo although my touchpad is still not working correctly.

Comment 85 Hans de Goede 2014-09-12 07:08:59 UTC
(In reply to jdcaddie from comment #84)
> Created attachment 936721 [details]
> dmesg after reboot running kernel  3.16.2-200.fc20.x86_64

Ok, seems your laptop is affected too.

> I updated to kernel 3.16.2-200.fc20.x86_64 from the fedora-update-testing
> repo although my touchpad is still not working correctly.

That kernel does not yet have the fix. You can add "psmouse.proto=bare" to your kernel commandline in the mean time as a workaround.

Comment 86 jdcaddie 2014-09-13 04:47:00 UTC
I have applied the additional kernel param to kernel 3.16.2-200.fc20.x86_64 and encountered a kernel panic.

I applied it to 3.15.10-201.fc20.x86_64 and I still do not have access to the touchpad configuration.

Comment 87 Hans de Goede 2014-09-13 08:14:19 UTC
(In reply to jdcaddie from comment #86)
> I have applied the additional kernel param to kernel 3.16.2-200.fc20.x86_64
> and encountered a kernel panic.

That is weird. Does that kernel work without the param ? If it does can you try again ?

> I applied it to 3.15.10-201.fc20.x86_64 and I still do not have access to
> the touchpad configuration.

That is expected, this parameter will just make the touchpad work in its mouse emulation, so you cannot configure it, but it should at least work now.

Comment 88 Fedora Update System 2014-09-17 11:57:22 UTC
kernel-3.16.2-201.fc20 has been submitted as an update for Fedora 20.
https://admin.fedoraproject.org/updates/kernel-3.16.2-201.fc20

Comment 89 Fedora Update System 2014-09-18 18:07:51 UTC
kernel-3.16.3-300.fc21 has been submitted as an update for Fedora 21.
https://admin.fedoraproject.org/updates/kernel-3.16.3-300.fc21

Comment 90 Fedora Update System 2014-09-19 10:10:00 UTC
kernel-3.16.2-201.fc20 has been pushed to the Fedora 20 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 91 Fedora Update System 2014-09-23 04:43:49 UTC
kernel-3.16.3-300.fc21 has been pushed to the Fedora 21 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 92 Hans de Goede 2014-09-23 12:48:18 UTC
Hi All,

So I have been learning a bit more about ACPI enumerated i2c controllers, and I would like to take one more shot at seeing if these touchpads perhaps also have an i2c interface.

I've also learned in the mean time that not all x450/x550 models have a focaltech touchpad...

So for starters, please (re)boot your machine and do:

dmesg | grep FLT0101

This should give something like this:

[    0.228802] pnp 00:09: Plug and Play ACPI device, IDs FLT0101 SYN0a00 SYN0002 PNP0f03 PNP0f13 PNP0f12 (active)

If it does not, you do not have a focaltech touchpad, and this bug report is not for you.

If it does, then please run the following 2 commands from a terminal:

for i in /sys/bus/acpi/devices/*; do echo -n "$i: "; cat $i/status 2> /dev/null || echo; done > acpi-devices.log
lspci -nn > lspci.log

And then attach acpi-devices.log and lspci.log here.

Thanks,

Hans

Comment 93 despernal 2014-09-23 17:19:57 UTC
I have one of the new UX303LN asus netbooks and looking at the dmesg and also the following bug report I think it is the same device.

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1372609?comments=all

I am at work right now but I can help when I get home with testing anything if it is the same one.

I would love to get this touchpad working it is the only reason I am not on the new laptop right now lol

Comment 94 Elisa 2014-09-23 17:42:59 UTC
Hi,

I'm sorry, I couldn't try the patch yet. I will try to do it as soon as possible.

I checked and I have a focaltech touchpad, I'm attaching both logs.

Thank you for your time and work, Hans!

Comment 95 Elisa 2014-09-23 17:43:45 UTC
Created attachment 940521 [details]
acpi-devices.log of a focaltech touchpad

Comment 96 Elisa 2014-09-23 17:44:40 UTC
Created attachment 940523 [details]
lspci.log of a focaltech touchpad

Comment 97 despernal 2014-09-23 18:56:39 UTC
Just got home I have made a clone of the current master of the kernel and merged in the master for dtor fixing to compile up this kernel and I will report back with the findings

Comment 98 Hans de Goede 2014-09-23 20:06:54 UTC
(In reply to Elisa from comment #96)
> Created attachment 940523 [details]
> lspci.log of a focaltech touchpad

Thanks for the logs, it seems that there no extra i2c controllers on your laptop (unfortunately), so to get these touchpads to work in native mode we will need to reverse engineer the ps/2 protocol.

Comment 99 despernal 2014-09-23 20:08:11 UTC
Created attachment 940594 [details]
dmesg after booting with 3.17.0-rc6+ with dtor master merged


Was able to boot up the new kernel and it is indeed a FocalTech

Comment 100 despernal 2014-09-23 20:09:25 UTC
Created attachment 940595 [details]
lspci on 3.17.0-rc6+

Comment 101 despernal 2014-09-23 20:10:13 UTC
Created attachment 940596 [details]
acpi-devices 3.17.0-rc6+

Comment 102 Elisa 2014-09-23 20:25:22 UTC
(In reply to Hans de Goede from comment #98)
> (In reply to Elisa from comment #96)
> > Created attachment 940523 [details]
> > lspci.log of a focaltech touchpad
> 
> Thanks for the logs, it seems that there no extra i2c controllers on your
> laptop (unfortunately), so to get these touchpads to work in native mode we
> will need to reverse engineer the ps/2 protocol.

I just tried the patch, and I get it working as a:

PS/2 FocalTech FocalTech Touchpad in mouse emulation mode

But it works much better than with the proto=bare option.

How do you reverse engineer a ps/2 protocol. I would like to help, but I have never worked with the linux kernel or drivers.

Comment 103 Nikola Nikolov 2014-09-23 20:45:04 UTC
Hello everyone, 

Benjamin pointed me to this bug report - my touchpad is also not working on an Asus laptop(it's model is K750LN, but from what I've gathered it seems to be almost identical to X750LN), even with the latest mainline kernel(3.17-rc6).

I tried adding both of the suggested boot flags, but to no avail. 

I'm running Ubuntu, so is it possible for me to still try the kernels that you've built?

This is what I get from dmesg | grep FLT0101 : 

[    0.215415] pnp 00:06: Plug and Play ACPI device, IDs FLT0101 PNP0f13 (active)

I'm going to attach the requested files as well.

Comment 104 Nikola Nikolov 2014-09-23 20:46:18 UTC
Created attachment 940606 [details]
acpi-devices.log requested by Hans

Comment 105 Nikola Nikolov 2014-09-23 20:46:49 UTC
Created attachment 940607 [details]
lspci.log requested by Hans

Comment 106 Hans de Goede 2014-09-24 08:37:43 UTC
Hi Nikola,

Thanks for the info on the X750 and the logs. It seems your laptop indeed also has a focaltech touchpad. 

Are you sure you've properly added "psmouse.proto=bare" to the kernel commandline, that should make the touchpad work (although the system will think it is a mouse, so you cannot use touchpad specific features like 2 finger scrolling, etc.).

You can do "cat /proc/cmdline" in a terminal after boot to check your kernel commandline and verify that  "psmouse.proto=bare" is really there.

Regards,

Hans

Comment 107 Nikola Nikolov 2014-09-24 08:47:13 UTC
Hi Hans, 

Here's what my cmdline is at the moment( I haven't restarted after adding the boot flags): 

BOOT_IMAGE=/boot/vmlinuz-3.17.0-031700rc6-generic root=UUID=7f1fe8aa-bbe8-435d-979a-261f0331631e ro quiet splash i8042.nomux psmouse.proto=bare vt.handoff=7

As you can see both the "psmouse.proto=bare" and "i8042.nomux" flags are in place. 
Initially I tried with just having the psmouse. flag, but that didn't solve the issue. So I added the i8042.nomux flag as well since I read here that it solved the issue in some cases. 

Any other thoughts? If helpful, I can offer SSH access to the laptop( I have a static IP and I'm already forwarding my SSH port through the router anyway ).

Nikola

Comment 108 Nikola Nikolov 2014-09-24 09:04:26 UTC
Oh, I just noticed I had the flag wrong :doh: .
Anyway, after testing all different variations: 

psmouse.proto=bare
psmouse.proto=bare i8042.nomux=1
psmouse.proto=bare i8042.reset=1
psmouse.proto=bare i8042.nomux=1 i8042.reset=1

I still can't get the touchpad to work for some reason. 

Any other information I can provide? Like the dmesg output after adding dyndbg="file drivers/input/mouse/* +p" to the kernel boot options?

Comment 109 Hans de Goede 2014-09-24 09:09:31 UTC
Hi,

(In reply to Nikola Nikolov from comment #108)
> Oh, I just noticed I had the flag wrong :doh: .
> Anyway, after testing all different variations: 
> 
> psmouse.proto=bare
> psmouse.proto=bare i8042.nomux=1
> psmouse.proto=bare i8042.reset=1
> psmouse.proto=bare i8042.nomux=1 i8042.reset=1
> 
> I still can't get the touchpad to work for some reason. 
> 
> Any other information I can provide? Like the dmesg output after adding
> dyndbg="file drivers/input/mouse/* +p" to the kernel boot options?

Yes dmesg output with that dyndbg option would be very useful.

Thanks,

Hans

Comment 110 Nikola Nikolov 2014-09-24 09:32:23 UTC
cmdline is as follows now: 

BOOT_IMAGE=/boot/vmlinuz-3.17.0-031700rc6-generic root=UUID=7f1fe8aa-bbe8-435d-979a-261f0331631e ro quiet splash i8042.reset=1 i8042.nomux=1 psmouse.proto=bare "dyndbg=file drivers/input/mouse/* +p" vt.handoff=7

Attaching the dmesg.txt file now.

Comment 111 Nikola Nikolov 2014-09-24 09:32:59 UTC
Created attachment 940727 [details]
dmesg output after adding the dyndbg="file drivers/input/mouse/* +p" boot flag

Comment 112 Hans de Goede 2014-09-24 09:50:03 UTC
Hi Nikola,

So looking at your logs it seems that Linux is simply not seeing the aux ps/2 port on your laptop at all. 

Can you change the dyndbg option to:

dyndbg="file drivers/input/serio/* +p"

And also add:

i8021.noloop=1

To the kernel commandline, and then try again, and collect dmesg output again ?

Thanks,

Hans

Comment 113 Hans de Goede 2014-09-24 09:50:34 UTC
Erm, make that:

i8042.noloop=1

of course.

Comment 114 Nikola Nikolov 2014-09-24 11:39:21 UTC
Awesome - that did the trick! Obviously it's just the basic implementation, but it still helps me avoid carrying a mouse whenever I go out with my laptop :)

I'm attaching the dmesg output as well. 

If you need any further testing(are drivers for that new type of touchpad out of the scope for this bug?), just let me know and I'll try and come back to you as soon as I can.

Comment 115 Nikola Nikolov 2014-09-24 11:40:49 UTC
Created attachment 940751 [details]
dmesg output with "dyndbg=file drivers/input/serio/* +p"

Comment 116 Hans de Goede 2014-09-24 11:55:13 UTC
(In reply to Nikola Nikolov from comment #114)
> Awesome - that did the trick!

That is good to hear. So that means that we will need to add a quirk for your laptop to the kernel to automatically do the right thing, but I'm not 100% sure yet what quirk exactly, so I need some more info:

1) Can you please get me a dmesg without any of the i8042.* options, and with "dyndbg=file drivers/input/serio/* +p", and attach that here?

2) Can you try booting with just "i8042.noloop=1 psmouse.proto=bare" and none of the other options and see if that is sufficient to get things to work ?

Comment 117 Arinarmo 2014-10-01 16:27:07 UTC
Hi, 

First, thank you Hans for all the work you've put into this. 

Is there still work going on to make the touchpad work natively? I understand, from this thread, that this may imply a lot of work to reverse engineer the ps/2 protocol, I don't have a lot of knowledge about drivers or ps/2, but I'm willing to offer my help if needed.

Thanks.

Comment 118 Nikola Nikolov 2014-10-06 22:13:57 UTC
Hi Hans, sorry for the huge delay. 

1) You'll find attached the dmesg output from the following cmdline(no i8042): 
BOOT_IMAGE=/boot/vmlinuz-3.17.0-031700rc6-generic root=UUID=7f1fe8aa-bbe8-435d-979a-261f0331631e ro quiet splash psmouse.proto=bare "dyndbg=file drivers/input/serio/* +p" vt.handoff=7

2) Yes it worked! Here's the full cmdline that gets my touchpad working: 
BOOT_IMAGE=/boot/vmlinuz-3.17.0-031700rc6-generic root=UUID=7f1fe8aa-bbe8-435d-979a-261f0331631e ro quiet splash i8042.noloop=1 psmouse.proto=bare vt.handoff=7

Let me know if there's anything else I can help with.

I'd also be interested in getting the touchpad's extended functionality. Haven't coded in C(I do have coding experience, but it's the far simpler world of PHP and web programming :) ) though, so I don't think I'll be able to help in that way. I'd be willing to try out drivers and give feedback. I also have experience with git, so I can stay up to date with development when it happens.

Comment 119 Nikola Nikolov 2014-10-06 22:15:05 UTC
Created attachment 944389 [details]
dmesg without any i8042 flags and with "dyndbg=file drivers/input/serio/* +p"

Comment 120 Hans de Goede 2014-10-12 08:24:50 UTC
(In reply to Nikola Nikolov from comment #119)
> Created attachment 944389 [details]
> dmesg without any i8042 flags and with "dyndbg=file drivers/input/serio/* +p"

Thanks, I've send a patch upstream with a quirk for the X750LN, so that future kernels will apply the noloop behavior automatically to your model laptop.

Comment 121 Mathias Gottschlag 2014-10-19 18:40:36 UTC
Asus ux303ln and ux303la seem to use the same touchpad (FLT0101). Is anybody working on writing a "proper" touchpad driver? If so, please tell me, so that we don't duplicate the work.

There is an ubuntu bug for the ux303ln at https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1372609, although with different semantics with this one.

I have loaded the original asus driver in a VM and captured the initialization sequence, and I think I have reverse engineered most of the packet format: https://github.com/mgottschlag/focaltech-tools (to start the tool, bind serio_raw to the serio device and run "sudo ./init /dev/serio_rawX")

If nobody else is already working on it, I would try writing a proper driver in the next days.

Comment 122 Nikola Nikolov 2014-10-19 19:02:12 UTC
Hi Mathias, 

As far as I know you're the first person to state that they'll be working on a proper driver for this touchpad. However, I'm not following all Linux input-related communication channels, so I might've missed something - if anyone know more about this, please say so. 

I would be interested in helping out with testing. If you'll be looking for testers, let me know how I can help.

Comment 123 Mathias Gottschlag 2014-10-19 19:33:15 UTC
Hey, can anybody with an affected touchpad maybe run the program at https://github.com/mgottschlag/focaltech-tools and

1) send me the first some lines of the output (those prefixed with "status")
2) check if the output of the program makes sense by moving some fingers around on the touchpad
3) if the output makes sense, try to find out the minimum and maximum coordinates by moving one finger onto the edge of the touchpad right up to the point where the touchpad starts generating events?

I am trying to find out whether the data fetched by the windows driver when initializing the touchpad contains the size of the touchpad or some other interesting information, and would like to have a slightly larger sample count :)

The program is run like this (replace serio4 and serio_raw0 with the values that work for you):
./compile.sh
sudo modprobe serio_raw
echo -n "serio_raw" | sudo tee /sys/bus/serio/devices/serio4/drvctl
sudo ./init /dev/serio_raw0

Example for the ux303ln touchpad:
status: 69 80 80
status: 36 53 03
status: 00 13 0d
status: 0b 03 00
status: 23 bd f8
[...]
packet: 06 10 02 03 7e 10 abs (    2/  894                                                 )
[...]
packet: 06 12 e4 00 02 10 abs (  740/    2                                                 )
[...]
packet: 06 19 7f 03 66 10 abs ( 2431/  870                                                 )
[...]
packet: 06 12 2c 06 7f 10 abs (  556/ 1663                                                 )

(so in this case the size of the touchpad is about 2431x1663 points)

Many thanks for your help in advance!

Comment 124 Nikola Nikolov 2014-10-19 20:00:38 UTC
Thank you for your work, here's the output for me: 

status: 69 80 80
status: 36 53 03
status: 00 13 0d
status: 0b 03 00
status: 23 bd f8

And the coordinate lines: 

packet: 06 10 02 00 02 10 abs (    2/    2                                                 )
packet: 06 10 02 06 7f 10 abs (    2/ 1663                                                 )
packet: 06 19 7a 06 7f 10 abs ( 2426/ 1663                                                 )
packet: 06 19 6a 00 02 10 abs ( 2410/    2                                                 )

Also I can confirm that up to 5 fingers(contact points) are detected, for instance: 

packet: 59 00 00 03 00 00 rel ( 1893/ 1174   701/ 1210  1099/  734  1143/ 1354  1568/ 1404 )


Let me know if you'd need any further help. 

Also I'm not sure whether this is the correct place to exchange information about testing - if there's a more appropriate place(Issue on GitHub maybe?), let me know.

Comment 125 Hans de Goede 2014-10-20 07:45:37 UTC
Hi Mathias,

(In reply to Mathias Gottschlag from comment #121)
> Asus ux303ln and ux303la seem to use the same touchpad (FLT0101). Is anybody
> working on writing a "proper" touchpad driver? If so, please tell me, so
> that we don't duplicate the work.

It is great to hear that you're working on this, AFAIK you are the first person working on this. Let me know if you need any help with writing the kernel driver, and please CC me when you submit the driver upstream, then I can review it for you.

Question if you put down a finger, lets call this finger "finger 1" and then put down finger 2, and then lift finger 1, where in the packet does "finger 2" get reported ? If it jumps from slot 2 to slot 1 when this happens, then you've a so called Type A device, see Documentation/input/multi-touch-protocol.txt.

If you've a Type A device, then you need to use input_mt_assign_slots and input_mt_sync_frame so that the kernel will track which finger is one, turning the device into a "Type B" slot from userspace's pov. This is necessary because userspace only supports Type B touchpad devices. See drivers/input/mouse/alps.c alps_report_mt_data for an example, this works basically like this:

1) Call input_mt_assign_slots passing in a "slot" integer array and an array of touch coordinates, and the amount of active touches. This will figure out to which previous slot each touch is closest and store which touch should end up in which slot accordingly to avoid fingers jumping from one slot to another.

2) For each touch:
2.1) Call input_mt_slot(dev, slot[i]) setting the active slot to the one assigned by input_mt_assign_slots
2.2) Call input_mt_report_slot_state(dev, MT_TOOL_FINGER, true);
2.3) Call input_report_abs(dev, ABS_MT_POSITION_X, x);
2.4) Call input_report_abs(dev, ABS_MT_POSITION_Y, y);

3) Commit all the touches with input_mt_sync_frame(dev);

4) Report number of fingers down using input_mt_report_finger_count(dev, n);

5) Report buttons

6) Do input_sync(dev);


And before using input_mt_foo you need to call:

        input_mt_init_slots(dev1, MAX_TOUCHES, INPUT_MT_POINTER |
                INPUT_MT_DROP_UNUSED | INPUT_MT_TRACK | INPUT_MT_SEMI_MT);

Note the INPUT_MT_DROP_UNUSED automatically lifts fingers which do not have input_mt_report_slot_state(dev, MT_TOOL_FINGER, true) called on them since the last input_mt_sync_frame(dev);

I hope this helps.

Regards,

Hans

Comment 126 Mathias Gottschlag 2014-10-21 21:30:35 UTC
I've written a multitouch-capable driver which seems to work well at least on the UX303LN. The code is available under the following URL (in the focaltech branch):

https://github.com/mgottschlag/linux/tree/focaltech

Before I send anything for review, can people with affected devices maybe test the driver and see whether it works?

Comment 127 jdcaddie 2014-10-21 22:04:32 UTC
I will test on a q550lf although will need some implementation direction.

Comment 128 Zuyi Hu 2014-10-27 10:23:36 UTC
I am using ASUS X450JN, the touch pad is FLT0102.

Here is the output of `sudo ./init /dev/serio_raw1` :
reset, device id = 00
status: 6b 80 80
status: 36 53 03
status: 00 17 0d
status: 0b 03 00
status: 23 45 f8

packet: 06 10 02 06 7a 10 abs (    2/ 1658

packet: 06 1b 7f 06 76 10 abs ( 2943/ 1654 

packet: 06 1b 7f 00 02 10 abs ( 2943/    2 

packet: 06 10 02 00 02 10 abs (    2/    2

Comment 129 Zuyi Hu 2014-10-27 11:03:39 UTC
Hi Mathias, It works for me by just add value detect in registers params like this "(param[0] != 0x69 && param[0] != 0x6b)".

Comment 130 Zuyi Hu 2014-10-27 11:38:07 UTC
Hi everyone, I have make a dkms version for linux-3.16 and linux-3.18, see https://github.com/hzy199411/psmouse-focaltech.but I get some warning from kernel,how can I slove the warnings.

here is the warning:

[ 1139.624300] psmouse serio1: focaltech: focaltech_reset
[ 1144.040815] psmouse serio1: focaltech: focaltech_reset
[ 1144.211551] ------------[ cut here ]------------
[ 1144.211559] WARNING: CPU: 2 PID: 104 at /var/lib/dkms/psmouse/focaltech/build/src/psmouse-base.c:1090 psmouse_switch_protocol+0x1a8/0x1e0 [psmouse]()
[ 1144.211560] Modules linked in: psmouse(O) bnep bluetooth bbswitch(O) iptable_filter ipt_MASQUERADE iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack ip_tables x_tables arc4 rt2800pci rt2800mmio rt2800lib fuse rt2x00pci rt2x00mmio rt2x00lib eeprom_93cx6 btrfs mac80211 xor raid6_pq cfg80211 crc_ccitt uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_core v4l2_common videodev media rfkill snd_hda_codec_realtek snd_hda_codec_hdmi snd_hda_codec_generic joydev alx mei_me iTCO_wdt mdio iTCO_vendor_support mxm_wmi snd_hda_intel snd_hda_controller snd_hda_codec snd_hwdep snd_pcm snd_timer snd soundcore mei evdev i915 drm_kms_helper drm intel_gtt i2c_algo_bit lpc_ich thermal ac battery i2c_i801 i2c_core video pcspkr processor serio_raw button x86_pkg_temp_thermal intel_powerclamp
[ 1144.211597]  kvm_intel kvm crc32_pclmul crc32c_intel ghash_clmulni_intel aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd microcode wmi vboxnetflt(O) vboxnetadp(O) pci_stub vboxpci(O) vboxdrv(O) usbip_host(C) usbip_core(C) coretemp nfs lockd sunrpc fscache msr ext4 crc16 mbcache jbd2 hid_generic usbhid hid sd_mod sr_mod crc_t10dif crct10dif_common cdrom ahci libahci libata ehci_pci xhci_hcd ehci_hcd scsi_mod usbcore usb_common tuxonice_userui tuxonice_swap tuxonice_bio tuxonice_compress [last unloaded: psmouse]
[ 1144.211622] CPU: 2 PID: 104 Comm: kworker/2:1 Tainted: G        WC O  3.16.4-pf #1
[ 1144.211623] Hardware name: ASUSTeK COMPUTER INC. X450JN/X450JN, BIOS 203 02/27/2014
[ 1144.211629] Workqueue: events_long serio_handle_event
[ 1144.211630]  0000000000000009 ffff880222cb7c68 ffffffff814e7638 0000000000000000
[ 1144.211632]  ffff880222cb7ca0 ffffffff810539cd ffff8800954e7a00 ffffffffa00e4280
[ 1144.211634]  ffff88021e3c2800 0000000000000000 0000000000000000 ffff880222cb7cb0
[ 1144.211636] Call Trace:
[ 1144.211642]  [<ffffffff814e7638>] dump_stack+0x4d/0x6f
[ 1144.211644]  [<ffffffff810539cd>] warn_slowpath_common+0x7d/0xa0
[ 1144.211646]  [<ffffffff81053aaa>] warn_slowpath_null+0x1a/0x20
[ 1144.211649]  [<ffffffffa00d5b98>] psmouse_switch_protocol+0x1a8/0x1e0 [psmouse]
[ 1144.211651]  [<ffffffffa00d6725>] psmouse_connect+0x1d5/0x2e0 [psmouse]
[ 1144.211653]  [<ffffffff813a01f6>] serio_driver_probe+0x36/0x50
[ 1144.211657]  [<ffffffff81377740>] driver_probe_device+0x90/0x3f0
[ 1144.211659]  [<ffffffff81377b6b>] __driver_attach+0x8b/0x90
[ 1144.211661]  [<ffffffff81377ae0>] ? __device_attach+0x40/0x40
[ 1144.211663]  [<ffffffff8137569b>] bus_for_each_dev+0x6b/0xb0
[ 1144.211665]  [<ffffffff813771de>] driver_attach+0x1e/0x20
[ 1144.211668]  [<ffffffff813a000d>] serio_handle_event+0x17d/0x230
[ 1144.211671]  [<ffffffff8106e828>] process_one_work+0x168/0x450
[ 1144.211673]  [<ffffffff8106f1cb>] worker_thread+0x6b/0x550
[ 1144.211675]  [<ffffffff8106f160>] ? init_pwq.part.26+0x10/0x10
[ 1144.211677]  [<ffffffff8107504b>] kthread+0xdb/0x100
[ 1144.211680]  [<ffffffff81074f70>] ? kthread_create_on_node+0x180/0x180
[ 1144.211684]  [<ffffffff814ee46c>] ret_from_fork+0x7c/0xb0
[ 1144.211686]  [<ffffffff81074f70>] ? kthread_create_on_node+0x180/0x180
[ 1144.211687] ---[ end trace 979bee5da65d6ede ]---
[ 1144.286943] input: PS/2 FocalTech FocalTech Touchpad as /devices/platform/i8042/serio1/input/input23

Comment 131 Mathias Gottschlag 2014-10-30 12:54:35 UTC
Thanks, your input is very valuable. There is a new version of the patch up at
https://github.com/mgottschlag/linux/tree/focaltech2
which should improve support for the X450JN (sets the correct size of the touchpad), and which incorporates various other changes. Also, that branch now includes all necessary previous patches and should not require any other kernel parameters anymore.

To whoever tests the patch, it would great if you could drop me a note whether the driver still works or not.

Comment 132 auguste.olivry 2014-10-30 19:29:14 UTC
Hello,

Thank you very much for the work on this driver. I am using an ASUS R409LD.
Here is the output for my touchpad :

reset, device id = 00
status: 6b 80 80
status: 36 53 03
status: 00 17 0d
status: 0b 03 00
status: 23 45 f8

And the maximum coordinates seem to be 2943 / 1663.

I tried the first version of the driver, the touchpad seems to be recognized but not by synaptics, so I don't know how to configure it. 
I will try the new version as soon as possible.

Comment 133 auguste.olivry 2014-10-30 23:15:27 UTC
The touchpad was recognised as Focaltech touchpad in PS/2 emulation mode with the first version, but with the new one it is detected as PS/2 logitech wheel mouse, and I don't have any multitouch features with both versions.

Comment 134 auguste.olivry 2014-11-02 20:19:31 UTC
I finally got it to work, and it works very well, but I still have a problem : the touchpad is not working anymore after suspend.

Comment 135 Mathias Gottschlag 2014-11-02 22:40:51 UTC
Unfortunately I cannot reproduce that problem here, and I have no idea how to debug this type of problem. Anybody can help?

Maybe you could enable debugging (echo 1 > /sys/module/i8042/parameters/debug) and try to get me a dmesg as complete as possible of suspend/resume?

Comment 136 Mathias Gottschlag 2014-11-02 22:51:55 UTC
Also, when the touchpad does not work, can you maybe try loading serio_raw and running ./init, to see whether that program is able to initialize the touchpad?

Comment 137 auguste.olivry 2014-11-03 10:12:38 UTC
Created attachment 953046 [details]
dmesg with debug enabled for i8042 for suspend/resume

Comment 138 auguste.olivry 2014-11-03 10:13:28 UTC
Also ./init is unable to initialize the touchpad.

Comment 139 Mathias Gottschlag 2014-11-10 22:43:54 UTC
Sorry, for the delay, I've been rather busy the last days, and on top of that I have no idea how to systematically debug this issue.

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1372609 contains some reports of suspend being broken with 3.18. While your report seems different (only the touchpad does not work), can you maybe try one of the patches for older kernels from there?

Comment 140 Mathias Gottschlag 2014-11-10 23:39:46 UTC
Oh, and one more thing: After suspend, can you run ./init with i8042 debugging (https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1372609) and send me both the output of the program and the dmesg output? That would be great.

Comment 141 auguste.olivry 2014-11-11 11:54:01 UTC
Created attachment 956262 [details]
dmesg with i8042 debug enabled after suspend

I think this is actually not related with your patch or kernel version since I already had the same issue with 3.17 kernel and the old driver.
I attached dmesg, ./init has no output.

Comment 142 Derek P. Moore 2015-02-18 14:38:14 UTC
As of yesterday, I got kernel-3.20.0-0.rc0.git6.2.fc23.x86_64 from fedora-rawhide-kernel-nodebug repo & xorg-x11-drv-synaptics-1.8.1-4.fc21.x86_64 from F21 updates repo.

As a result, the FocalTech touchpad on my ASUS X750J (X750JA-DB71) is working as expected.

From dmesg output:

input: FocalTechPS/2 FocalTech FocalTech Touchpad as /devices/platform/i8042/serio4/input/input12

Comment 143 Michael J. Kidd 2015-02-26 20:02:55 UTC
Created attachment 995746 [details]
Patch against 3.18.6-200 Fedora kernel

Comment 144 Michael J. Kidd 2015-02-26 20:27:23 UTC
Created attachment 995763 [details]
Patch against 3.18.6-200 kernel.spec file

To use:
* Install source package for kernel-3.18.6-200
* Download the two focaltech.3.18.6-200 patch files.
* Save 'focaltech.3.18.6-200.patch' into ~/rpmbuild/SOURCES
* Save 'focaltech.3.18.6-200.spec.patch' into ~/rpmbuild/SPECS

cd ~/rpmbuild/SPECs
patch -p1 < focaltech.3.18.6-200.spec.patch
rpmbuild -bb --target $(uname -m) kernel.spec

Install resulting kernel from ~/rpmbuild/RPMS/x86_64

Comment 145 Michael J. Kidd 2015-02-26 20:29:26 UTC
Note: the focaltech patch I supplied is direct from work by Mathias Gottschlag.

Comment 146 Luya Tshimbalanga 2015-03-29 00:29:28 UTC
Created attachment 1007865 [details]
dmesg with X550ZE

I just found this report and I am not sure if I should open a new bug report because the issue is related to ASUS X550 family. I have a newer version named X550ZE which is available in Canada featuring AMD Quad Core A10 where I encountered similar problem related to the Touchpad.
I include the needed attachment and the one with psmouse.proto=bare will follow shortly. 
Test was running on updated Fedora Design Suite 22 Beta TC5.

Comment 147 Luya Tshimbalanga 2015-03-29 00:45:05 UTC
Created attachment 1007880 [details]
dmesg with X550ZE detecting Elantech input

For some odd reason, the output mentioned "lost sync at 6 bytes" multiple times. I am reopening this report due to newer X550ZE.

Comment 148 Luya Tshimbalanga 2015-03-29 00:47:22 UTC
Created attachment 1007881 [details]
dmesg X550ZE with psmouse.proto=bare

Comment 149 Luya Tshimbalanga 2015-03-29 18:03:17 UTC
Created attachment 1008039 [details]
X550ZE hardware info

More hardware profile. Same laptop family but AMD based.

Comment 150 Zuyi Hu 2015-04-06 16:14:43 UTC
(In reply to Zuyi Hu from comment #130)
> Hi everyone, I have make a dkms version for linux-3.16 and linux-3.18, see
> https://github.com/hzy199411/psmouse-focaltech .but I get some warning from
> kernel,how can I slove the warnings.
> 
> here is the warning:
> 
> [ 1139.624300] psmouse serio1: focaltech: focaltech_reset
> [ 1144.040815] psmouse serio1: focaltech: focaltech_reset
> [ 1144.211551] ------------[ cut here ]------------
> [ 1144.211559] WARNING: CPU: 2 PID: 104 at
> /var/lib/dkms/psmouse/focaltech/build/src/psmouse-base.c:1090
> psmouse_switch_protocol+0x1a8/0x1e0 [psmouse]()
> [ 1144.211560] Modules linked in: psmouse(O) bnep bluetooth bbswitch(O)
> iptable_filter ipt_MASQUERADE iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4
> nf_nat_ipv4 nf_nat nf_conntrack ip_tables x_tables arc4 rt2800pci rt2800mmio
> rt2800lib fuse rt2x00pci rt2x00mmio rt2x00lib eeprom_93cx6 btrfs mac80211
> xor raid6_pq cfg80211 crc_ccitt uvcvideo videobuf2_vmalloc videobuf2_memops
> videobuf2_core v4l2_common videodev media rfkill snd_hda_codec_realtek
> snd_hda_codec_hdmi snd_hda_codec_generic joydev alx mei_me iTCO_wdt mdio
> iTCO_vendor_support mxm_wmi snd_hda_intel snd_hda_controller snd_hda_codec
> snd_hwdep snd_pcm snd_timer snd soundcore mei evdev i915 drm_kms_helper drm
> intel_gtt i2c_algo_bit lpc_ich thermal ac battery i2c_i801 i2c_core video
> pcspkr processor serio_raw button x86_pkg_temp_thermal intel_powerclamp
> [ 1144.211597]  kvm_intel kvm crc32_pclmul crc32c_intel ghash_clmulni_intel
> aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd microcode
> wmi vboxnetflt(O) vboxnetadp(O) pci_stub vboxpci(O) vboxdrv(O) usbip_host(C)
> usbip_core(C) coretemp nfs lockd sunrpc fscache msr ext4 crc16 mbcache jbd2
> hid_generic usbhid hid sd_mod sr_mod crc_t10dif crct10dif_common cdrom ahci
> libahci libata ehci_pci xhci_hcd ehci_hcd scsi_mod usbcore usb_common
> tuxonice_userui tuxonice_swap tuxonice_bio tuxonice_compress [last unloaded:
> psmouse]
> [ 1144.211622] CPU: 2 PID: 104 Comm: kworker/2:1 Tainted: G        WC O 
> 3.16.4-pf #1
> [ 1144.211623] Hardware name: ASUSTeK COMPUTER INC. X450JN/X450JN, BIOS 203
> 02/27/2014
> [ 1144.211629] Workqueue: events_long serio_handle_event
> [ 1144.211630]  0000000000000009 ffff880222cb7c68 ffffffff814e7638
> 0000000000000000
> [ 1144.211632]  ffff880222cb7ca0 ffffffff810539cd ffff8800954e7a00
> ffffffffa00e4280
> [ 1144.211634]  ffff88021e3c2800 0000000000000000 0000000000000000
> ffff880222cb7cb0
> [ 1144.211636] Call Trace:
> [ 1144.211642]  [<ffffffff814e7638>] dump_stack+0x4d/0x6f
> [ 1144.211644]  [<ffffffff810539cd>] warn_slowpath_common+0x7d/0xa0
> [ 1144.211646]  [<ffffffff81053aaa>] warn_slowpath_null+0x1a/0x20
> [ 1144.211649]  [<ffffffffa00d5b98>] psmouse_switch_protocol+0x1a8/0x1e0
> [psmouse]
> [ 1144.211651]  [<ffffffffa00d6725>] psmouse_connect+0x1d5/0x2e0 [psmouse]
> [ 1144.211653]  [<ffffffff813a01f6>] serio_driver_probe+0x36/0x50
> [ 1144.211657]  [<ffffffff81377740>] driver_probe_device+0x90/0x3f0
> [ 1144.211659]  [<ffffffff81377b6b>] __driver_attach+0x8b/0x90
> [ 1144.211661]  [<ffffffff81377ae0>] ? __device_attach+0x40/0x40
> [ 1144.211663]  [<ffffffff8137569b>] bus_for_each_dev+0x6b/0xb0
> [ 1144.211665]  [<ffffffff813771de>] driver_attach+0x1e/0x20
> [ 1144.211668]  [<ffffffff813a000d>] serio_handle_event+0x17d/0x230
> [ 1144.211671]  [<ffffffff8106e828>] process_one_work+0x168/0x450
> [ 1144.211673]  [<ffffffff8106f1cb>] worker_thread+0x6b/0x550
> [ 1144.211675]  [<ffffffff8106f160>] ? init_pwq.part.26+0x10/0x10
> [ 1144.211677]  [<ffffffff8107504b>] kthread+0xdb/0x100
> [ 1144.211680]  [<ffffffff81074f70>] ? kthread_create_on_node+0x180/0x180
> [ 1144.211684]  [<ffffffff814ee46c>] ret_from_fork+0x7c/0xb0
> [ 1144.211686]  [<ffffffff81074f70>] ? kthread_create_on_node+0x180/0x180
> [ 1144.211687] ---[ end trace 979bee5da65d6ede ]---
> [ 1144.286943] input: PS/2 FocalTech FocalTech Touchpad as
> /devices/platform/i8042/serio1/input/input23

Comment 151 Zuyi Hu 2015-04-06 16:37:02 UTC
I am sorry to click reply button by accident, how can I delete or edit my comment?

Comment 152 Josh Boyer 2015-04-10 18:06:05 UTC
Closing this back out.  The X550ZE is tracked in another bug.


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