Bug 344958

Summary: No touchpad found
Product: [Applications] systemsettings Reporter: Rex Dieter <rdieter>
Component: kcm_touchpadAssignee: Plasma Bugs List <plasma-bugs>
Status: RESOLVED FIXED    
Severity: normal CC: ace, be.0, d.dan, damikope, danofsatx, facorread, hzwhuang, kevin.kofler, rajeeshknambiar, robby.engelmann
Priority: NOR    
Version: 5.17.5   
Target Milestone: ---   
Platform: Fedora RPMs   
OS: Linux   
Latest Commit: Version Fixed In: 5.4.0
Sentry Crash Report:
Attachments: Fix touchpad backend initialization
Fix touchpad backend initialization-v2

Description Rex Dieter 2015-03-08 18:34:47 UTC
Testing F22 (alpha) and installed kcm_touchpad-5.1.95 (which includes all subsequent commits up to 
e267c5fd548198b4cbc064168191c13777ea54d0 add missing libinputproperties.c

before it was migrated to plasma-desktop repo (but I didn't notice any significant commits since then).

Anyway, trying to configure my touchpad, the kcm reports:  No touchpad found

I suspect this may be some problem with the libinput support recently added.

Reproducible: Always
Comment 1 Rajeesh K V 2015-03-08 20:32:51 UTC
Could you check either xorg-x11-drv-libinput or xorg-x11-drv-synaptics is installed? This error message is given if none of the drivers could be found.
Is the F22 alpha image available to test?
Comment 2 Rex Dieter 2015-03-08 21:11:25 UTC
I have synaptics (but no libinput), I'll retest after installing libinput driver.

As far as f22 alpha goes, formal/public release will be in a couple of days, otherwise, you can use:
http://alt.fedoraproject.org/pub/alt/stage/22_Alpha_RC3/Live/x86_64/
Comment 3 Rex Dieter 2015-03-08 21:20:35 UTC
OK, It appears to work after I installed xorg-x11-drv-libinput (with xorg-x11-drv-synaptics also installed).

I'll do more testing with different combinations.
Comment 4 Kevin Kofler 2015-03-08 21:28:09 UTC
So this means the new libinput support code broke support for the legacy synaptics driver, right? (As I understand it, both drivers are supposed to work, so something's afoul.)
Comment 5 Rex Dieter 2015-03-08 21:36:34 UTC
removed xorg-x11-drv-libinput (and libinput), and cannot reproduce the original problem (it works now with only xorg-x11-drv-synaptics installed, and I do not get "No touchpad found" error.)

Wierd.
Comment 6 Rajeesh K V 2015-03-08 21:41:15 UTC
I vaguely remember similar issue. That was with xorg-x11-drv-libinput-0.3 version in F21, which had some bug.
XlibBackend::initialize() looks for "libinput Tapping Enabled" Atom and instantiates XlibLibinputBackend if it finds, otherwise XlibSynapticsBackend instantiated. There was some issue with this Atom and wrong backend gets initialized. But that should be fixed already.
Comment 7 Rex Dieter 2015-03-08 21:42:49 UTC
OK, by "fixed already" you mean fixed in  xorg-x11-drv-libinput ?

If so, maybe we can just close this report then.
Comment 8 Rajeesh K V 2015-03-09 08:47:04 UTC
Yes, fixed in xorg-x11-drv-libinput-0.4. But doesn't F22 have a higher version of the driver?
Comment 9 Rex Dieter 2015-04-10 16:23:36 UTC
This problem occurs when xorg-x11-drv-libinput is *not* installed, mind you.
Comment 10 Rex Dieter 2015-04-10 16:24:25 UTC
I and another user could reproduce it again today.
Comment 11 Rajeesh K V 2015-04-11 15:45:23 UTC
Could you provide some debug information?
Place breakpoints at XlibBackend::initialize(), XlibLibinputBackend::XlibLibinputBackend(),  XlibSynapticsBackend::XlibSynapticsBackend() and XlibBackend::findTouchpad() in src/backend/x11/xlibbackend.cpp and check with xatom/condition is failing?
Comment 12 Rex Dieter 2015-04-13 13:31:31 UTC
I've not used gdb for much else than getting backtraces before, I'll probably need some hand-holding here.  I'll go ask around, and get back to you.
Comment 13 Robby Engelmann 2015-04-13 14:29:23 UTC
same here with plasma 5.2.95 in openSuse.
xf86-input-synaptics 1.8.2 installed
xf86-input-libinput 0.8.0 installed
xf86-input-synaptics 1.8.2 installed
libinput10 0.13 installed
libinput-udev 0.13 installed
Comment 14 Rajeesh K V 2015-04-15 09:09:08 UTC
Here is the steps to help with debugging:
  1 debuginfo-install kcm_touchpad (or equivalent in non-Fedora systems)
  2 gdb kcmshell5
  3 b XlibSynapticsBackend::XlibSynapticsBackend(QObject *)
  4 b XlibLibinputBackend::XlibLibinputBackend(QObject *)
  5 b XlibBackend::initialize(QObject *)
  6 r kcm_touchpad
  8 (Inspect libinput_prop_tapping.atom(), condition at src/backends/x11/xlibbackend.cpp:326)

Based on the condition at step 8, either Libinput driver or Synaptics driver is instantiated. If both are installed, Libinput should be instantiated. Please check these and let me know if you need additional help.
Comment 15 Symeon Huang 2015-04-30 16:25:29 UTC
The problem persists here after I upgraded to Plasma 5.3.0.

Fedora 22, Plasma 5.3.0.

It was okay when xorg-x11-drv-libinput was there. but after I removed it and had my laptop restarted, it complains "No touchpad found". Note I can confirm xorg-x11-drv-synaptics is already installed.
Comment 16 Rajeesh K V 2015-05-01 21:12:59 UTC
Could you try to nuke the config and check if the issue is still reproducible?
$ rm -f ~/.config/touchpadrc
logout, login back.
Comment 17 Symeon Huang 2015-05-01 21:22:28 UTC
(In reply to Rajeesh K Nambiar from comment #16)
> Could you try to nuke the config and check if the issue is still
> reproducible?
> $ rm -f ~/.config/touchpadrc
> logout, login back.

No it doesn't work. The issue persists.
Comment 18 KDamian 2015-05-04 11:23:06 UTC
Arch, Plasma 5.3, doesn't work either;
Comment 19 KDamian 2015-05-04 11:35:08 UTC
Edit to #18: fixed by installing xf86-input-libinput
Comment 20 KDamian 2015-05-04 11:55:40 UTC
Edit to the last two: well, it kind of works, but just a few options (I cannot change speed, buttons and so on and so forth), so it is definitely not fixed.
Comment 21 Rex Dieter 2015-05-04 12:03:24 UTC
FYI, libinput has less features than (classic) synaptics, so it is expected that some features are not (yet) supported.
Comment 22 Dan Mossor 2015-06-20 00:40:17 UTC
First, there is no kcm_touchpad in Plasma 5. The correct command to get the debug packages installed is:

sudo debuginfo-install plasma-desktop

Following the steps in Comment 14, no useful output is produced on a system that has xorg-x11-drv-synaptics-1.8.2-2.fc22.x86_64 installed, but no xorg-x11-drv-libinput package installed. I will attempt again after reinstalling the libinput driver.

[dan@g55 ~]$ gdb kcmshell5
GNU gdb (GDB) Fedora 7.9.1-13.fc22
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from kcmshell5...Reading symbols from /home/dan/kcmshell5...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Missing separate debuginfos, use: dnf debuginfo-install kde-cli-tools-5.3.1-2.fc22.x86_64
(gdb) b XlibSynapticsBackend::XlibSynapticsBackend(QObject *)
Function "XlibSynapticsBackend::XlibSynapticsBackend(QObject *)" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (XlibSynapticsBackend::XlibSynapticsBackend(QObject *)) pending.
(gdb) b XlibLibinputBackend::XlibLibinputBackend(QObject *)
Function "XlibLibinputBackend::XlibLibinputBackend(QObject *)" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 2 (XlibLibinputBackend::XlibLibinputBackend(QObject *)) pending.
(gdb) b XlibBackend::initialize(QObject *)
Function "XlibBackend::initialize(QObject *)" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 3 (XlibBackend::initialize(QObject *)) pending.
(gdb)  r kcm_touchpad
Starting program: /usr/bin/kcmshell5 kcm_touchpad
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7fffdcc56700 (LWP 12634)]

Breakpoint 3, XlibBackend::initialize (parent=parent@entry=0x0) at ../../../../kcms/touchpad/src/backends/x11/xlibbackend.cpp:320
320     {
(gdb)(gdb) c
Continuing.

Breakpoint 2, XlibLibinputBackend::XlibLibinputBackend (this=0x889090, parent=0x0) at ../../../../kcms/touchpad/src/backends/x11/xlibbackend.cpp:271
271     XlibLibinputBackend::XlibLibinputBackend(QObject *parent) :
(gdb) c
Continuing.
[Thread 0x7fffdcc56700 (LWP 12634) exited]
[Inferior 1 (process 12628) exited normally]
Comment 23 Dan Mossor 2015-06-20 00:56:59 UTC
With xorg-x11-drv-libinput-0.11.0-1.fc22.x86_64 installed. Touchpad is found, but unconfigurable.

(gdb) r kcm_touchpad
Starting program: /usr/bin/kcmshell5 kcm_touchpad
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7fffdcc56700 (LWP 3902)]

Breakpoint 3, XlibBackend::initialize (parent=parent@entry=0x0) at ../../../../kcms/touchpad/src/backends/x11/xlibbackend.cpp:320
320     {
(gdb) c
Continuing.

Breakpoint 2, XlibLibinputBackend::XlibLibinputBackend (this=0x886d60, parent=0x0) at ../../../../kcms/touchpad/src/backends/x11/xlibbackend.cpp:271
271     XlibLibinputBackend::XlibLibinputBackend(QObject *parent) :
(gdb) c
Continuing.
[Thread 0x7fffdcc56700 (LWP 3902) exited]
[Inferior 1 (process 3898) exited normally]
(gdb)
Comment 24 Rajeesh K V 2015-06-20 18:38:29 UTC
Thanks for debugging attempt, but simply continuing steps wouldn't help :-)
I was able to reproduce this issue today and debug the case and now we have a possible cause to chase, with upstream.
Could you folks verify the output of "xlsatoms | grep -i tap" with just synaptics driver installed (i.e, without libinput driver)? You may need to install xorg-x11-utils package.
Comment 25 Rex Dieter 2015-06-20 18:43:10 UTC
with only synaptics (on my fedora 22 x86_64 laptop):

$ xlsatoms | grep -i tap
256     Synaptics Tap Time
257     Synaptics Tap Move
258     Synaptics Tap Durations
270     Synaptics Tap Action
551     libinput Tapping Enabled
Comment 26 Rex Dieter 2015-06-21 03:08:20 UTC
*** Bug 348328 has been marked as a duplicate of this bug. ***
Comment 27 Alexander Olofsson 2015-06-22 21:07:30 UTC
Same thing on my Sabayon x86_64 laptop, with only x11-drivers/xf86-input-synaptics-1.8.2 installed;

$ xlsatoms | grep -i tap
270     Synaptics Tap Time
271     Synaptics Tap Move
272     Synaptics Tap Durations
284     Synaptics Tap Action
518     libinput Tapping Enabled
$ kcmshell5 --version
kcmshell5 5.3.90
Comment 28 Rajeesh K V 2015-06-24 20:29:18 UTC
I have a potential fix. Fedora users please update the plasma-desktop package from the build here and report if it fixes the issue - http://koji.fedoraproject.org/koji/taskinfo?taskID=10197551
Comment 29 Rajeesh K V 2015-06-24 21:02:08 UTC
Created attachment 93325 [details]
Fix touchpad backend initialization

Patch against 5.3.1, fixing touchpad driver backend initialization.
Comment 30 Rajeesh K V 2015-06-25 09:00:14 UTC
Created attachment 93326 [details]
Fix touchpad backend initialization-v2

Updated patch.
Please try this patch and verify if it fixes the issue.
Comment 31 Be 2015-06-26 17:58:04 UTC
(In reply to Rajeesh K Nambiar from comment #28)
> I have a potential fix. Fedora users please update the plasma-desktop
> package from the build here and report if it fixes the issue -
> http://koji.fedoraproject.org/koji/taskinfo?taskID=10197551

Installing that package, removing xorg-x11-drv-libinput, and installing xorg-x11-drv-synaptics solved the issue. I can customize all the touchpad settings in the Control Panel again. Thank you.
Comment 32 Rajeesh K V 2015-06-27 11:58:27 UTC
Git commit 3f2e6bd31e0cd7355f95450cdc185e4d37ed2c16 by Rajeesh K Nambiar.
Committed on 27/06/2015 at 11:58.
Pushed by knambiar into branch 'master'.

Fix touchpad backend initialization.

Libinput driver, even when unistalled was leaving 'Libinput Tapping
Enabled' atom active (xlsatoms | grep -i tap). Mutter/Clutter/Gtk+ were
causing this, as noted in https://bugzilla.redhat.com/show_bug.cgi?
id=1199825. This caused the non-existent libinput backend initialization
resulting in 'No touchpad found' error even when synaptics driver was
installed.
Fix this by checking backend instantiation errors.
Related: bug 349214
REVIEW: 124172
FIXED-IN: 5.4.0

M  +13   -7    kcms/touchpad/src/backends/x11/xlibbackend.cpp

http://commits.kde.org/plasma-desktop/3f2e6bd31e0cd7355f95450cdc185e4d37ed2c16
Comment 33 Be 2015-06-28 17:21:37 UTC
Will this be in a bugfix 5.3.x release before Fedora 23?
Comment 34 Rajeesh K V 2015-06-28 17:23:48 UTC
This changes adds a couple of error messages requiring translations, so it will be available in 5.4.0 release.