Hello, fellow Linux users!
I am struggling to understand what I have to do with my ELAN Touchscreen in order for it to work without interruptions. It behaves as follows:
1. it recognises one touch or one gesture
2. next touches and/or gestures are not recognised
3. after numerous unsuccessful repeats (the number is always different, from 2 to 100) it starts working again w/o interruptions
4. after sleep or shutdown, go to step 1.
I have tried to research on that matter and explored what dmesg is telling me.
In fact, after one touch, it does power cycle and reconnects as three devices (same device ID but 1x Elan Touchscreen and 2x Elan Touchscreen UNKNOWN) up until some touch (it can be 9th powercycle, as well as 60th....) it gets "error -71", does power cycle again and then works without problems.
Code:
[19641.420371] usb 1-8: USB disconnect, device number 6
[19641.684333] usb 1-8: new full-speed USB device number 8 using xhci_hcd
[19642.073547] usb 1-8: unable to read config index 0 descriptor/start: -71
[19642.073550] usb 1-8: can't read configurations, error -71
[19642.187348] usb 1-8: new low-speed USB device number 9 using xhci_hcd
[19642.302376] usb 1-8: device descriptor read/64, error -71
[19642.520369] usb 1-8: device descriptor read/64, error -71
[19642.628439] usb usb1-port8: attempt power cycle
[19643.265375] usb 1-8: new full-speed USB device number 10 using xhci_hcd
[19643.280177] usb 1-8: New USB device found, idVendor=04f3, idProduct=0446, bcdDevice=11.12
[19643.280180] usb 1-8: New USB device strings: Mfr=4, Product=14, SerialNumber=0
[19643.280182] usb 1-8: Product: Touchscreen
[19643.280183] usb 1-8: Manufacturer: ELAN
[19643.290874] input: ELAN Touchscreen as /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/0003:04F3:0446.0002/input/input31
[19643.291269] input: ELAN Touchscreen UNKNOWN as /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/0003:04F3:0446.0002/input/input32
[19643.291596] input: ELAN Touchscreen UNKNOWN as /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/0003:04F3:0446.0002/input/input33
[19643.292522] hid-multitouch 0003:04F3:0446.0002: input,hiddev96,hidraw0: USB HID v1.10 Device [ELAN Touchscreen] on usb-0000:00:14.0-8/input0
It doesn't seem to be a hardware problem as it works well with windows (yes, even if you connect it directly to a Windows VM (Virtualbox), it works there, but not (back) in linux up until "error -71".
I tried different distros (Ubuntu 20.04, Fedora 32), different DE (MATE, Gnome 3, KDE) the problem persists across them all.
I have searched on the internet and found these patches, that has already been implemented
https://www.spinics.net/lists/stable/msg77537.html
Other patch reports suggest that the problem could be solved by these "quirks", however every ELAN touchscreen has different Device ID (mine is not listed ofc.). Somehow one can add device to some quirk - but I guess I am still inexperienced to understand how to do it, this is why I am asking for your help.
With some help on other forums, I tried to do the following:
VID: 04f3
PID: 0446
Code:
echo "04f3:0446:i" | sudo tee /sys/module/usbcore/parameters/quirks
#adding quirk to /etc/modprobe.d/elan-tp.conf
sudo nano /etc/modprobe.d/elan-tp.conf
#ammending the following line there
options usbcore quirks=04f3:0446:i
# checking if it works
cat /sys/module/usbcore/parameters/quirks
# returns one empty line
Here are the outputs:
lspci:
Code:
00:00.0 Host bridge: Intel Corporation Haswell-ULT DRAM Controller (rev 0b)
00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 0b)
00:03.0 Audio device: Intel Corporation Haswell-ULT HD Audio Controller (rev 0b)
00:14.0 USB controller: Intel Corporation 8 Series USB xHCI HC (rev 04)
00:16.0 Communication controller: Intel Corporation 8 Series HECI #0 (rev 04)
00:1b.0 Audio device: Intel Corporation 8 Series HD Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 1 (rev e4)
00:1c.2 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 3 (rev e4)
00:1c.3 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 4 (rev e4)
00:1c.4 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 5 (rev e4)
00:1f.0 ISA bridge: Intel Corporation 8 Series LPC Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation 8 Series SATA Controller 1 [AHCI mode] (rev 04)
00:1f.3 SMBus: Intel Corporation 8 Series SMBus Controller (rev 04)
02:00.0 Network controller: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter (rev 01)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 10)
04:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 840M] (rev a2)
lsusb:
Code:
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 010: ID 04f3:0446 Elan Microelectronics Corp. Touchscreen
Bus 001 Device 007: ID 0cf3:3004 Qualcomm Atheros Communications AR3012 Bluetooth 4.0
Bus 001 Device 002: ID 5986:055e Acer, Inc Lenovo EasyCamera
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
uname -r
Code:
5.9.16-100.fc32.x86_64
I run Fedora 32 KDE, my laptop is Lenovo Flex 2-14, touchscreen uses usbhid as a driver
thanks in advance,
A.