ELAN 触摸板无法在装有 Ubuntu 16.04 的 Lenovo IdeaPad 上使用

ELAN 触摸板无法在装有 Ubuntu 16.04 的 Lenovo IdeaPad 上使用

最近我买了一台联想 IdeaPad(英特尔 i7 第 10 代)。我在上面安装了 Ubuntu 16.04,但是触摸板对我来说根本不起作用!另外,最初我尝试安装 Ubuntu 18.04 并升级到最新内核,但不仅触摸板无法工作,而且图形也无法正常工作,因此我最终决定恢复使用 16.04。
我没有检查 Windows 上的触摸板,因为我买了一台 DOS 机器,并在其上安装了 Ubuntu。
触摸板并不是我的笔记本电脑上唯一在 Ubuntu 中无法工作的硬件,但现在我们只关注它。

通过阅读一些资料,我发现许多新笔记本电脑的触摸板都存在问题,主要是 ElanTech 隐藏式触摸板。在我看来,我的问题与这篇文章类似:ELAN 触摸板无法在搭载 Ubuntu 18.04 的联想 Thinkbook 上使用

另外,根据这篇文章中的信息:联想 IdeaPad 330 触摸板不工作,问题似乎在于我的 ELAN 触摸板的 id 没有在内核中列出,所以 Ubuntu 根本无法识别它!

关于我的系统: uname -srv给出:

Linux 4.15.0-74-generic #83~16.04.1-Ubuntu

xinput -list给出:

⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Optical Mouse                id=9    [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ Integrated Camera: Integrated C           id=8    [slave  keyboard (3)]
    ↳ Ideapad extra buttons                     id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]

请注意,Ubuntu 不能识别任何触摸板!
通过运行,sudo acpidump | grep -C3 -i elan我能够找到我的 ELAN id,即 0633,如下所示:

 27AA0: 59 53 0B DC 07 53 52 58 4F 0C 10 00 01 06 01 70  YS...SRXO......p
 27AB0: 47 4E 55 4D 0C 10 00 01 06 49 4E 54 31 70 49 4E  GNUM.....INT1pIN
 27AC0: 55 4D 0C 10 00 01 06 49 4E 54 32 A0 25 93 54 50  UM.....INT2.%.TP
 27AD0: 54 59 01 70 0D 45 4C 41 4E 30 36 33 33 00 5F 48  TY.p.ELAN0633._H
 27AE0: 49 44 70 0A 15 42 41 44 52 70 01 48 49 44 32 A4  IDp..BADRp.HID2.
 27AF0: 00 A0 27 93 54 50 54 59 0A 02 70 0D 53 59 4E 41  ..'.TPTY..p.SYNA
 27B00: 32 42 36 31 00 5F 48 49 44 70 0A 2C 42 41 44 52  2B61._HIDp.,BADR

显然,可以通过重新编译包含文件中的此 id 代码的内核来解决此问题elan_i2c_core.c,但我不想弄乱内核!

还有其他方法可以解决这个问题吗?
如果没有,请帮我提交错误报告。

答案1

因此,最终我设法让触摸板在 Ubuntu 18.04 内核版本上运行:5.3.0-46-generic感谢此链接上的评论: https://www.reddit.com/r/linuxquestions/comments/f9h0q4/touchpad_issue_lenovo_s14515iil/

基本上需要做的是:

  1. 打开文件/etc/default/grub进行编辑,例如运行

    sudoedit /etc/default/grub
    
  2. 在行首添加GRUB_CMDLINE_LINUX_DEFAULT: ,"i8042.nopnp=1 pci=nocrs"内容如下:

    GRUB_CMDLINE_LINUX_DEFAULT="i8042.nopnp=1 pci=nocrs"
    

    如果双引号之间还有其他参数,那么保留它们也许没问题。

  3. 保存文件并退出

  4. 运行此命令来更新 GRUB 配置:

    sudo update-grub
    
  5. 重启

答案2

这对我适用于 Ideapad3 17IIL05:

sudo vi /etc/default/grub

更新以下几行:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pci=nocrs"
GRUB_CMDLINE_LINUX="initcall_blacklist=elants_i2c_driver_init"

保存文件并运行:

sudo update-grub

答案3

我在联想 81WE IdeaPad 3 15IIL05 上安装了内核 5.19,问题就解决了

相关内容