18.04 ITE 8910 触摸板在 Asus Strix GL703GE 上无法正常工作

18.04 ITE 8910 触摸板在 Asus Strix GL703GE 上无法正常工作

我在各种网站上的众多问题中都看到过类似问题的点点滴滴,但这些建议/修复似乎都无济于事。看起来这可能是令人讨厌的 Elantech 触摸板的问题,它是过去几年来新的博通无线芯片组。我希望有一个调整/修复,只是没有在谷歌搜索中名列前茅。或者也许对问题更彻底/完整的描述会有助于找到一个明确的解决方案。我想在放弃之前把我发现和尝试过的所有东西都放在一个地方,作为一种万福玛利亚。

我有一台华硕 Strix GL703GE 笔记本电脑,上面安装了 Ubuntu 18.04。触摸板在 Windows 分区中似乎运行正常。

这是 xinput 的输出:

mich@gordon:~$  xinput
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech M510                             id=12   [slave  pointer  (2)]
⎜   ↳ ITE Tech. Inc. ITE Device(8910)           id=14   [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)]
    ↳ Asus Wireless Radio Control               id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Video Bus                                 id=9    [slave  keyboard (3)]
    ↳ Power Button                              id=10   [slave  keyboard (3)]
    ↳ Sleep Button                              id=11   [slave  keyboard (3)]
    ↳ USB2.0 HD UVC WebCam: USB2.0 HD           id=13   [slave  keyboard (3)]
    ↳ Asus WMI hotkeys                          id=15   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=16   [slave  keyboard (3)]
    ↳ ITE Tech. Inc. ITE Device(8910)           id=17   [slave  keyboard (3)]
mich@gordon:~$

罗技 M510 是一款 USB 鼠标,因为我的键盘功能不太好。它无需任何调整就能正常工作。

以下是其他一些可能有趣的诊断内容:

mich@gordon:~$  dmesg | grep -i touch
mich@gordon:~$  synclient -l
Couldn't find synaptics properties. No synaptics driver loaded?
mich@gordon:~$  dmesg | grep i2c
[    1.574177] i2c /dev entries driver
[    3.615795] i2c_hid i2c-ELAN1200:00: i2c-ELAN1200:00 supply vdd not found, using dummy regulator
[    3.616991] i2c_hid i2c-ELAN1200:00: Could not register for ELAN1200:00 interrupt, irq = 130, ret = -1
[    3.617013] i2c_hid: probe of i2c-ELAN1200:00 failed with error -1
mich@gordon:~$  dmesg | grep i8042
[    1.567434] i8042: PNP: No PS/2 controller found.
[    1.567434] i8042: Probing ports directly.
[    1.571605] serio: i8042 KBD port at 0x60,0x64 irq 1
[    1.571611] serio: i8042 AUX port at 0x60,0x64 irq 12
[    1.580682] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4
mich@gordon:~$

synclient 的响应对我来说似乎很奇怪,因为我已经执行过 apt install,但xserver-xorg-input-synaptics似乎没有改变任何东西。以下是 dpkg 输出:

mich@gordon:~$   dpkg -l *synaptics*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                    Version          Architecture     Description
+++-=======================-================-================-===================================================
un  xorg-driver-synaptics   <none>           <none>           (no description available)
ii  xserver-xorg-input-syna 1.9.0-1ubuntu1   amd64            Synaptics TouchPad driver for X.Org server
mich@gordon:~$ 

尝试sudo apt install xorg-drivers-synaptics跳转到已安装的驱动程序。

我已经尝试了这三个内核参数的所有 8 种变体:

i8042.reset
i8042.kbdreset=1
i8042.nomux=1

我检查了 BIOS 中是否有可能导致触摸板禁用的设置。如果我没记错的话,我唯一找到的就是“内部指针”的设置。不管它叫什么,它都是启用的。

这是输入设备:

mich@gordon:~$  cat /proc/bus/input/devices
  ....
I: Bus=0003 Vendor=0b05 Product=1869 Version=0110
N: Name="ITE Tech. Inc. ITE Device(8910)"
P: Phys=usb-0000:00:14.0-8/input0
S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/0003:0B05:1869.0001/input/input9
U: Uniq=
H: Handlers=sysrq kbd event7 leds 
B: PROP=0
B: EV=12001f
B: KEY=3007f 0 ffffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffff 130c130b17c007 ffbf7bfad941dfff febeffdfffefffff fffffffffffffffe
B: REL=40
B: ABS=ffffff0100000000
B: MSC=10
B: LED=1f
  ....

我也尝试过通过 xinput 启用该设备,但无济于事:

xinput set-prop 14 "Device Enabled" 1

我看到有人建议修改/usr/share/X11/xorg.conf.d/50-synaptics.conf,但我没有那个文件。我有一个 ,/usr/share/X11/xorg.conf.d/51-synaptics-quirks.conf里面充满了看起来完全不相关的内容,因为它们都指向/dev/input/event*。我找到了一个/usr/share/X11/xorg.conf.d/70-synaptics.conf。我修改了该文件,使触摸板万能钥匙看起来像这样:

Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
# This option is recommend on all Linux systems using evdev, but cannot be
# enabled by default. See the following link for details:
# http://who-t.blogspot.com/2010/11/how-to-ignore-configuration-errors.html
        Option "TapButton1" "1"
        MatchDevicePath "/dev/input/event*"
EndSection

我的更改是 TapButton1 选项行并向 MatchDevicePath 添加两个空格以匹配其余配置的制表符。

如果有帮助的话,以下是该目录中的其余文件:

mich@gordon:~$  ls -l /usr/share/X11/xorg.conf.d/
total 36
-rw-r--r-- 1 root root   92 Mar 20 05:02 10-amdgpu.conf
-rw-r--r-- 1 root root  206 Apr 18 10:01 10-nvidia.conf
-rw-r--r-- 1 root root 1350 Apr 13 08:31 10-quirks.conf
-rw-r--r-- 1 root root   92 Mar 20 05:17 10-radeon.conf
-rw-r--r-- 1 root root  329 May 21 00:33 11-nvidia-prime.conf
-rw-r--r-- 1 root root  945 Apr 11 00:50 40-libinput.conf
-rw-r--r-- 1 root root  590 Mar  7  2017 51-synaptics-quirks.conf
-rw-r--r-- 1 root root 1785 May 21 00:32 70-synaptics.conf
-rw-r--r-- 1 root root 3025 Apr  3 00:39 70-wacom.conf
mich@gordon:~$ 

我还运行了这个命令,但它没有启用触摸板:

sudo modprobe -r psmouse && sudo modprobe psmouse proto=imps

这可能在发布后仅几周就显而易见,但这是内核:

mich@gordon:~$  uname -r
4.15.0-20-generic
mich@gordon:~$

我做错了什么吗?我是不是错过了魔法开关?我还能尝试其他什么吗?还有其他信息可以帮助排除故障并找到解决方案吗?我已经尝试用尽我能找到的所有合理解决方案。谢谢!

编辑:添加: 我一直在盲目地尝试更多的解决方案,但没有取得任何进展。我删除了 synaptics apt 包,但删除它并没有什么不同。以下是一些可能有用的信息:

mich@gordon:~$ xinput --list-props "pointer:ITE Tech. Inc. ITE Device(8910)"
Device 'ITE Tech. Inc. ITE Device(8910)':
    Device Enabled (174):   1
    Coordinate Transformation Matrix (176): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Natural Scrolling Enabled (308):   0
    libinput Natural Scrolling Enabled Default (309):   0
    libinput Middle Emulation Enabled (310):    0
    libinput Middle Emulation Enabled Default (311):    0
    libinput Left Handed Enabled (312): 0
    libinput Left Handed Enabled Default (313): 0
    libinput Send Events Modes Available (293): 1, 0
    libinput Send Events Mode Enabled (294):    0, 0
    libinput Send Events Mode Enabled Default (295):    0, 0
    Device Node (296):  "/dev/input/event7"
    Device Product ID (297):    2821, 6249
    libinput Drag Lock Buttons (314):   <no items>
    libinput Horizontal Scroll Enabled (315):   1
mich@gordon:~$

这是一些 xorg 日志。它可能在告诉我一些我遗漏的信息:

mich@gordon:~$  cat /var/log/Xorg.0.log

... cropped for clarity ...

[     7.318] (II) config/udev: Adding input device ITE Tech. Inc. ITE Device(8910) (/dev/input/event7)
[     7.318] (**) ITE Tech. Inc. ITE Device(8910): Applying InputClass "libinput pointer catchall"
[     7.318] (**) ITE Tech. Inc. ITE Device(8910): Applying InputClass "libinput keyboard catchall"
[     7.318] (II) Using input driver 'libinput' for 'ITE Tech. Inc. ITE Device(8910)'
[     7.318] (II) systemd-logind: got fd for /dev/input/event7 13:71 fd 51 paused 0
[     7.318] (**) ITE Tech. Inc. ITE Device(8910): always reports core events
[     7.318] (**) Option "Device" "/dev/input/event7"
[     7.318] (**) Option "_source" "server/udev"
[     7.319] (II) event7  - ITE Tech. Inc. ITE Device(8910): is tagged by udev as: Keyboard Mouse Joystick
[     7.319] (II) event7  - ITE Tech. Inc. ITE Device(8910): device is a pointer
[     7.319] (II) event7  - ITE Tech. Inc. ITE Device(8910): device is a keyboard
[     7.319] (II) event7  - ITE Tech. Inc. ITE Device(8910): device removed
[     7.319] (II) libinput: ITE Tech. Inc. ITE Device(8910): needs a virtual subdevice
[     7.319] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/0003:0B05:1869.0004/input/input9/event7"
[     7.319] (II) XINPUT: Adding extended input device "ITE Tech. Inc. ITE Device(8910)" (type: MOUSE, id 14)
[     7.319] (**) Option "AccelerationScheme" "none"
[     7.319] (**) ITE Tech. Inc. ITE Device(8910): (accel) selected scheme none/0
[     7.319] (**) ITE Tech. Inc. ITE Device(8910): (accel) acceleration factor: 2.000
[     7.319] (**) ITE Tech. Inc. ITE Device(8910): (accel) acceleration threshold: 4
[     7.319] (II) event7  - ITE Tech. Inc. ITE Device(8910): is tagged by udev as: Keyboard Mouse Joystick
[     7.319] (II) event7  - ITE Tech. Inc. ITE Device(8910): device is a pointer
[     7.319] (II) event7  - ITE Tech. Inc. ITE Device(8910): device is a keyboard

 ... later ...

[     7.327] (**) ITE Tech. Inc. ITE Device(8910): Applying InputClass "libinput pointer catchall"
[     7.327] (**) ITE Tech. Inc. ITE Device(8910): Applying InputClass "libinput keyboard catchall"
[     7.327] (II) Using input driver 'libinput' for 'ITE Tech. Inc. ITE Device(8910)'
[     7.327] (II) systemd-logind: returning pre-existing fd for /dev/input/event7 13:71
[     7.327] (**) ITE Tech. Inc. ITE Device(8910): always reports core events
[     7.327] (**) Option "Device" "/dev/input/event7"
[     7.327] (**) Option "_source" "_driver/libinput"
[     7.327] (II) libinput: ITE Tech. Inc. ITE Device(8910): is a virtual subdevice
[     7.327] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/0003:0B05:1869.0004/input/input9/event7"

... end of relevant section ... 

删除 synaptics 包后,我只有默认/usr/share/X11/xorg.conf.d/40-libinput.conf文件。这不起作用,所以我添加了一个稍微修改过/usr/share/X11/xorg.conf.d/50-elantech-touchpad.conf找到这里。以下是我修改后的样子:

mich@gordon:~$  cat /usr/share/X11/xorg.conf.d/50-elantech-touchpad.conf 
Section "InputClass"
        Identifier      "touchpad"  
        MatchIsTouchpad "on"
        MatchProduct    "8910"
        MatchDevicePath "/dev/input/event*"
        Driver          "libinput"
        Option          "Tapping"           "on"
        Option      "TappingButtonMap"      "lmr"
        Option          "DisableWhileTyping"    "on"
        Option      "DisableWhileTyping"    "on"
        Option      "NaturalScrolling"  "on"
        Option      "NaturalScrolling"  "twofinger"
        Option      "TappingDrag"       "on"
        Option      "TappingDragLock"   "on"
        Option      "AccelProfile"      "adaptive"
        Option      "AccelSpeed"        "0.1"
EndSection
mich@gordon:~$

我改变了 MatchProduct 来匹配 xinput 中的名称,并添加了 MatchDevicePath 以确保它不会去到错误的地方。

编辑2:添加: 安装内核 v4.17rc6 而不做其他更改并不能修复触摸板问题。

答案1

这是一个持续存在的问题,我一直在与出色的 Ubuntu 社区合作解决它。您需要从 kernel.org 更新到至少内核 4.17.2。

我的第一个错误报告: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1777679

我的第二个错误报告: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1778087

一些可以帮助您使其发挥作用的信息: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1777679/comments/28

当触摸板断开连接时,您可能需要一个额外的脚本:

#!/bin/bash
if [ -z $1 ]
    then
        echo 'rsmod unloads and reloads kernel modules with modprobe'
        echo 'usage: rsmod <kernelmodulename>'
        echo 'Requires root privileges'
        exit 1
fi
pkexec bash -c "modprobe -r $1; modprobe $1"

将其保存为 /usr/local/bin/rsmod,并在触摸板断开连接时使用 hid-multitouch 调用它。(不幸的是,没有解决方法,如果您想在 Linux 上使用它,它会偶尔断开连接,直到驱动程序更新)

编辑:您有一个 ELAN1200 触摸板,不是 Elantech,并且您的内核目前根本无法检测到它。如果可以,在 xinput --list 中您将看到 ELAN1200 以及 ITE8910。

如果您需要更多帮助,请告诉我。

答案2

现在 4.20 内核支持触摸板,无需自定义补丁。

在 ubuntu 18.04/18.10 中只需:

  1. 从 kernel.org 下载 linux-4.20 内核
  2. 将其解压到 /usr/src/linux-4.20
  3. 将现有的 .config 文件复制到同一目录中
  4. sudo make menuconfig(然后保存在“gui”中)
  5. sudo make-j8
  6. sudo make 模块-j8
  7. 安装
  8. sudo make modules_install
  9. sudo 更新-initramfs -u
  10. 使用 4.20 内核重启

触摸板现在应该可以工作了。

这个特定的触摸板仍然存在一个问题:如果你将 5 个手指或手掌放在上面,它就会失去连接,你需要运行 sudo rmmod hid_multitouch && sudo modprobe hid_multitouch 才能使其再次工作,这个错误仍然存​​在:https://bugzilla.kernel.org/show_bug.cgi?id=200663#c60

答案3

我直接向 ITE 询问驱动程序,但他们说没有驱动程序:

亲爱的兰多特,

感谢您给我们发送电子邮件。
我们不拥有任何 IT8910 驱动程序。

谢谢。
米奇

[编辑删除了联系信息]

你好

我刚买了一台华硕 ROG Strix SCAR GL703GE-EE010T 笔记本电脑,配有 ITE Tech. Inc. ITE Device(8910) 触摸板,即使使用最新的 4.17 Linux 内核也无法工作。

所以我想知道您的设备是否有任何 Linux 驱动程序,或者至少有一个包含实验性驱动程序的 GitHub 链接?

诚挚问候
Marc Landolt

相关内容