我刚买了一台 IdeaPad 330 联想笔记本电脑。当我安装 Ubuntu 时,触摸板不工作。我设法通过键盘成功安装了 Ubuntu,使用选项卡、空格和输入按钮。我以为安装后触摸板会工作,但不是运气。
有谁知道如何解决这个问题?它在 Windows 10 上完美运行。
所有的希望都没有消失!我已成功重新编译了最新的 ubuntu 4.18.0 内核,并在我拥有的Lenovo 330-15igm上添加了 elan061C 触摸板的 ACPI id ,现在触摸板可以正常工作。
Lenovo 330 系列的触摸板在启动时无法检测到,因为其 ACPI id 不存在于内核驱动程序中。Windows 将其识别为基于 i2c 的 Elan HID 设备,330 上的检测问题与此处提到的 lenovo 320 笔记本电脑类似:Lenovo 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_core.c的内核驱动程序源中,因此目前没有希望在不编写 dkms 模块(这对我不起作用)或编译自定义内核的情况下获得可用的触摸板。
请查看您的输出dmesg | grep i2c 并dmesg | grep elan
查看是否检测到设备。我发现 ubuntu 16.04 的库存和 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
Run Code Online (Sandbox Code Playgroud)
但触摸板无法工作或记录任何输入。
还有很多人遇到这种类型的麻烦,因为elan 触摸板太新了 ,没有主线内核支持。
如果您想让您的设备正常工作:
通过安装 acpidump: 并运行以下命令来查找您的 ACPI id sudo apt install acpidump
:
须藤 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
Run Code Online (Sandbox Code Playgroud)
注意中间线上的ELAN061C!
检查 dmesg | 的输出 grep i2c 和 dmesg | grep elan 查看是否检测到设备。
安装一个可以检测设备的内核,对我来说这是 4.17.4-041704-generic。
此 ACPI 设备 ID 仍然不存在于elan_i2c_core.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 文件末尾附近(箭头是注释,不要将它们添加到文件中!)
Run Code Online (Sandbox Code Playgroud)#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 中可以很好地支持左键、右键单击和手势。
YMMV。
特别感谢Dimitry Torokov和Donald Shanty
| 归档时间: |
|
| 查看次数: |
77067 次 |
| 最近记录: |