FS#40921 - [linux] Synaptics touchpad doesn't work correctly

Attached to Project: Arch Linux
Opened by Tomi Leppänen (Tomin) - Saturday, 21 June 2014, 05:27 GMT
Last edited by Tobias Powalowski (tpowa) - Wednesday, 13 August 2014, 07:48 GMT
Task Type Bug Report
Category Kernel
Status Closed
Assigned To Tobias Powalowski (tpowa)
Thomas Bächler (brain0)
Architecture All
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 13
Private No

Details

Description:
With linux 3.15.1-1 Synaptihs touchpad doesn't use Synaptics drivers. If I run synclient I get this warning:
$ synclient
Couldn't find synaptics properties. No synaptics driver loaded?
$
I can't do scrolling (two-finger, side, circular, ...). My touchscreen works just fine (Dell XPS 13 9333).

If I blacklist i2c_hid as suggested in the wiki [1] and on a forum thread [2], I will not get touchscreen or touchpad input. Neither of them works.

[1] https://wiki.archlinux.org/index.php/Touchpad_Synaptics#Laptops_with_touchscreen_.26_touchpad
[2] https://bbs.archlinux.org/viewtopic.php?pid=1419078

Additional info:
* package version(s)
- linux 3.15.1-1 (from testing)
- xf86-input-synaptics 1.8.0-1 -
* config and/or log files etc.
- None that I know of, except blacklisting i2c_hid for testing of course

Steps to reproduce:
Upgrade linux to 3.15.1-1 (from 3.14.*). Test. Blacklist i2c_hid. Test.
This task depends upon

Closed by  Tobias Powalowski (tpowa)
Wednesday, 13 August 2014, 07:48 GMT
Reason for closing:  Fixed
Additional comments about closing:  3.16
Comment by Tomi Leppänen (Tomin) - Saturday, 21 June 2014, 05:31 GMT
Almost forgot. From lspci output:
Bus 001 Device 002: ID 06cb:0af8 Synaptics, Inc.
If you need more verbose output, just ask.
Comment by Dustin (8chronos8) - Saturday, 21 June 2014, 08:46 GMT
"Packages: Extra" I think this should go to Kernel.
Having the same Problem (on DELL XPS 13 (9333), too). In I2c-hid mode the device doesn't identify it self properly so it is only recognised as mouse not Trackpad. (wicht makes it very hard to use)
By blacklisting I2c-hid it gets prpperly recognised as "SynPS/2 Synaptics TouchPad" (xinput output). With the new Kernel this doesn't happen anymore.
And therefore no device at all is detected.

Can it be related to "readd dell_rbu module" ?(just had a look at the change log.)
Comment by Tomi Leppänen (Tomin) - Saturday, 21 June 2014, 13:32 GMT
I just noticed that the touchscreen actually keeps working if I rmmod i2c_hid. Touchpad stops working. 'lshw -c input' output below:
$ sudo lshw -c input
*-usb:0
description: Human interface device
product: Synaptics Large Touch Screen
vendor: SYNAPTICS
physical id: 3
bus info: usb@1:3
version: 0.01
capabilities: usb-2.00
configuration: driver=usbhid maxpower=144mA speed=12Mbit/s
$
I didn't find anything about touchpad from lshw output.
Comment by Tomi Leppänen (Tomin) - Saturday, 21 June 2014, 13:56 GMT
Okay, I was wrong blacklisting i2c_hid doesn't actually disable the touchscreen and it also doesn't enable touchpad features anymore but disables it completely.
Comment by Tomi Leppänen (Tomin) - Tuesday, 24 June 2014, 21:01 GMT
I tried to bisect linux to track down the problem. I'm not sure I found the cause though but here is my log anyway, I hope it's useful:
git bisect start '--' 'drivers/hid/' 'drivers/i2c/' 'drivers/input/'
# bad: [a798c10faf62a505d24e5f6213fbaf904a39623f] Linux 3.15-rc2
git bisect bad a798c10faf62a505d24e5f6213fbaf904a39623f
# good: [455c6fdbd219161bd09b1165f11699d6d73de11c] Linux 3.14
git bisect good 455c6fdbd219161bd09b1165f11699d6d73de11c
# bad: [e24d0d399b2fce71b627043e900ef28283850482] HID: core: do not scan constant input report
git bisect bad e24d0d399b2fce71b627043e900ef28283850482
# good: [65ab2fc479fa8554e26d6d1726a4ebe6f29a73be] Merge branch 'for-3.15/sony' into for-3.15/hid-core-ll-transport-cleanup
git bisect good 65ab2fc479fa8554e26d6d1726a4ebe6f29a73be
# good: [fa1054a29b21e4c932b5c93def600149451cec32] Merge branches 'for-3.15/multitouch', 'for-3.15/sony' and 'for-3.15/uhid' into for-linus
git bisect good fa1054a29b21e4c932b5c93def600149451cec32
# bad: [c70929147a10fa4538886cb23b934b509c4c0e49] Merge tag 'sound-3.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
git bisect bad c70929147a10fa4538886cb23b934b509c4c0e49
# good: [89c8ae73459443eabfd7f24b4379ddb9248f1ee9] Merge tag 'asoc-v3.15-3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-next
git bisect good 89c8ae73459443eabfd7f24b4379ddb9248f1ee9
# bad: [165f5fd04aa898fa7dbe4fbe2819cf80453d3bb9] Merge branches 'pm-qos', 'pm-domains' and 'pm-drivers'
git bisect bad 165f5fd04aa898fa7dbe4fbe2819cf80453d3bb9
# good: [71d821fdaec08afcbfb3cf258c0d64ea0e336ff3] PM / QoS: Add type to dev_pm_qos_add_ancestor_request() arguments
git bisect good 71d821fdaec08afcbfb3cf258c0d64ea0e336ff3
# good: [d983f93328041f85e884a586810a67528ae59945] Merge branch 'acpi-pci-hotplug'
git bisect good d983f93328041f85e884a586810a67528ae59945
# first bad commit: [165f5fd04aa898fa7dbe4fbe2819cf80453d3bb9] Merge branches 'pm-qos', 'pm-domains' and 'pm-drivers'

I can't work on this problem later this week but I'll get back to it next week.
Comment by Roelof Rietbroek (Strawpants) - Wednesday, 25 June 2014, 09:56 GMT
Same problem here on the XPS13 9333. From what I understand the touchpad is not a usb device (touchscreen is, and is working fine), so I'm afraid we're mixing up things here.
in /proc/bus/input/devices I found the touchpad (for the working 3.14 kernel):

I: Bus=0011 Vendor=0002 Product=0007 Version=01b1
N: Name="SynPS/2 Synaptics TouchPad"
P: Phys=isa0060/serio1/input0
S: Sysfs=/devices/platform/i8042/serio1/input/input5
U: Uniq=
H: Handlers=event9 mouse1
B: PROP=5
B: EV=b
B: KEY=e520 610000 0 0 0 0
B: ABS=660800011000003

So it seems like the touchpad is hooked onto the isa bridge? (Admittingly I'm playing the expert here, but have no real clue what I'm talking about)

Since the isa stuff is loaded with the lpc_ich module I had a look in the kernel logs and found
for the 3.15 kernel (not working) it says:
Jun 25 09:16:33 pretslet kernel: lpc_ich 0000:00:1f.0: no hotplug settings from platform
Jun 25 09:16:33 pretslet kernel: lpc_ich 0000:00:1f.0: using default PCI settings

While for 3.14 (working) it says:
Jun 25 10:40:54 pretslet kernel: lpc_ich: Resource conflict(s) found affecting gpio_ich

I suspect this is related to the problem, although obviously we need someone who knows what he's talking about (unlike me)
Comment by Matteo Poggi (PogMat) - Saturday, 28 June 2014, 14:10 GMT
I'm having exactly the same problem with my dell XPS13 (9333). I attach a file with dmesg in these situation
1) With 3.14.6-1 kernel (all works well)
2) With 3.15.2-1 kernel (i2c_hid blacklisted)
2) With 3.15.2-1 kernel (no blacklist)

   dmesg (138.8 KiB)
Comment by Awad Mackie (firesock) - Sunday, 29 June 2014, 17:41 GMT
Hit this problem, for me blacklisting i2c_hid was causing no touchpad at all, but touchscreen carried on working. Removing the blacklist allows hid_generic to pick up the touchpad (no advanced features), and hid_multitouch carries on picking up the touchscreen. (Tested this by modprobing in/out and the corresponding things stopped working and back with correct dmesg entries)

I think https://bugzilla.redhat.com/show_bug.cgi?id=1048314#c5 is implying that https://github.com/torvalds/linux/commit/55e71edb81b2b45273e7b284cce13ff24bde846f is causing things to stop working without i2c_hid.

The previous bug and https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1218973/comments/61 onwards sort of keep an eye on the new module needed for i2c touchpads.

The temporary version (see previous links) can be built from here https://github.com/bentiss/hid-rmi and has been accepted upstream for 3.16 kernel inclusion: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9fb6bf02e3ad04c20edb8e46536ce3eeda32c736
Comment by Michael Cohen (Gnurdux) - Monday, 30 June 2014, 21:02 GMT
I now have both touchpad and touchscreen working on 3.15. What I did was install that hid-rmi driver (I've attached a sketchy PKGBUILD for that in case anyone else wants to do it) and also put extra dependencies in modprobe.d:

softdep hid_rmi pre: hid_multitouch
softdep i2c_hid pre: hid_rmi


If hid_rmi loads before hid_multitouch, it stops the touchscreen from working, while i2c_hid needs to load after it to make the touchpad work.
Comment by Tomi Leppänen (Tomin) - Tuesday, 01 July 2014, 14:54 GMT
This indeed works but wouldn't it make sense to include those modprobe configs to the package? Btw now the touchpad is listed in xinput output as "DLL060A:00 06CB:2734" but it works as it should and synclient works too. Do we need to rebuild hid-rmi every time the kernel is upgraded? Although we don't need to do that for too long as hid_rmi is included already in 3.16.
Comment by Michael Cohen (Gnurdux) - Tuesday, 01 July 2014, 16:16 GMT
The package uses the extramodules directory, so it shouldn't need to be recompiled for any 3.15 kernel. I also put a dependency on linux<3.16, which I hope should mean it will give some kind of error or be automatically removed once Linux gets upgraded to 3.16 (rather than blocking the upgrade or something; I don't actually know much about how pacman works).

I didn't include the modprobe configs in the package because I'm guessing that they'll still be needed after 3.16 comes out (since I don't know what the cause is, this could be wrong; maybe it's just a consequence of the backport).
Comment by Tomi Leppänen (Tomin) - Tuesday, 01 July 2014, 16:26 GMT
I built linux 3.16-rc3 today and indeed it doesn't need that config. hid_rmi is loaded and works even without it.

$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ DLL060A:00 06CB:2734 id=9 [slave pointer (2)]
⎜ ↳ SYNAPTICS Synaptics Large Touch Screen id=12 [slave pointer (2)]
...

$ lsmod |grep hid
hid_generic 1217 0
hid_multitouch 9721 0
usbhid 41187 0
hid_rmi 8694 0
i2c_hid 11163 0
hid 97340 5 i2c_hid,hid_multitouch,hid_generic,hid_rmi,usbhid
mac_hid 3273 0
usbcore 192472 8 btusb,uvcvideo,ehci_hcd,ehci_pci,usbhid,usbnet,smsc75xx,xhci_hcd
i2c_core 41648 9 drm,i915,i2c_i801,i2c_hid,i2c_designware_platform,drm_kms_helper,i2c_algo_bit,v4l2_common,videodev

I actually already got a kernel panic (apparently) with this rc3 but I don't have any logs because it didn't show any info (the computer just froze). I don't think it was related to this but how would I know.
Comment by Michael Cohen (Gnurdux) - Tuesday, 01 July 2014, 16:30 GMT
The config isn't needed to get hid_rmi to load (udev does this automatically) it's to constrain the order in which things load. On 3.15, what I specifically see is that if hid_rmi loads before hid-multitouch, the touchscreen doesn't work at all. If it loads after i2c_hid, the touchpad has no Synaptics features (like hid_rmi wasn't loaded at all).

Are both of these problems fixed by 3.16?
Comment by Tomi Leppänen (Tomin) - Tuesday, 01 July 2014, 17:46 GMT
Well, afaik they are fixed. synclient works as it should and touchscreen works fine. Is there a better way to check it?
Btw, I found this from git logs: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ba391e5a5ac6697b8bcae8c0d01439cb765d9ef8

The only thing I noticed (but I don't know if that was the case with 3.15 + hid_rmi) is that if I try to click with three fingers and one of my fingers is on the area reserved for left mouse button I'll get click on the right mouse button instead of middle button click. I hope that wasn't too confusing explanation... But my point is now I must put all my three fingers on the top part of the touchpad to make a three finger click (middle button click).
Comment by Michael Cohen (Gnurdux) - Tuesday, 01 July 2014, 17:53 GMT
That sounds like they're fixed, and that commit sounds relevant (I guess the git repository I built from is out of date).

I'm not seeing that 3-finger click problem. I do often get a right click if all three of the fingers are on the _right_ side and one of them is on the bottom area though.
Comment by Ondřej G. (nemamradfazole) - Monday, 07 July 2014, 03:04 GMT
I don't know if this is related, but when I run "synclient TouchpadOff=1", buttons of my touchpad still work when I accidentally press them (and I don't believe it was like this in the past), just the area is disabled.
Comment by Tomi Leppänen (Tomin) - Monday, 07 July 2014, 12:21 GMT
Weird... On 3.16-rc3 if I run synclient TouchpadOff=1 it does absolutely nothing. I didn't affect my touchpad or touchscreen at all. Maybe I should test that on 3.15 + hid_rmi.
Comment by Clayton Craft (craftyguy) - Friday, 08 August 2014, 06:12 GMT
Are we doomed to stay on <3.15 in order to have a functioning touchpad/screen? It's not clear if anyone has been able to work around (or resolve) the issue with newer kernels, is that correct?
Comment by Michael Cohen (Gnurdux) - Friday, 08 August 2014, 06:14 GMT
clayton: actually 3.16 or higher apparently Just Works. You can install the 3.16 kernel from Arch testing right now and give it a try.
Comment by Clayton Craft (craftyguy) - Friday, 08 August 2014, 06:21 GMT
Ah, thanks Michael, I must have missed that! I had tried one of the 3.16 RCs a while back and had the same issue, but I recall that synaptics had a few driver changes that made it into 3.16.. could this have had something to do with the issue being magically resolved? I'll give the 3.16 in testing a shot right now
Comment by Michael Cohen (Gnurdux) - Friday, 08 August 2014, 06:42 GMT
It's the hid-rmi driver. Actually I should mention: if you have i2c_hid blacklisted, you need to un-blacklist it now.
Comment by Michael Cohen (Gnurdux) - Saturday, 09 August 2014, 19:54 GMT
It's the hid-rmi driver. Actually I should mention: if you have i2c_hid blacklisted, you need to un-blacklist it now.

Loading...