20.04/18.04 IdeaPad 515are05 - elan觸摸板不工作

分享于 

6分钟阅读

ubuntu

  简体

问题:

我昨天买了一台联想IdeaPad 515are05,并安装了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



elants_i2c i2c-ELAN0001:00: unknown packet 0e 00 04 03

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




答案1:

我找到了解决方案,到Ideapad 5-15ARE05:触摸屏不工作 | 联想论坛,现在,工作正常了。

问题是内核驱动程序发生了一些错误,为了解决这个问题,你必须安装一个主线内核,并自己配置它。

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


sudo apt-get install libncurses-dev flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf



然后,通过kernel.org下载kernel 5.6 .x或5.7 .x (x可以是任意整数,我使用了5.7.1,它已经在5.6.14和5.7.0 -rc7上进行了测试)源代码。

提取.tar.gz文件所有内容。

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

执行sudo make menuconfig,并导航到Device Drivers → Input device support → Touchscreens → Elan eKTH I2C。

通过按回车键将星号更改为m,然后键入m

之后,使用左右箭头将底部的选定选项更改为"保存",然后按Enter键。然后保存为.config (默认)。

在同一个目录中,执行以下命令:

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

x更改为CPU拥有的线程数量。

这需要一些时间,完成后,确保你的电脑将启动新的内核,为此,请执行:

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

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

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

 
sudo update-grub



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


答案2:

一个更简单的解决方案是:将"blacklist elants_i2c"添加到/etc/modprobe.d/unneeded-modules.conf(必须创建它),然后保存并重新启动。Vendor=04f3 Product=3140 Version=0100


答案3

不能将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>



有一个比编译内核更快的方法,只需创建一个如下所示的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



,并按如下方式创建/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



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


chmod +x /usr/local/bin/touchpadfix


sudo systemctl daemon-reload


sudo systemctl enable --now touchpadfix.service



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



IDE  触摸  Touchpad