触摸板检测为“PS/2 Logitech 滚轮鼠标”(Dell XPS 15,Ubuntu 20.04)

触摸板检测为“PS/2 Logitech 滚轮鼠标”(Dell XPS 15,Ubuntu 20.04)

编辑: 正如结束语中提到的,这原来是触摸板硬件问题。更换的触摸板导致内核硬件检测失败,在我安装 Windows 10 后,我发现操作系统以完全相同的方式检测到了新硬件(通用鼠标,加上无法加载的 I2C_HID 设备驱动程序)。第二次更换硬件解决了这个问题。

我的戴尔 XPS 15 (9500) 将其触摸板检测为“PS/2 Logitech 滚轮鼠标”,因此触摸板选项不会出现在默认 Ubuntu 桌面环境的设置中,也不会出现在 KDE 的 Plasma(我通常使用)中。触摸板确实可以工作,但我无法使用它来滚动或启用其他手势,也无法禁用点击功能,也无法在打字时禁用它(这是一件大事,因为这款触摸板是戴尔制造的规模巨大)。

我的情况可能有点特殊,因为当我第一次安装 Ubuntu 时,触摸板支持开箱即用,选项运行完美。不幸的是,触摸板有一个已知的硬件缺陷(称为“摆动”),技术人员上门进行保修更换。更换的触摸板没有硬件缺陷,但可能是具有不同驱动程序支持的新型号。(在我的 dmesg 日志中,旧触摸板显示为 elantech。)

当我跑步时xinput list我看到了这个:

$ 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)]

因此,唯一的指针设备是 Logitech(而且我没有连接外部鼠标)。当我运行 时sudo libinput debug-events,该鼠标设备是event3

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

当我的手指在鼠标垫上移动时,会创造出许多这样的线条:

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

这证实了 PS/2 Logitech Wheel Mouse 实际上是我的新型触摸板。

我迄今所做的事情

我花了几个小时来解决这个问题,尝试了很多种解决方案,包括其他发行版和本网站其他地方的建议。但这里有一个简化的列表:

  1. 检查了 BIOS。那里没有触摸板专用设置。
  2. 尝试了可启动的 USB 棒。我使用了 Ubuntu 20.04 和候选版本 21.04。从客户操作系统运行时,两者都无法正确识别我的触摸板。行为相同。
  3. 安装了主线和 OEM 内核。在主线中,我尝试了 5.11.12 内核和 5.12.0 候选发布内核(当前版本为 5.8.0)。我还尝试了 linux-oem-20.04 和 linux-oem-20.04b 软件包,它们分别安装了内核版本 5.6.0-1052-oem 和 5.10.0-1021-oem。这些设备的检测和行为均未发生任何变化。
  4. 已安装xserver-xorg-input-synaptics(并且已删除)。
  5. 调整了 中的启动选项/etc/default/grub。内容如下:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

我用如下组合替换了那些行(并且在某些东西设置为 0 的情况下,我也尝试了 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. 尝试了各种modprobe命令,这些命令帮助其他人解决此类问题,包括modprobe -rv psmouse完全禁用触摸板并modprobe psmouse恢复它。

  2. 为 libinput 创建了一个新的设置文件/usr/share/X11/xorg.conf.d/99-touchpad.conf(使用 99 来覆盖其他设置)并用以下配置填充它:

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

这并没有改变什么,但是我简单地尝试了一个Driver设置synaptics,这完全禁用了触摸板,所以我更改了MatchProduct选项的字符串以包含一些无意义的文本,并且触摸板在重新启动时再次开始工作,所以这基本上证实了我的配置确实正在用于这个设备。

/var/log/syslog我注意到这在启动过程中会产生影响:

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.

看起来,即使我在设备上设置了触摸板选项,但根据 udev,其“鼠标”状态阻止了它们的实现。

我曾短暂地Driver将该配置中的选项设置为synaptics,这导致触摸板无法工作,并导致出现一条日志条目,提示“ PS/2 Logitech Wheel Mouse: Synaptics driver unable to detect protocol

  1. 我已经安装了xserver-xorg-input-synaptics,但xserver-xorg-input-multitouch无济于事。

我找到了很多解决类似问题的建议,但都没能解决。一个有趣的方法是运行以下命令:

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

这会导致触摸板立即显示为 PS/2 Elantech 触摸板,但行为不会改变。

我应该补充一点,因为这是一个常见的故障排除步骤,我的笔记本电脑不是双启动的,所以我无法检查 Windows 中的驱动程序,并且重新安装 Windows 并不是一件容易的事(戴尔的说明涉及使用非功能性 URL 下载 ISO)。

有没有办法强制将设备设置为触摸板?这可能是内核错误吗?

相关内容