Lenovo Thinkpad에서 마우스 패드가 작동하지 않습니다

Lenovo Thinkpad에서 마우스 패드가 작동하지 않습니다

여기서 이상한 문제가 발생했습니다. 통합 시냅스 마우스/고무 마우스가 Linux에서 작동하지 않습니다.

통합 마우스/마우스패드는 Windows에서 먼저 활성화하는 경우에만 작동합니다. Linux에서는 여러 번 재부팅할 수 있으며 제대로 작동합니다. 노트북의 전원이 꺼지지 않는 한 인식됩니다.

노트북의 배터리가 모두 소모되면 마우스패드/마우스만 다시 사용할 수 있습니다.Windows에서 처음 부팅하는 경우.

그러므로 리눅스가 실행되는 동안 배터리를 제거하면 쉽게 오류를 재현할 수 있습니다. 이렇게 하면 마우스 패드가 인식되지 않습니다.~까지Windows를 다시 시작합니다. 그래서 오픈소스 드라이버는 하드웨어가 알 수 없는(초기화된) 상태일 때 장치를 인식하지 못하는 것 같습니다.

저는 2016 Lenovo ThinkPad E560, i7-6500U CPU @ 2.50GHz, 16GB RAM 및 SSD 디스크에서 Debian 9/Antix 17.1을 사용하고 있습니다.

radeon.modeset=0머신에 듀얼 카드가 있지만 커널 매개변수에서 radeon을 비활성화했습니다. 따라서 관련 매개변수는 다음과 같습니다.

$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 520 (rev 07)

xserver-xorg관련 패키지는 다음과 같습니다

xserver-xorg - 7.7+19
xserver-xorg-core - 1.19.2-1.0nosystemd2
xserver-xorg-input-libinput - 0.23.0-2
xserver-xorg-input-synaptics - 1.9.0-1+b1
xserver-xorg-video-intel - 2.99.917+git20161206-1

4.10.5-antix.3-amd64-smpAntix 저장소에서 기존 데비안 커널을 실행 해 보았지만 4.18.4-antix.1-amd64-smp증상에는 변화가 없었습니다. @StephenKitt가 말했듯이 새 버전에서는 시냅스 처리에 변화가 있습니다.

내 현재 커널 매개변수는 다음과 같습니다.

$ cat /proc/cmdline 
BOOT_IMAGE=/boot/vmlinuz-4.18.4-antix.1-amd64-smp root=UUID=00c17984-859f-4197-8bd8-b346ddd092bd ro iommu=1 intel_iommu=on iommu=pt ipv6.disable=1 intremap=no_x2apic_optout radeon.modeset=0

또한 xorg의 마우스 패드 처리를 xserver-xorg-input-synaptics에서 xserver-xorg-input-libinput으로 변경하고 후자를 설치한 후 다음을 수행하기 위한 온라인 조언을 따랐습니다.

 cd /etc/X11/xorg.conf.d
 ln -s /usr/share/X11/xorg.conf.d/40-libinput.conf 

증상은 동일하게 유지됩니다.

또한 장치/드라이버 이름을 확인하기 위해 Windows 10의 장치 관리자에 들어갔는데 "Ultranav"라는 듀얼 마우스 패드/키보드 고무 제품이었습니다. libinput-list-devices"AlpsPS/2 ALPS DualPoint TouchPad"라고도 명명되었습니다. 어떤 사람들은 다른 Lenovo 모델 중에서 이 마우스를 Elantech라고 부르기도 합니다.

libinput-tools디버그 케이스 도 설치했습니다 . 흥미롭게도 libinput-list-devicesWindows를 실행한 후 이 명령을 실행하면 마우스가 보이는데, 실행하기 전에는 마우스가 없었습니다.

나는 버그를 메우기 위해 커널 팀에 제안을 했습니다.

무엇을 해야 할까요?

dmidecode제조업체 및 모델에 대한 관련 데이터는 다음과 같습니다.

# dmidecode -s system-manufacturer
LENOVO
# dmidecode -s system-product-name
20EV000YPG
# dmidecode -s system-version
ThinkPad E560

libunput-list-devicesWindows 10 부팅 전과 후의 차이점.

$ diff libunput-list-devices-before_windows.txt after-windows.txt
2c2
< Kernel:           /dev/input/event8
---
> Kernel:           /dev/input/event10
20c20
< Kernel:           /dev/input/event10
---
> Kernel:           /dev/input/event12
38c38
< Kernel:           /dev/input/event7
---
> Kernel:           /dev/input/event9
128c128
< Kernel:           /dev/input/event18
---
> Kernel:           /dev/input/event20
163,164c163,164
< Device:           ThinkPad Extra Buttons
< Kernel:           /dev/input/event9
---
> Device:           AlpsPS/2 ALPS DualPoint Stick
> Kernel:           /dev/input/event6
165a166,202
> Seat:             seat0, default
> Capabilities:     pointer 
> Tap-to-click:     n/a
> Tap-and-drag:     n/a
> Tap drag lock:    n/a
> Left-handed:      disabled
> Nat.scrolling:    disabled
> Middle emulation: disabled
> Calibration:      n/a
> Scroll methods:   *button
> Click methods:    none
> Disable-w-typing: n/a
> Accel profiles:   flat *adaptive
> Rotation:         n/a
> 
> Device:           AlpsPS/2 ALPS DualPoint TouchPad
> Kernel:           /dev/input/event7
> Group:            7
> Seat:             seat0, default
> Size:             97.50x53.87mm
> Capabilities:     pointer 
> Tap-to-click:     disabled
> Tap-and-drag:     enabled
> Tap drag lock:    disabled
> Left-handed:      disabled
> Nat.scrolling:    disabled
> Middle emulation: disabled
> Calibration:      n/a
> Scroll methods:   *two-finger edge 
> Click methods:    *button-areas clickfinger 
> Disable-w-typing: enabled
> Accel profiles:   none
> Rotation:         n/a
> 
> Device:           ThinkPad Extra Buttons
> Kernel:           /dev/input/event11
> Group:            8

답변1

흥미롭게도 이 버그에 대한 다른 단어(Lenovo, Alps 및 Ultraranav 포함)를 검색하는 동안 Arch Linux wiki의 게시물에서 커널 매개변수를 제안하는 기사를 발견했습니다.라이브러리 입력

터치패드가 전혀 감지되지 않음

참고: 이것은 libinput 문제가 아닙니다. Touchpad_Synaptics#No_Multi-touch_in_some_Elantech_touchpads에 연결된 매개변수에 대한 설명이 있는데, 이는 "이것 중 일부를 시도해 보세요"라고 말하는 것보다 훨씬 낫습니다.

터치패드 장치가 감지되지 않고 전혀 장치로 표시되지 않는 경우 가능한 해결 방법은 이러한 커널 매개변수 중 하나 이상을 사용하는 것입니다.

i8042.noloop i8042.nomux i8042.nopnp i8042.reset

그런 다음 몇 가지 테스트를 수행한 결과 제 경우에는 i8042.reset파일 GRUB_CMDLINE_LINUX_DEFAULT에 커널 매개변수를 추가하고 다음을 실행하는 /etc/default/grub것으로 충분하다는 것을 확인했습니다.

update-grub2

그런 다음 배터리를 제거하고 오류를 재현해 보았습니다. 컴퓨터가 정지되고 Linux가 다시 시작된 후 Windows 10을 먼저 부팅하지 않고도 Ultraranav/Elantech 내장 마우스가 먼저 인식되어 작동했습니다.

나는 이것이 커널 버그라고 말하고 싶습니다.

다른 노트북과 마찬가지로 Lenovo Thinkpad는 Linux 커널의 i8042 재설정 장치 목록에 추가되어야 하며 항상 Elantech TouchPad를 감지하려면 i8042 칩셋 재설정이 필요한 가정용 컴퓨터 목록이 있습니다.

이러한 잘못된 항목을 찾은 후 나중에 이 요구 사항을 발견했습니다. Enter: i8042 - i8042 재설정 목록에 Lenovo LaVie Z 추가그리고입력: i8042: i8042 재설정 목록에 Lenovo ThinkPad L460 추가

Linux 커널 소스 코드를 육안으로 검사해 보면 최신 4.19-rc2 커널 소스 코드에는 Lenovo ThinkPad E560을 i8042 재설정 목록에 추가하는 소스 코드도 없습니다.

그래서 이를 추가하기 위해 grub의 i8042.reset 커널 매개변수 대신 사용할 수 있는 간단한 diff/patch를 작성했습니다.

--- drivers/input/serio/i8042-x86ia64io.h.old   2018-09-06 04:53:36.460003164 +0100
+++ drivers/input/serio/i8042-x86ia64io.h   2018-09-06 04:57:16.833465129 +0100
@@ -655,6 +655,14 @@
            DMI_MATCH(DMI_PRODUCT_NAME, "P65xRP"),
        },
    },
+   {
+                /* Lenovo ThinkPad E560 */
+                .matches = {
+                        DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+                        DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad E560"),
+                },
+        },
+
    { }
 };

추신. @StephenKitt의 제안에 따라 이 게시물을 Linux 커널 버그 보고서로 보내려고 했습니다.[이메일 보호됨]

관련 정보