IdeaPad 5 15are05 - elan 触摸板在 20.04 和 18.04 上都不起作用

Kel*_*uma 8 touchpad lenovo ideapad elantech 20.04

我昨天买了一台联想 IdeaPad 5 15are05 并在上面安装了 Ubuntu 20.04。问题是,触摸板不起作用。

我也尝试过 18.04 甚至 Debian 10,但它唯一适用的操作系统是 Windows。

我浏览了许多论坛,但没有发现对我有帮助的内容。但是,我确实找到了一些命令,我​​想您会发现这些输出很有趣

cat /proc/bus/input/devices

I: Bus=0018 Vendor=0000 Product=0000 Version=0000
N: Name="Elan Touchscreen"
P: Phys=
S: Sysfs=/devices/platform/AMDI0010:01/i2c-1/i2c-ELAN0001:00/input/input4
U: Uniq=
H: Handlers=mouse0 event4 
B: PROP=2
B: EV=b
B: KEY=400 0 0 0 0 0
B: ABS=661800001000003
Run Code Online (Sandbox Code Playgroud)

尽管上面写着“触摸屏”,但我知道这是我的触摸板。我怎么知道这个?好吧,当我使用 进入终端ctrl+alt+f3并尝试使用我的触摸板时,它会输出以下内容:

elants_i2c i2c-ELAN0001:00: unknown packet 0e 00 04 0303 意味着我正在触摸它。该值在不同的操作中改变,例如,它在“释放”触摸板时变为 01。

这意味着触摸板列在 ELAN0001 下,“触摸屏”也列在其下。我不认为它说它是触摸屏有什么奇怪的,因为它们非常相似。

xinput 输出这个:

? Virtual core pointer                      id=2    [master pointer  (3)]
?   ? Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
?   ? NEWMEN1500 Mouse Consumer Control         id=13   [slave  pointer  (2)]
?   ? NEWMEN1500 Mouse                          id=15   [slave  pointer  (2)]
? Virtual core keyboard                     id=3    [master keyboard (2)]
    ? Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ? Power Button                              id=8    [slave  keyboard (3)]
    ? AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ? Video Bus                                 id=7    [slave  keyboard (3)]
    ? Power Button                              id=6    [slave  keyboard (3)]
    ? NEWMEN1500 Mouse Consumer Control         id=14   [slave  keyboard (3)]
    ? NEWMEN1500 Mouse                          id=12   [slave  keyboard (3)]
    ? Integrated Camera: Integrated C           id=9    [slave  keyboard (3)]
    ? Ideapad extra buttons                     id=10   [slave  keyboard (3)]
Run Code Online (Sandbox Code Playgroud)

触摸板应该列在虚拟核心指针下,但事实并非如此。

我真的很想知道如何解决这个问题,因为我需要触摸板才能工作,而且我不想购买新的笔记本电脑,所以请帮助我!

the*_*l89 8

似乎不可能将elants_i2c驱动程序列入黑名单,因为它是 Ubuntu 的内置内核模块:

stefano@stefano-IdeaPad-5-15ARE05:~$ modinfo elants-i2c
name:           elants_i2c
filename:       (builtin)
license:        GPL
description:    Elan I2c Touchscreen driver
author:         Scott Liu <scott.liu@emc.com.tw>
Run Code Online (Sandbox Code Playgroud)

所以有一种比编译内核更快的方法。只需创建一个 SystemD 单元,如下所示:

stefano@stefano-IdeaPad-5-15ARE05:~$ cat /etc/systemd/system/touchpadfix.service 
[Unit]
Description=Fix touchpad issue by binding correct driver

[Service]
ExecStart=/usr/local/bin/touchpadfix
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

并按/usr/local/bin/touchpadfix如下方式创建文件

stefano@stefano-IdeaPad-5-15ARE05:~$ cat  /usr/local/bin/touchpadfix
#!/bin/bash
modprobe i2c_hid
echo "i2c-ELAN0001:00" > /sys/bus/i2c/drivers/elants_i2c/unbind
echo "i2c-ELAN0001:00" > /sys/bus/i2c/drivers/i2c_hid/bind
Run Code Online (Sandbox Code Playgroud)

然后使其可执行,使用以下命令启用和启动单元:

chmod +x /usr/local/bin/touchpadfix
sudo systemctl daemon-reload
sudo systemctl enable --now touchpadfix.service
Run Code Online (Sandbox Code Playgroud)

和触摸板应该立即开始工作!

来源:https : //wiki.archlinux.org/index.php/Lenovo_IdeaPad_5_15are0,它在这篇文章中为我们提供了解除绑定修复和dl3it用户https://bugzilla.kernel.org/show_bug.cgi?id=207759#c17


Kel*_*uma 6

我找到了解决方案,在Ideapad 5-15ARE05上对dl3it 大喊大叫:触摸屏不工作 | 联想论坛。(注意:它说的是触摸屏,但我猜这只是触摸板的名称。它工作正常。)

问题是内核对驱动程序做了一些错误的处理。要解决此问题,您必须安装主线内核并自行配置。

首先,通过在命令行上执行以下命令来安装依赖项:

sudo apt-get install libncurses-dev flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf
Run Code Online (Sandbox Code Playgroud)

然后,从源代码(通过 kernel.org)下载内核 5.6.x 或 5.7.x(x 可以是任何整数,我使用的是 5.7.1,并且已经在 5.6.14 和 5.7.0-rc7 上进行了测试)。进入kernel.org 后,单击[tarball]您想要的内核。

像处理任何其他.tar.gz文件一样提取所有内容。

然后,移动到命令行中的linux-5.6.xorlinux-5.7.x目录。

执行sudo make menuconfig并导航到设备驱动程序?输入设备支持 ? 触摸屏?Elan eKTH I2C 触摸屏

在那里,m通过按 Enter 键然后输入m.

之后,使用左右箭头将底部的选定选项更改为“保存”并点击Enter。然后,您将希望将其另存为.config(它应该默认为)。

现在仍然在同一目录中,执行以下命令:

sudo make -jx && sudo make modules_install -jx && sudo make install -jx

(更改x您的 CPU 拥有的线程数量。省略此选项将使这需要很长时间。)

这将需要一些时间,但完成后,您需要确保您的 PC 将在新内核上启动。为此,请执行:

sudo update-initramfs -c -k <kernel-version>

(更改<kernel-version>为您刚刚安装的内核版本,例如5.7.1。)

然后,通过执行以下命令修复 grub 配置:

sudo update-grub
Run Code Online (Sandbox Code Playgroud)

然后重新启动,您的触摸板应该可以正常工作!

注意:我使用过但之前没有提到的网站: