我刚刚买了一台联想的IdeaPad 330笔记本电脑。当我安装Ubuntu时,触摸板不工作。我设法用键盘成功地安装了Ubuntu,使用了tab、空格和回车键。我以为安装后触摸板会工作,但运气不好。
有谁知道如何解决这个问题吗?它在Windows 10上工作得很好。
所有的希望都没有破灭 我已经成功地重新编译了最新的ubuntu 4.18.0内核,并为我拥有的联想330-15igm上的elan061C触摸板添加了ACPI id,现在有了一个可以工作的触摸板。
联想330系列的触摸板在启动时没有被检测到,原因是其ACPI id没有出现在内核驱动中。 Windows将其识别为Elan HID over i2c设备,330上的检测问题与这里提到的联想320笔记本电脑的问题类似:https://askubuntu.com/questions/946015/lenovo-ideapad-320-touchpad-doesnt-work
解决方法是给内核打补丁,与这里的做法类似:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1700657
参考:与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
**但触摸板没有工作,也没有登记任何输入。
还有一群人遇到了这种麻烦,因为elan触摸板太新,没有主线内核支持。
如果你想让你的设备工作:
通过安装acpidump找到你的ACPI id: sudo apt install acpidump
.
并运行:
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_core.c的内核驱动源中,所以目前*没有希望在不编写dkms模块(对我不起作用)或不编译自定义内核的情况下获得一个可以工作的触摸板。
使用这里的最新内核源代码: http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17.4/
用最新的补丁对内核进行修补,然后用这个相当容易的指南进行编译: https://askubuntu.com/questions/724900/how-to-apply-kernel-patches
除了安装这里的依赖性外:
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 }, <-添加这个 { "ELAN061D", 0 }, <- 这个是针对联想330的Core i3的。 { "ELAN1000" , 0 }、 { }}; MODULE_DEVICE_TABLE(acpi, elan_acpi_id);
endif
在安装了新生成的4.18.0-rc3-custom内核(补丁更新了4.17.4的源代码)后,我很高兴地报告,在Ubuntu 18.04中,触摸板的左、右点击和手势操作都很正常。
请自行判断。
特别感谢Dimitry Torokov和Donald Shanty 。
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的方法,成功地解决了触摸板死机的问题。