4

Edit: This turned out to be a touchpad hardware issue, as mentioned in a closing comment. Something about the replacement touchpad caused kernel hardware detection to fail, and after I installed Windows 10 I discovered that OS detected the new-but-bad hardware in exactly the same way (generic mouse, plus an I2C_HID device driver that fails to load). A second hardware replacement resolved the issue.

My Dell XPS 15 (9500) detects its touchpad as a "PS/2 Logitech Wheel Mouse," so touchpad options don't appear in the settings in the default Ubuntu desktop environment, nor in KDE's Plasma (which I usually use). The touchpad does work, but I can't use it to scroll or enable other gestures, and I can't disable tap-to-click, or disable it while typing (a big deal, because Dell made this touchpad aggressively large).

My situation might be a little unique because when I first installed Ubuntu, touchpad support worked out of the box and the options worked perfectly. Unfortunately the touchpad had a known hardware defect (referred to as "wobble") and a tech visited for a warranty replacement. The replacement touchpad lacks the hardware defect, but is likely a new model with different driver support. (In my dmesg logs, the old touchpad showed up as an elantech.)

When I run xinput list I see this:

$ xinput list               
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ PS/2 Logitech Wheel Mouse                 id=15   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Video Bus                                 id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Integrated_Webcam_HD: Integrate           id=9    [slave  keyboard (3)]
    ↳ Integrated_Webcam_HD: Integrate           id=10   [slave  keyboard (3)]
    ↳ Intel HID events                          id=11   [slave  keyboard (3)]
    ↳ Intel HID 5 button array                  id=12   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                          id=13   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=14   [slave  keyboard (3)]

So the only pointer device is the Logitech (and I don't have an external mouse attached). When I run sudo libinput debug-events, that mouse device is event3:

-event3   DEVICE_ADDED     PS/2 Logitech Wheel Mouse         seat0 default group10 cap:p left scroll-nat scroll-button

Moving my finger across the mousepad creates lots of lines like this:

 event3   POINTER_MOTION   +5.729s        0.62/ -0.31 ( +2.00/ -1.00)

That confirms that the PS/2 Logitech Wheel Mouse is actually my new touchpad.

Things I've done so far

I've spent hours on this and tried many, many combinations of solutions, including advice from other distros and from elsewhere on this site. But here's an abdridged list:

  1. Checked the BIOS. There are no touchpad-specific settings there.
  2. Tried a bootable USB stick. I used the Ubuntu 20.04 one, as well as the release candidate 21.04. Neither correctly recognized my touchpad while running from the guest OS. Behavior was the same.
  3. Installed mainline and OEM kernels. From mainline, I tried both a 5.11.12 kernel and a 5.12.0 release candidate kernel (the current version is a 5.8.0). I also tried the linux-oem-20.04 and linux-oem-20.04b packages, which installed kernel versions 5.6.0-1052-oem and 5.10.0-1021-oem respectively. The device detection and behavior didn't change for any of these.
  4. Installed xserver-xorg-input-synaptics (and also removed it).
  5. Tweaked boot options in /etc/default/grub. Here is what was there:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

I replaced those lines with combinations like these (and in cases where something was set to 0 I also tried 1):

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i8042.reset i8042.nomux i8042.nopnp i8042.noloop"
GRUB_CMDLINE_LINUX=""
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash psmouse.proto=bare"
GRUB_CMDLINE_LINUX="i8042.reset i8042.nomux i8042.nopnp i8042.noloop"
GRUB_CMDLINE_LINUX_DEFAULT="psmouse.synaptics_intertouch=1 quiet splash"
GRUB_CMDLINE_LINUX=""
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX="i8042.nomux=1 i8042.reset psmouse.elantech_smbus=1"
GRUB_CMDLINE_LINUX_DEFAULT="i8042.nopnp=1 pci=nocrs quiet splash"
GRUB_CMDLINE_LINUX="i8042.nomux=1 i8042.reset psmouse.elantech_smbus=1"
  1. Tried various modprobe commands, which have helped others with this sort of issue, including modprobe -rv psmouse, which disables the touchpad entirely, and modprobe psmouse to restore it.

  2. Created a new settings file for libinput at /usr/share/X11/xorg.conf.d/99-touchpad.conf (with a 99 to override other settings) and filled it with this config:

Section "InputClass"
        Identifier      "replacement touchpad"
        #MatchIsTouchpad "off"
        MatchProduct    "PS/2 Logitech Wheel Mouse"
        MatchDevicePath "/dev/input/event*"
        Driver          "libinput"
        Option          "Tapping"               "False"
        Option          "TappingButtonMap"      "lrm"
        Option          "DisableWhileTyping"    "True"
        Option          "NaturalScrolling"      "True"
        Option          "NaturalScrolling"      "twofinger"
        Option          "ScrollMethod"          "twofinger"
        Option          "TappingDrag"           "False"
        Option          "TappingDragLock"       "False"
        Option          "AccelProfile"          "adaptive"
        Option          "AccelSpeed"            "0.1"
EndSection

This changed nothing but I briefly tried a Driver setting of synaptics and this disabled the touchpad entirely, so I changed the string for the MatchProduct option to include some nonsense text, and the touchpad started working again on reboot, so that basically confirmed for me that my config was indeed being used for this device.

I noticed that this has an effect in /var/log/syslog during boot:

Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (II) config/udev: Adding input device PS/2 Logitech Wheel Mouse (/dev/input/event3)
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (**) PS/2 Logitech Wheel Mouse: Applying InputClass "evdev pointer catchall"
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (**) PS/2 Logitech Wheel Mouse: Applying InputClass "libinput pointer catchall"
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (**) PS/2 Logitech Wheel Mouse: Applying InputClass "replacement touchpad"
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (II) Using input driver 'libinput' for 'PS/2 Logitech Wheel Mouse'
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (II) systemd-logind: got fd for /dev/input/event3 13:67 fd 57 paused 0
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (**) PS/2 Logitech Wheel Mouse: always reports core events
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (**) Option "Device" "/dev/input/event3"
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (**) Option "_source" "server/udev"
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (II) event3  - PS/2 Logitech Wheel Mouse: is tagged by udev as: Mouse
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (II) event3  - PS/2 Logitech Wheel Mouse: device is a pointer
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (II) event3  - PS/2 Logitech Wheel Mouse: device removed
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (**) Option "AccelSpeed" "0.1"
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (**) Option "AccelProfile" "adaptive"
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (**) Option "NaturalScrolling" "True"
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (**) Option "ScrollMethod" "twofinger"
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (**) Option "config_info" "udev:/sys/devices/platform/i8042/serio1/input/input4/event3"
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (II) XINPUT: Adding extended input device "PS/2 Logitech Wheel Mouse" (type: MOUSE, id 15)
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (EE) libinput: PS/2 Logitech Wheel Mouse: Failed to set scroll to twofinger
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (**) Option "AccelerationScheme" "none"
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (**) PS/2 Logitech Wheel Mouse: (accel) selected scheme none/0
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (**) PS/2 Logitech Wheel Mouse: (accel) acceleration factor: 2.000
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (**) PS/2 Logitech Wheel Mouse: (accel) acceleration threshold: 4
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (II) event3  - PS/2 Logitech Wheel Mouse: is tagged by udev as: Mouse
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (II) event3  - PS/2 Logitech Wheel Mouse: device is a pointer
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (EE) libinput: PS/2 Logitech Wheel Mouse: Failed to set scroll to twofinger
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (II) config/udev: Adding input device PS/2 Logitech Wheel Mouse (/dev/input/mouse0)
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (II) No input driver specified, ignoring this device.
Apr 11 11:01:11 <hostname> /usr/lib/gdm3/gdm-x-session[970]: (II) This device may have been added with another device file.

It looks like even though I set touchpad options on the device, its status as a "mouse" according to udev prevents their implementation.

I briefly had the Driver option in that config set to synaptics, which made the touchpad not work, and caused a log entry that said, PS/2 Logitech Wheel Mouse: Synaptics driver unable to detect protocol.

  1. I've installed xserver-xorg-input-synaptics and xserver-xorg-input-multitouch to no avail.

I've found a lot of advice for similar issues, but haven't been able to make any of them work. One fun on was running this command:

$ sudo sh -c 'echo -n "elantech" > /sys/bus/serio/devices/serio1/protocol'

That results in the touchpad immediately appearing as a PS/2 Elantech Touchpad, but the behavior doesn't change.

I should add, since it's a common troubleshooting step, that my laptop is not dual-boot, so I can't check the driver in Windows and reinstalling Windows is non-trivial (Dell's instructions involve downloading an ISO using a non-functional URL).

Is there a way to force the device to be a touchpad? Might this be a kernel bug?

10
  • Try sudo modprobe -rv psmouse Any changes?
    – nobody
    Apr 11, 2021 at 9:36
  • I've tried a few modprobe commands, and they haven't helped. When I run sudo modprobe -rv psmouse it echos rmmod psmouse, the cursor disappears, and I have no touchpad use. I can then sudo modprobe psmouse to make it come back, and it appears the same under the xinput list command. The behavior of the device is unchanged.
    – Ed Holden
    Apr 11, 2021 at 14:09
  • So, yeah, I think it would be lack of that particular touchpad detection in the kernel. I see you already tried latest mainline kernel and it didn't help. I think at this point you gotta create a report to the kernel. Yeah, it is pretty sad tech support replaced the older touchpad with something that lacks a proper driver, not sure what they were thinking.
    – Hi-Angel
    Apr 11, 2021 at 22:51
  • 1
    I've raised the following Ubuntu bug: bugs.launchpad.net/ubuntu/+bug/1923515. And I think I will call Dell, thanks. For one thing I'd like to inquire about reinstalling Windows (likely temporarily) and I can mention the driver issue. The main kernel site is pretty adamant about submitting a vendor bug, but it does say you can submit a kernel.org bug if you've tried the mainline kernel, so perhaps I'll do that.
    – Ed Holden
    Apr 12, 2021 at 22:19
  • 1
    And the kernel bug: bugzilla.kernel.org/show_bug.cgi?id=212661
    – Ed Holden
    Apr 12, 2021 at 23:15

0

You must log in to answer this question.

Browse other questions tagged .