AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 467199
Accepted
Rui F Ribeiro
Rui F Ribeiro
Asked: 2018-09-06 19:04:40 +0800 CST2018-09-06 19:04:40 +0800 CST 2018-09-06 19:04:40 +0800 CST

鼠标垫在联想 Thinkpad 中不起作用

  • 772

我在这里遇到了一个奇怪的问题——集成的突触鼠标/橡胶鼠标在 Linux 中不起作用。

集成鼠标/鼠标垫仅在 Windows 已首先激活它们时才起作用。我可以在 Linux 中进行多次重新启动,并且它们确实可以继续工作。只要笔记本没有断电,它们就会被识别。

如果笔记本耗尽所有电池,我只能在首先在 Windows 中启动时才能再次使用鼠标垫/鼠标。

因此,我可以在 Linux 运行时轻松重现错误并取出电池。这样,鼠标垫在我再次在 Windows 中启动之前不会被识别。因此,当硬件处于未知(初始化)状态时,开源驱动程序似乎无法识别设备。

我在 2016 Lenovo ThinkPad E560、i7-6500U CPU @ 2.50GHz、16GB RAM 和 SSD 磁盘中使用 Debian 9/Antix 17.1。

这台机器有一个双卡,但是我radeon.modeset=0在内核参数中停用了 radeon。所以相关参数为:

$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 520 (rev 07)

我的xserver-xorg相关软件包是:

xserver-xorg - 7.7+19
xserver-xorg-core - 1.19.2-1.0nosystemd2
xserver-xorg-input-libinput - 0.23.0-2
xserver-xorg-input-synaptics - 1.9.0-1+b1
xserver-xorg-video-intel - 2.99.917+git20161206-1

我已经尝试运行 Antix 存储库中存在的 Debian 内核, 4.10.5-antix.3-amd64-smp并且4.18.4-antix.1-amd64-smp症状没有任何变化;正如@StephenKitt 告诉我的那样,新版本的突触处理发生了变化。

我当前的内核参数是:

$ cat /proc/cmdline 
BOOT_IMAGE=/boot/vmlinuz-4.18.4-antix.1-amd64-smp root=UUID=00c17984-859f-4197-8bd8-b346ddd092bd ro iommu=1 intel_iommu=on iommu=pt ipv6.disable=1 intremap=no_x2apic_optout radeon.modeset=0

我还遵循了一些在线建议,将 xorg 中的鼠标垫处理从 xserver-xorg-input-synaptics 更改为 xserver-xorg-input-libinput,安装后者,然后执行以下操作:

 cd /etc/X11/xorg.conf.d
 ln -s /usr/share/X11/xorg.conf.d/40-libinput.conf 

症状保持不变。

我还在 Windows 10 的设备管理器中查看了设备/驱动程序的名称,它是一个名为“Ultranav”的双鼠标鼠标垫/键盘橡胶。libinput-list-devices也将其命名为“AlpsPS/2 ALPS DualPoint TouchPad”。其他一些人也将这款鼠标 Elantech 称为其他联想型号。

我也安装libinput-tools了调试情况。有趣的是,libinput-list-devices在运行 Windows 之后会看到运行该命令的鼠标,而在它不存在之前。

我已经有了与内核团队一起填补 bug 的建议。

该怎么办?

制造商和型号的相关dmidecode数据为:

# dmidecode -s system-manufacturer
LENOVO
# dmidecode -s system-product-name
20EV000YPG
# dmidecode -s system-version
ThinkPad E560

libunput-list-devices启动 Windows 10 之前和之后的差异。

$ diff libunput-list-devices-before_windows.txt after-windows.txt
2c2
< Kernel:           /dev/input/event8
---
> Kernel:           /dev/input/event10
20c20
< Kernel:           /dev/input/event10
---
> Kernel:           /dev/input/event12
38c38
< Kernel:           /dev/input/event7
---
> Kernel:           /dev/input/event9
128c128
< Kernel:           /dev/input/event18
---
> Kernel:           /dev/input/event20
163,164c163,164
< Device:           ThinkPad Extra Buttons
< Kernel:           /dev/input/event9
---
> Device:           AlpsPS/2 ALPS DualPoint Stick
> Kernel:           /dev/input/event6
165a166,202
> Seat:             seat0, default
> Capabilities:     pointer 
> Tap-to-click:     n/a
> Tap-and-drag:     n/a
> Tap drag lock:    n/a
> Left-handed:      disabled
> Nat.scrolling:    disabled
> Middle emulation: disabled
> Calibration:      n/a
> Scroll methods:   *button
> Click methods:    none
> Disable-w-typing: n/a
> Accel profiles:   flat *adaptive
> Rotation:         n/a
> 
> Device:           AlpsPS/2 ALPS DualPoint TouchPad
> Kernel:           /dev/input/event7
> Group:            7
> Seat:             seat0, default
> Size:             97.50x53.87mm
> Capabilities:     pointer 
> Tap-to-click:     disabled
> Tap-and-drag:     enabled
> Tap drag lock:    disabled
> Left-handed:      disabled
> Nat.scrolling:    disabled
> Middle emulation: disabled
> Calibration:      n/a
> Scroll methods:   *two-finger edge 
> Click methods:    *button-areas clickfinger 
> Disable-w-typing: enabled
> Accel profiles:   none
> Rotation:         n/a
> 
> Device:           ThinkPad Extra Buttons
> Kernel:           /dev/input/event11
> Group:            8
debian synaptic
  • 1 1 个回答
  • 2724 Views

1 个回答

  • Voted
  1. Best Answer
    Rui F Ribeiro
    2018-09-06T19:04:40+08:002018-09-06T19:04:40+08:00

    有趣的是,在搜索这个 bug 的变体,包括 Lenovo、Alps 和 Ultranav,我在 Arch Linux wiki libinput的帖子中发现了一篇建议内核参数的文章

    根本没有检测到触摸板

    注意:不是 libinput 问题。Touchpad_Synaptics#No_Multi-touch_in_some_Elantech_touchpads 中链接了对参数的解释,这比说“尝试其中一些”要好得多。

    如果根本没有检测到触摸板设备并将其显示为设备,则可能的解决方案可能是使用这些内核参数中的一个或多个。

    i8042.noloop i8042.nomux i8042.nopnp i8042.reset

    然后我做了一些测试,发现在我的情况下,将内核参数添加i8042.reset到文件中并运行就足够GRUB_CMDLINE_LINUX_DEFAULT了:/etc/default/grub

    update-grub2
    

    之后,我取出电池尝试复制错误。机器死机重启Linux后,Ultranav/Elantech内置鼠标已经被识别并开始工作,无需先启动Windows 10。

    我会说这是一个内核错误。

    与其他笔记本类似,Lenovo Thinkpad 需要添加到 Linux 内核中的 i8042 设备重置列表中,其中有一个需要 i8042 芯片组重置的家庭机器列表,以便持续检测其 Elantech TouchPad。

    我在找到这些错误条目后发现了这个后来的要求 输入:i8042 - 将联想 LaVie Z 添加到 i8042 重置列表和输入:i8042:将联想 ThinkPad L460 添加到 i8042 重置列表

    从 Linux 内核源代码的视觉检查来看,将 Lenovo ThinkPad E560 添加到 i8042 重置列表的源代码也没有出现在最新的 4.19-rc2 内核源代码中。

    所以为了添加它,我写了一个简单的 diff/patch 可以用来代替 grub 中的 i8042.reset 内核参数:

    --- drivers/input/serio/i8042-x86ia64io.h.old   2018-09-06 04:53:36.460003164 +0100
    +++ drivers/input/serio/i8042-x86ia64io.h   2018-09-06 04:57:16.833465129 +0100
    @@ -655,6 +655,14 @@
                DMI_MATCH(DMI_PRODUCT_NAME, "P65xRP"),
            },
        },
    +   {
    +                /* Lenovo ThinkPad E560 */
    +                .matches = {
    +                        DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
    +                        DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad E560"),
    +                },
    +        },
    +
        { }
     };
    

    PS。根据@StephenKitt 的建议,我尝试将这篇文章作为 Linux 内核错误报告发送到 [email protected]

    • 5

相关问题

  • astyle 不会更改源文件格式

  • 接收有关全新 Debian 的电子邮件

  • Synaptic 包管理器文件设置

  • Debian Stretch:libgs_plugin_systemd-updates.so 中的 gnome-software 段错误

  • 如何在拼音输入法中输入ü?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve