![如果你想让你的设备正常工作:](https://linux22.com/image/1064411/%E5%A6%82%E6%9E%9C%E4%BD%A0%E6%83%B3%E8%AE%A9%E4%BD%A0%E7%9A%84%E8%AE%BE%E5%A4%87%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C%EF%BC%9A.png)
我刚买了一台 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
供参考:与 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-utils
和 bison
包
在自定义步骤中,我编辑了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 的方法成功解决了触摸板死机的问题。