#993903 xfce4-session: After resuming from suspend, the synaptic touchpad was no longer working

Package:
xfce4-session
Source:
xfce4-session
Description:
Xfce4 Session Manager
Submitter:
Wirawan Purwanto
Date:
2021-10-22 17:33:02 UTC
Severity:
important
#993903#5
Date:
2021-09-07 22:23:45 UTC
From:
To:
Dear Maintainer,

My laptop is running stock Debian 10 with up-to-date software,
and no custom kernel or such modifications.
I am using the stock XFCE packages provided by Debian.
I notice that at random times (not quite sure the context of the
happenings, i.e. the precise cause of the issue), the synaptic
touchpad was no longer working after the laptop was suspended to RAM
then resumed.

Note: I file this bug against "xfce4-session" initially because I do
not know which package may cause the issue.

Desktop: XFCE, under Debian 10
Hardware: Lenovo Thinkpad T450s
Screen-saver: xscreensaver
(It has light-locker installed but not running)

After resume from suspend, the mouse was locked.
Clicking works, but the mouse would not move.

The last time this happened, the sequence of events was as follows:

1) the computer was completely connected to external USB mouse and keyboard

2) the computer was suspended using "xfce4-session-logout --suspend"

3) the peripheral devices were removed

4) the computer was resumed

Upon resumption, the mouse no longer moves according to the synaptic
touchpad's input.
But pressing the mechanical buttons (left/right buttons) worked.

I am not 100% confident if the external device being removed when
sleeping was the cause of the touchpad not working.

At first I thought this was a hardware error.
But today I diagnosed the situation with "libinput debug-events",
the movements of finger on the touchpad were registered, like:

    event12  POINTER_MOTION    +4.68s        0.00/ -0.48 ( +0.00/ -1.00)
    event12  POINTER_MOTION    +4.70s        0.48/  0.00 ( +1.00/ +0.00)
    event12  POINTER_MOTION    +4.70s        0.00/ -1.04 ( +0.00/ -2.00)
    event12  POINTER_MOTION    +4.71s        0.00/ -0.52 ( +0.00/ -1.00)
    event12  POINTER_MOTION    +4.74s       -0.38/  0.00 ( -1.00/ +0.00)
    event12  POINTER_MOTION    +4.75s        0.00/ -0.38 ( +0.00/ -1.00)
    event12  POINTER_MOTION    +4.76s       -0.48/  0.00 ( -1.00/ +0.00)
    event12  POINTER_MOTION    +4.77s       -1.03/  0.00 ( -2.00/ +0.00)

Which means, the hardware was fine, and the hardware driver was fine too.
But for some reason the events was ignored by the desktop or the GUI.
Or was the touchpad input grabbed by a program--a screen saver??

This laptop has been running on Debian 10 since April 2021.
The issue only happened a few times.
Usually, when this issue happened, I could put the laptop through one
more suspend/resume cycle, then the touchpad became responsive again.
Which is annoying but not too bad.

But with the latest system reboot, the issue happened again only within 2-3
suspend/resume cycles from the boot-up.
This was "the last time this issue happened" again as described in
detail above.
But this time, the touchpad never became responsive again, despite the
"libinput" program showed activites from the hardware while my finger
was moving on the touchpad.
This is now counterproductive, since I am treating the OS as a
"server OS", i.e. I expect to rarely reboot the system so that I don't
have to restart all the open windows and documents.

PS: I will wait for responses from the community for a while before
rebooting the current OS.  I am doing so to keep this system running
in this erroneous state so that you can get whatever diagnostics
needed from this buggy state, if at all possible.

Thanks,
Wirawan

#993903#10
Date:
2021-09-25 16:29:35 UTC
From:
To:
Ok, I found the solution. With the "xinput" command, I got the following output:

/ Virtual core pointer                             id=2    [master pointer  (3)]
|   +--> Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
|   +--> HID 062a:0000                             id=13   [slave  pointer  (2)]
|   +--> Synaptics TM3053-004                      id=12   [slave  pointer  (2)]
\ Virtual core keyboard                            id=3    [master keyboard (2)]
    +--> Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    +--> Power Button                              id=6    [slave  keyboard (3)]
    +--> Video Bus                                 id=7    [slave  keyboard (3)]
    +--> Sleep Button                              id=8    [slave  keyboard (3)]
    +--> Integrated Camera: Integrated C           id=9    [slave  keyboard (3)]
    +--> AT Translated Set 2 keyboard              id=10   [slave  keyboard (3)]
    +--> ThinkPad Extra Buttons                    id=11   [slave  keyboard (3)]

then the "xinput --list-props 12" command gives:

Device 'Synaptics TM3053-004':
    Device Enabled (154):    1
    Coordinate Transformation Matrix (156):    1.000000, 0.000000,
0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (286):    1
    Device Accel Constant Deceleration (287):    2.500000
    Device Accel Adaptive Deceleration (288):    1.000000
    Device Accel Velocity Scaling (289):    12.500000
    Synaptics Edges (290):    77, 1863, 57, 1005
    Synaptics Finger (291):    25, 30, 0
    Synaptics Tap Time (292):    180
    Synaptics Tap Move (293):    97
    Synaptics Tap Durations (294):    180, 180, 100
    Synaptics ClickPad (295):    1
    Synaptics Middle Button Timeout (296):    0
    Synaptics Two-Finger Pressure (297):    282
    Synaptics Two-Finger Width (298):    7
    Synaptics Scrolling Distance (299):    44, 44
    Synaptics Edge Scrolling (300):    0, 0, 0
    Synaptics Two-Finger Scrolling (301):    1, 0
    Synaptics Move Speed (302):    1.000000, 1.750000, 0.090457, 0.000000
    Synaptics Off (303):    1
    Synaptics Locked Drags (304):    0
    Synaptics Locked Drags Timeout (305):    5000
    Synaptics Tap Action (306):    0, 0, 0, 0, 1, 3, 2
    Synaptics Click Action (307):    1, 3, 2
    Synaptics Circular Scrolling (308):    0
    Synaptics Circular Scrolling Distance (309):    0.100000
    Synaptics Circular Scrolling Trigger (310):    0
    Synaptics Circular Pad (311):    0
    Synaptics Palm Detection (312):    0
    Synaptics Palm Dimensions (313):    10, 200
    Synaptics Coasting Speed (314):    20.000000, 50.000000
    Synaptics Pressure Motion (315):    30, 160
    Synaptics Pressure Motion Factor (316):    1.000000, 1.000000
    Synaptics Grab Event Device (317):    0
    Synaptics Gestures (318):    1
    Synaptics Capabilities (319):    1, 0, 0, 1, 1, 1, 0
    Synaptics Pad Resolution (320):    20, 20
    Synaptics Area (321):    0, 0, 0, 0
    Synaptics Soft Button Areas (322):    970, 0, 870, 0, 0, 0, 0, 0
    Synaptics Noise Cancellation (323):    11, 11
    Device Product ID (278):    1739, 0
    Device Node (277):    "/dev/input/event7"

Wait! Why the "Synaptics Off" value (property 303) is 1?? I turned
that off: "xinput set-prop 12 303 0"  -- and voila, the trackpad
worked again (mouse movement & taps).

So, the problem is solved! BUT there is a lingering question. Which
program turned off the touchpad and then not turn it on again? Here is
my theory: In the "Mouse and Touchpad" setting, I have the "Disable
touchpad while typing" option checked. I set a shortcut key to suspend
the laptop, calling "xfce4-session-logout -s" . Once this shortcut
combination was invoked, the suspend action began immediately, yet
there was not enough time for the touchpad to be re-enabled. As a
result, the trackpad was stuck in the "disabled" position even after
resuming from sleep.

So this should be filed as a bug with the XFCE4 settings daemon, I
think (xfce4-settings). The bugfix should be fairly easy, I suppose,
but it will require a hook that is invoked when the computer going to
sleep: when the touchpad is supposed to be disabled only temporarily,
it should be re-enabled upon resumption from sleep.

Wirawan

#993903#15
Date:
2021-10-22 17:06:55 UTC
From:
To:
Hi Wirawan,

could you check with a recent xfce4-settings then? Stable has 4.16.2 now.

Regards,