<html>
<head>
<base href="https://bugs.freedesktop.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - Lenovo G50-45 ETPS/2 Elantech Touchpad strange behavior."
href="https://bugs.freedesktop.org/show_bug.cgi?id=103952">103952</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>Lenovo G50-45 ETPS/2 Elantech Touchpad strange behavior.
</td>
</tr>
<tr>
<th>Product</th>
<td>Wayland
</td>
</tr>
<tr>
<th>Version</th>
<td>unspecified
</td>
</tr>
<tr>
<th>Hardware</th>
<td>x86-64 (AMD64)
</td>
</tr>
<tr>
<th>OS</th>
<td>Linux (All)
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</td>
</tr>
<tr>
<th>Priority</th>
<td>medium
</td>
</tr>
<tr>
<th>Component</th>
<td>libinput
</td>
</tr>
<tr>
<th>Assignee</th>
<td>wayland-bugs@lists.freedesktop.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>soprwa@gmail.com
</td>
</tr></table>
<p>
<div>
<pre>Hello,
I am using Gentoo linux ~amd64 on Lenovo G50-45 netbook, libinput version 1.9.2
with xorg-server, openrc end eudev.
Touchpad on this machine is ETPS/2 Elantech Touchpad.
Dmesg:
<code>[ 5.299695] psmouse serio1: elantech: assuming hardware version 4
(with firmware version 0x594f03)
[ 5.315883] psmouse serio1: elantech: Synaptics capabilities query result
0x70, 0x15, 0x0a.
[ 5.331788] psmouse serio1: elantech: Elan sample query result 05, 20, 97
</code>
Sometimes it gets real freaky and unpredictable, as some "future" has been
turned on. During that "phase" when I'm trying to use touchpad pointer jumps
all over the screen and triggers clicks, totally random. Moreover I have
observed that it is enough just to hover finger over the touchpad (do not
touching its surface) to move the pointer. You have to wait couple of seconds
to tochpad comes down.
I have also measured its surface with calipers and real dimensions are 110x54mm
when reported by "libinput list-devices" - 96x47mm.
<code>Device: ETPS/2 Elantech Touchpad
Kernel: /dev/input/event9
Group: 7
Seat: seat0, default
Size: 96x47mm
Capabilities: pointer gesture
Tap-to-click: disabled
Tap-and-drag: enabled
Tap drag lock: disabled
Left-handed: disabled
Nat.scrolling: disabled
Middle emulation: n/a
Calibration: n/a
Scroll methods: *two-finger edge
Click methods: none
Disable-w-typing: enabled
Accel profiles: none
Rotation: n/a</code>
Output from "touchpad-edge-detector" command:
<code>eclipse /home/ja # touchpad-edge-detector 110x54 /dev/input/event9
Touchpad ETPS/2 Elantech Touchpad on /dev/input/event9
Move one finger around the touchpad to detect the actual edges
Kernel says: x [0..3082], y [0..1508]
Touchpad sends: x [50..3061], y [9..1500] /^C
Touchpad size as listed by the kernel: 96x47mm
User-specified touchpad size: 110x54mm
Calculated ranges: 3011/1491
Suggested udev rule:
# <Laptop model description goes here>
evdev:name:ETPS/2 Elantech
Touchpad:dmi:bvnLENOVO:bvrA2CN45WW(V2.13):bd08/04/2016:svnLENOVO:pn80E3:pvrLenovoG50-45:rvnLENOVO:rnLancer5B2:rvrNotDefined:cvnLENOVO:ct10:cvrLenovoG50-45:*
EVDEV_ABS_00=50:3061:27
EVDEV_ABS_01=9:1500:28
EVDEV_ABS_35=50:3061:27
EVDEV_ABS_36=9:1500:28</code>
Output from "libinput measure touchpad-pressure":
<code>libinput measure touchpad-pressure
Ready for recording data.
Pressure range used: 8:10
Palm pressure range used: 130
Place a single finger on the touchpad to measure pressure values.
Ctrl+C to exit
Sequence 926 pressure: min: 26 max: 34 avg: 30 median: 31 tags: down
Sequence 927 pressure: min: 30 max: 33 avg: 31 median: 31 tags: down
Sequence 928 pressure: min: 26 max: 35 avg: 30 median: 31 tags: down
Sequence 929 pressure: min: 30 max: 37 avg: 34 median: 35 tags: down
Sequence 930 pressure: min: 26 max: 37 avg: 31 median: 33 tags: down
Sequence 931 pressure: min: 11 max: 34 avg: 25 median: 27 tags: down
Sequence 932 pressure: min: 34 max: 44 avg: 39 median: 40 tags: down
Sequence 933 pressure: min: 25 max: 33 avg: 28 median: 29 tags: down
Sequence 934 pressure: min: 30 max: 35 avg: 33 median: 34 tags: down
Sequence 935 pressure: min: 30 max: 35 avg: 32 median: 33 tags: down
Sequence 936 pressure: min: 26 max: 27 avg: 26 median: 26 tags: down
Sequence 937 pressure: min: 29 max: 33 avg: 30 median: 31 tags: down
Sequence 938 pressure: min: 8 max: 33 avg: 21 median: 23 tags: down
Sequence 939 pressure: min: 33 max: 37 avg: 35 median: 35 tags: down
Sequence 940 pressure: min: 36 max: 41 avg: 38 median: 39 tags: down
Sequence 941 pressure: min: 37 max: 40 avg: 38 median: 39 tags: down
Sequence 942 pressure: min: 5 max: 31 avg: 18 median: 18 tags: down
Sequence 943 pressure: min: 10 max: 27 avg: 18 median: 19 tags: down
Sequence 944 pressure: min: 5 max: 37 avg: 22 median: 26 tags: down
Sequence 945 pressure: min: 31 max: 39 avg: 35 median: 36 tags: down
Sequence 946 pressure: min: 31 max: 35 avg: 33 median: 34 tags: down
Sequence 947 pressure: min: 29 max: 33 avg: 30 median: 31 tags: down</code>
I have fallowed by
<code><a href="https://wayland.freedesktop.org/libinput/doc/latest/touchpad_pressure.html#touchpad_pressure_hwdb">https://wayland.freedesktop.org/libinput/doc/latest/touchpad_pressure.html#touchpad_pressure_hwdb</a></code>
, and was trying to test settings with new thresholds i.e. 15:10, but:
<code>libinput measure touchpad-pressure --touch-thresholds=15:10
/dev/input/event9
libinput-measure: unrecognized option '--touch-thresholds=15:10'
Usage: libinput measure [--help] <feature> [/dev/input/event0]</code>
Than i was trying to manually apply rules editing
"/lib/udev/hwdb.d/90-libinput-model-quirks.hwdb" by:
<code>libinput:name:*ETPS/2 Elantech Touchpad*:dmi:*svnLENOVO:pn80E3:*
LIBINPUT_ATTR_PRESSURE_RANGE=15:10</code>
And "/lib/udev/hwdb.d/70-evdev.hwdb" by:
<code># Lenovo G50-45
evdev:name:ETPS/2 Elantech Touchpad:dmi:*svnLENOVO:*pvrLenovoG50-45*
EVDEV_ABS_00=11:3060:32
EVDEV_ABS_01=14:1502:32
EVDEV_ABS_35=11:3060:32
EVDEV_ABS_36=14:1502:32</code>
Unfortunately, after rebooting "udevadm test /sys/class/input/event9" reports"
<code>eclipse /home/ja # udevadm test /sys/class/input/event9
calling: test
version 3.2.5
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.
=== trie on-disk ===
tool version: 3
file size: 7635386 bytes
header size 80 bytes
strings 1927186 bytes
nodes 5708120 bytes
Load module index
timestamp of '/etc/udev/rules.d' changed
timestamp of '/lib/udev/rules.d' changed
timestamp of '/run/udev/rules.d' changed
Reading rules file: /lib64/udev/rules.d/10-dm.rules
Reading rules file: /lib64/udev/rules.d/11-dm-lvm.rules
Reading rules file: /lib64/udev/rules.d/13-dm-disk.rules
Reading rules file: /lib64/udev/rules.d/40-gentoo.rules
Reading rules file: /lib64/udev/rules.d/40-usb_modeswitch.rules
Reading rules file: /lib64/udev/rules.d/41-libsane.rules
Reading rules file: /lib64/udev/rules.d/50-udev-default.rules
Reading rules file: /etc/udev/rules.d/51-android.rules
Reading rules file: /lib64/udev/rules.d/60-block.rules
Reading rules file: /lib64/udev/rules.d/60-cdrom_id.rules
Reading rules file: /lib64/udev/rules.d/60-drm.rules
Reading rules file: /lib64/udev/rules.d/60-evdev.rules
Reading rules file: /lib64/udev/rules.d/60-persistent-alsa.rules
Reading rules file: /lib64/udev/rules.d/60-persistent-input.rules
Reading rules file: /lib64/udev/rules.d/60-persistent-storage-tape.rules
Reading rules file: /lib64/udev/rules.d/60-persistent-storage.rules
Reading rules file: /lib64/udev/rules.d/60-persistent-v4l.rules
Reading rules file: /lib64/udev/rules.d/60-sensor.rules
Reading rules file: /lib64/udev/rules.d/60-serial.rules
Reading rules file: /run/udev/rules.d/61-dev-root-link.rules
Reading rules file: /lib64/udev/rules.d/61-kde-bluetooth-rfkill.rules
Reading rules file: /lib64/udev/rules.d/64-btrfs.rules
Reading rules file: /lib64/udev/rules.d/65-kvm.rules
Reading rules file: /lib64/udev/rules.d/69-dm-lvm-metad.rules
Reading rules file: /lib64/udev/rules.d/69-libmtp.rules
Reading rules file: /lib64/udev/rules.d/70-mouse.rules
Reading rules file: /lib64/udev/rules.d/70-power-switch.rules
Reading rules file: /lib64/udev/rules.d/70-touchpad.rules
Reading rules file: /lib64/udev/rules.d/70-uaccess.rules
Reading rules file: /lib64/udev/rules.d/71-seat.rules
Reading rules file: /lib64/udev/rules.d/73-seat-late.rules
RUN{builtin}: 'uaccess' unknown /lib64/udev/rules.d/73-seat-late.rules:15
Reading rules file: /lib64/udev/rules.d/75-net-description.rules
Reading rules file: /lib64/udev/rules.d/75-probe_mtd.rules
Reading rules file: /lib64/udev/rules.d/77-mm-cinterion-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-dell-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-ericsson-mbm.rules
Reading rules file: /lib64/udev/rules.d/77-mm-haier-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-huawei-net-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-longcheer-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-mtk-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-nokia-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-pcmcia-device-blacklist.rules
Reading rules file: /lib64/udev/rules.d/77-mm-platform-serial-whitelist.rules
Reading rules file: /lib64/udev/rules.d/77-mm-simtech-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-telit-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-usb-device-blacklist.rules
Reading rules file:
/lib64/udev/rules.d/77-mm-usb-serial-adapters-greylist.rules
Reading rules file: /lib64/udev/rules.d/77-mm-x22x-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-zte-port-types.rules
Reading rules file: /lib64/udev/rules.d/78-sound-card.rules
Reading rules file: /lib64/udev/rules.d/80-drivers.rules
Reading rules file: /lib64/udev/rules.d/80-libinput-device-groups.rules
Reading rules file: /lib64/udev/rules.d/80-mm-candidate.rules
Reading rules file: /lib64/udev/rules.d/80-net-name-slot.rules
Reading rules file: /lib64/udev/rules.d/80-udisks2.rules
Reading rules file: /lib64/udev/rules.d/84-nm-drivers.rules
Reading rules file: /lib64/udev/rules.d/85-nm-unmanaged.rules
Reading rules file: /lib64/udev/rules.d/85-regulatory.rules
Reading rules file: /lib64/udev/rules.d/90-alsa-restore.rules
Reading rules file: /lib64/udev/rules.d/90-libinput-model-quirks.rules
Reading rules file: /lib64/udev/rules.d/90-network.rules
Reading rules file: /lib64/udev/rules.d/95-dm-notify.rules
Reading rules file: /lib64/udev/rules.d/95-upower-csr.rules
Reading rules file: /lib64/udev/rules.d/95-upower-hid.rules
Reading rules file: /lib64/udev/rules.d/95-upower-wup.rules
Reading rules file: /lib64/udev/rules.d/97-hid2hci.rules
Reading rules file: /lib64/udev/rules.d/99-fuse.rules
Reading rules file: /lib64/udev/rules.d/99-laptop-mode.rules
rules contain 393216 bytes tokens (32768 * 12 bytes), 32003 bytes strings
25996 strings (209886 bytes), 22466 de-duplicated (181414 bytes), 3531 trie
nodes used
IMPORT builtin 'input_id' /lib64/udev/rules.d/50-udev-default.rules:14
capabilities/ev raw kernel attribute: b
capabilities/abs raw kernel attribute: 661800011000003
capabilities/rel raw kernel attribute: 0
capabilities/key raw kernel attribute: e420 30000 0 0 0 0
properties raw kernel attribute: 1
test_key: checking bit block 0 for any keys; found=0
test_key: checking bit block 64 for any keys; found=0
test_key: checking bit block 128 for any keys; found=0
test_key: checking bit block 192 for any keys; found=0
GROUP 97 /lib64/udev/rules.d/50-udev-default.rules:30
IMPORT builtin 'hwdb' /lib64/udev/rules.d/60-evdev.rules:8
IMPORT builtin 'hwdb' returned non-zero
value '[dmi/id]modalias' is
'dmi:bvnLENOVO:bvrA2CN45WW(V2.13):bd08/04/2016:svnLENOVO:pn80E3:pvrLenovoG50-45:rvnLENOVO:rnLancer5B2:rvrNotDefined:cvnLENOVO:ct10:cvrLenovoG50-45:'
2 character(s) replaced
IMPORT builtin 'hwdb' /lib64/udev/rules.d/60-evdev.rules:17
IMPORT builtin 'hwdb' returned non-zero
value '[dmi/id]modalias' is
'dmi:bvnLENOVO:bvrA2CN45WW(V2.13):bd08/04/2016:svnLENOVO:pn80E3:pvrLenovoG50-45:rvnLENOVO:rnLancer5B2:rvrNotDefined:cvnLENOVO:ct10:cvrLenovoG50-45:'
2 character(s) replaced
IMPORT builtin 'hwdb' /lib64/udev/rules.d/60-evdev.rules:21
IMPORT builtin 'hwdb' returned non-zero
IMPORT builtin 'hwdb' /lib64/udev/rules.d/70-touchpad.rules:11
PROGRAM 'libinput-device-group
/sys/devices/platform/i8042/serio1/input/input6/event9'
/lib64/udev/rules.d/80-libinput-device-groups.rules:7
starting 'libinput-device-group
/sys/devices/platform/i8042/serio1/input/input6/event9'
'libinput-device-group
/sys/devices/platform/i8042/serio1/input/input6/event9'(out)
'11/2/e:isa0060/serio1'
'libinput-device-group /sys/devices/platform/i8042/serio1/input/input6/event9'
[26859] exit with return code 0
IMPORT 'libinput-model-quirks
/sys/devices/platform/i8042/serio1/input/input6/event9'
/lib64/udev/rules.d/90-libinput-model-quirks.rules:19
starting 'libinput-model-quirks
/sys/devices/platform/i8042/serio1/input/input6/event9'
'libinput-model-quirks /sys/devices/platform/i8042/serio1/input/input6/event9'
[26860] exit with return code 0
IMPORT builtin 'hwdb' /lib64/udev/rules.d/90-libinput-model-quirks.rules:30
IMPORT builtin 'hwdb' returned non-zero
value '[dmi/id]modalias' is
'dmi:bvnLENOVO:bvrA2CN45WW(V2.13):bd08/04/2016:svnLENOVO:pn80E3:pvrLenovoG50-45:rvnLENOVO:rnLancer5B2:rvrNotDefined:cvnLENOVO:ct10:cvrLenovoG50-45:'
2 character(s) replaced
IMPORT builtin 'hwdb' /lib64/udev/rules.d/90-libinput-model-quirks.rules:46
IMPORT builtin 'hwdb' /lib64/udev/rules.d/90-libinput-model-quirks.rules:50
IMPORT builtin 'hwdb' returned non-zero
handling device node '/dev/input/event9', devnum=c13:73, mode=0660, uid=0,
gid=97
preserve permissions /dev/input/event9, 020660, uid=0, gid=97
preserve already existing symlink '/dev/char/13:73' to '../input/event9'
created db file '/run/udev/data/c13:73' for
'/devices/platform/i8042/serio1/input/input6/event9'
ACTION=add
DEVNAME=/dev/input/event9
DEVPATH=/devices/platform/i8042/serio1/input/input6/event9
ID_BUS=i8042
ID_INPUT=1
ID_INPUT_HEIGHT_MM=47
ID_INPUT_TOUCHPAD=1
ID_INPUT_TOUCHPAD_INTEGRATION=internal
ID_INPUT_WIDTH_MM=96
LIBINPUT_ATTR_PRESSURE_RANGE=10:8
LIBINPUT_ATTR_RESOLUTION_HINT=31x31
LIBINPUT_DEVICE_GROUP=11/2/e:isa0060/serio1
MAJOR=13
MINOR=73
SUBSYSTEM=input
USEC_INITIALIZED=122435669
Unload module index</code>
Any help is appreciated.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>