如果你想让你的设备正常工作:

如果你想让你的设备正常工作:

我刚买了一台 IdeaPad 330 联想笔记本电脑。安装 Ubuntu 时,触摸板无法使用。我设法使用键盘上的 Tab、空格和 Enter 键成功安装了 Ubuntu。我以为安装后触摸板会正常工作,但没有成功。

有人知道怎么修复吗?它在 Windows 10 上运行良好。

答案1

截至 2018 年 8 月初,我能够让我的光标工作(ELAN 061C)——无需修补或从源代码编译内核——只需升级到4.18-rc7 主线构建

可以找到说明这里是 TecMint

答案2

一切希望都没有破灭!我已成功重新编译最新的 ubuntu 4.18.0 内核,并为 elan061C 触摸板添加了 ACPI id联想 330-15igm我现在拥有一个可以使用的触摸板。

由于内核驱动程序中没有 ACPI ID,因此无法在启动时检测到联想 330 系列的触摸板。Windows 将其识别为 Elan HID over i2c 设备,330 上的检测问题与此处提到的联想 320 笔记本电脑的问题类似:联想 Ideapad 320 - 触摸板不起作用

解决方案是修补内核,类似于这里所做的:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1700657

或者如此处所报道的:https://unix.stackexchange.com/questions/427566/touchpad-on-lenovo-v330-thinkpad-v-series-is-not-recognized/434655#434655

供参考:与 ubuntu 中的其他 elan 触摸板不同,我发现使用 i8042 选项修改启动参数对此触摸板没有任何影响。不要浪费你的时间。

许多 elan 触摸板 ACPI 设备 ID 仍然未出现在内核驱动程序源中elan_i2c_核心.c所以没有希望此时无需编写 dkms 模块(对我来说不起作用)或编译自定义内核即可获得正常工作的触摸板。

请查看您的输出,dmesg | grep i2c 看看dmesg | grep elan 是否检测到设备。我发现 ubuntu 16.04 的 stock 和 HWE 内核根本没有检测到 elan 设备或任何指针设备,这表明 16.04 内核中的 i2c 设备检测中“缺少”了某些东西。

安装 18.04 后能够看到 elan 设备:

user-Lenovo-ideapad-330-15IGM kernel: [    7.396065] i2c_hid i2c-ELAN061C:00: i2c-ELAN061C:00 supply vdd not found, using dummy regulator

但触摸板不工作或记录任何输入。

还有许多其他人也遇到过类似的问题,例如elan touchpad 太新了 获得主线内核支持。

如果你想让你的设备正常工作:

通过安装 acpidump: sudo apt install acpidump 并运行以下命令来查找您的 ACPI id:

sudo acpidump | grep -C3 ELAN

-C3告诉 grep 包含前面和后面的 3 行,如下所述:https://stackoverflow.com/questions/9081/grep-a-file-but-show-several-surrounding-lines

我的结果是:

  0E70: 5F 53 42 2E 47 50 4F 31 00 79 00 08 53 42 46 49  _SB.GPO1.y..SBFI
  0E80: 11 0E 0A 0B 89 06 00 15 01 3C 00 00 00 79 00 14  .........<...y..
  0E90: 46 07 5F 49 4E 49 00 A0 23 93 54 50 54 59 01 70  F._INI..#.TPTY.p
  0EA0: 0D 45 4C 41 4E 30 36 31 43 00 5F 48 49 44 70 0A  .ELAN061C._HIDp.
  0EB0: 15 42 41 44 52 70 01 48 49 44 32 A0 25 93 54 50  .BADRp.HID2.%.TP
  0EC0: 54 59 0A 02 70 0D 53 59 4E 41 32 42 34 38 00 5F  TY..p.SYNA2B48._
  0ED0: 48 49 44 70 0A 2C 42 41 44 52 70 0A 20 48 49 44  HIDp.,BADRp. HID

注意中间线上的ELAN061C!

检查 dmesg | grep i2c 和 dmesg | grep elan 的输出,看看是否检测到设备。

安装一个可以检测设备的内核,对我来说这是 4.17.4-041704-generic。

此 ACPI 设备 ID 仍未出现在内核驱动程序源中elan_i2c_核心.c所以没有希望此时无需编写 dkms 模块(对我来说不起作用)或编译自定义内核即可获得正常工作的触摸板。

使用这里最新的内核源代码:http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17.4/

使用最新的补丁对内核进行修补,并按照以下指南轻松进行编译: 如何应用内核补丁

除了在此处安装依赖项之外: https://help.ubuntu.com/community/Kernel/Compile 我还需要build-essential kernel-package fakeroot libncurses5-dev debhelper libssl-dev libudev-dev xz-utilsbison

在自定义步骤中,我编辑了v4.17.4/drivers/input/mouse/elan_i2c_core.c

在文件末尾附近的 elan_i2c_core.c 中添加以下几行(箭头是注释,不要将它们添加到文件中!)

     #ifdef CONFIG_ACPI static const struct acpi_device_id elan_acpi_id[] = {
    { "ELAN0000", 0 },
    { "ELAN0100", 0 },
    { "ELAN0600", 0 },
    { "ELAN0602", 0 },
    { "ELAN0605", 0 },
    { "ELAN0608", 0 },
    { "ELAN0609", 0 },
    { "ELAN060B", 0 },
    { "ELAN060C", 0 },
    { "ELAN0611", 0 },
    { "ELAN0612", 0 },
    { "ELAN0618", 0 },
    { "ELAN061C", 0 },      <-add this 
    { "ELAN061D", 0 },      <- and this for the lenovo 330 with the core i3
    { "ELAN1000", 0 },
    { } }; MODULE_DEVICE_TABLE(acpi, elan_acpi_id);
   #endif

安装新生成的 4.18.0-rc3-custom 内核(补丁更新了 4.17.4 源)后,我很高兴地报告触摸板在 Ubuntu 18.04 中可以很好地支持左键、右键单击和手势。

因人而异。

特别感谢德米特里·托罗科夫唐纳德·夏蒂

答案3

Ubuntu 18.04.2 开箱即支持此触摸板。

对于 18.04 用户,可以通过以下方式卸载 4.18 内核

sudo apt install linux-generic-hwe-18.04

答案4

Lenovo-ideapad-330-15IKB
Kernel: 4.15.0.30.32

触摸板完全不起作用。

手动下载并尝试安装4.18.0-041800rc7但每次都会出错。

安装了 UKUU 并寻找 4.18 但未得到。

继续说:

sudo ukuu --install-latest

它尝试安装 4.17 但是在第三个主要步骤上出现错误,前两个步骤均返回正常。

重新启动后仍运行 4.15。

继续运行:

sudo ukuu --install-latest

再次,这一次它完全成功完成,没有错误,并建议需要重新启动才能开始使用新内核。

已重新启动。

跑了过来4.17.14-041714-generic

我用手指轻触触摸板,只是为了好玩,现在它就可以正常工作了。多次重启后,触摸板就恢复正常了,轻触、滚动,一切都正常。

sudo acpidump | grep -C3 ELAN

返回:

  E040: 49 32 43 30 5B 82 4A 22 54 50 44 30 08 48 49 44  I2C0[.J"TPD0.HID
  E050: 32 00 08 53 50 45 44 00 08 42 41 44 52 00 14 42  2..SPED..BADR..B
  E060: 08 5F 49 4E 49 00 A0 23 93 54 50 54 59 01 70 0D  ._INI..#.TPTY.p.
  E070: 45 4C 41 4E 30 36 31 44 00 5F 48 49 44 70 0A 15  ELAN061D._HIDp..
  E080: 42 41 44 52 70 01 48 49 44 32 A0 25 93 54 50 54  BADRp.HID2.%.TPT
  E090: 59 0A 02 70 0D 53 59 4E 41 32 42 34 39 00 5F 48  Y..p.SYNA2B49._H
  E0A0: 49 44 70 0A 2C 42 41 44 52 70 0A 20 48 49 44 32  IDp.,BADRp. HID2
--
  E3B0: 54 4D 4C 32 39 35 32 00 5F 48 49 44 70 00 48 49  TML2952._HIDp.HI
  E3C0: 44 32 70 0A 4A 42 41 44 52 70 0C 80 1A 06 00 53  D2p.JBADRp.....S
  E3D0: 50 45 44 A4 00 A0 30 93 53 44 53 31 0A 03 70 0D  PED...0.SDS1..p.
  E3E0: 45 4C 41 4E 32 30 39 37 00 5F 48 49 44 70 01 48  ELAN2097._HIDp.H
  E3F0: 49 44 32 70 0A 10 42 41 44 52 70 0C 80 1A 06 00  ID2p..BADRp.....
  E400: 53 50 45 44 A4 00 A0 30 93 53 44 53 31 0A 04 70  SPED...0.SDS1..p
  E410: 0D 4E 54 52 47 30 30 30 31 00 5F 48 49 44 70 01  .NTRG0001._HIDp.

它在那里出现了两次。第一次是作为 ELAN061D,第二次是作为 ELAN2097。

因此,使用 UKUU 将内核升级到 4.17 的方法成功解决了触摸板死机的问题。

相关内容