carlo.antinarella
Posts: 4
Joined: Mon Jan 29, 2018 7:25 am

eGalax Touchscreen not working properly on CM3 with Raspbian + Linux 4.14

Fri Apr 20, 2018 7:32 am

Hello,

I have a resistive touchscreen panel with an eGalax usb controller attached to my Raspberry Pi CM3. Here is my lsusb output:

Code: Select all

Bus 001 Device 004: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax TouchScreen
From /proc/bus/input/devices:

Code: Select all

I: Bus=0003 Vendor=0eef Product=0001 Version=0210
N: Name="eGalax Inc. USB TouchController Pen"
P: Phys=usb-3f980000.usb-1.3/input0
S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/0003:0EEF:0001.0001/input/input3
U: Uniq=
H: Handlers=mouse0 event2
B: PROP=0
B: EV=1b
B: KEY=c01 0 0 0 0 0 0 0 0 0 0
B: ABS=3
B: MSC=10

I: Bus=0003 Vendor=0eef Product=0001 Version=0210
N: Name="eGalax Inc. USB TouchController"
P: Phys=usb-3f980000.usb-1.3/input0
S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/0003:0EEF:0001.0001/input/input5
U: Uniq=
H: Handlers=mouse1 event3
B: PROP=2
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=a608000 3
Using the program evtest I can see that event2 (that is the pen or stylus touch recognition) works properly (but X Window server doesn’t take any input). Conversely event3, that should be the finger (multi)touch recognition, doesn’t trigger any event whatsoever. I downloaded the driver and the installation instruction from the vendor:

http://www.eeti.com.tw/drivers_Linux.html

I downloaded the lastest kernel sources available (4.14), configured as required by the instructions, recompiled and installed the kernel. Then I launched the installation script provided with the driver, and I can see that a virtual device appeared. From /proc/bus/input/devices:

Code: Select all

I: Bus=0006 Vendor=0eef Product=0010 Version=0001
N: Name="eGalaxTouch Virtual Device for Single"
P: Phys=
S: Sysfs=/devices/virtual/input/input7
U: Uniq=
H: Handlers=mouse3 event5 js0
B: PROP=2
B: EV=b
B: KEY=130000 0 0 0 0 0 0 0 0
B: ABS=1b
But, using evtest for reading event5, I can see that only the press and release events are triggered. I can’t see any event related to X and Y position. Also in the X Window system I can click, but there’s no way to move the pointer.

Does anyone have some hints on how to make this controller working properly with my Raspbian + Linux 4.14 system?

Thanks
Carlo

carlo.antinarella
Posts: 4
Joined: Mon Jan 29, 2018 7:25 am

Re: eGalax Touchscreen not working properly on CM3 with Raspbian + Linux 4.14

Wed May 09, 2018 10:02 am

After some work I eventually fixed the problem. Instead of using the driver provided by the vendor, I reconfigured the kernel excluding the HID multitouch module (I have a resistive touch panel), and I included the built-in USB touchscreen drivers.

In Device Drivers > HID support > Special HID drivers:

Code: Select all

< > HID Multitouch panels
In Device Drivers > Input device support > Touchscreens:

Code: Select all

< > EETI eGalax multi-touch panel support
<*> USB Touchscreen Driver
[*] eGalax, eTurboTouch CT-410/510/700 device support
[*] GeneralTouch Touchscreen device support
Then I built and installed the newly-configured kernel and rebooted. In /proc/bus/input/devices I can now see:

Code: Select all

I: Bus=0003 Vendor=0eef Product=0001 Version=0210
N: Name="eGalax Inc. USB TouchController"
P: Phys=usb-3f980000.usb-1.3/input0
S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/0003:0EEF:0001.0001/input/input0
U: Uniq=
H: Handlers=mouse0 js0 event0
B: PROP=0
B: EV=1b
B: KEY=30000 0 0 0 0 0 0 0 0
B: ABS=3
B: MSC=10

I: Bus=0003 Vendor=0eef Product=0001 Version=0210
N: Name="eGalax Inc. USB TouchController"
P: Phys=usb-3f980000.usb-1.3/input0
S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/0003:0EEF:0001.0001/input/input1
U: Uniq=
H: Handlers=mouse1 event1
B: PROP=0
B: EV=1b
B: KEY=401 0 0 0 0 0 0 0 0 0 0
B: ABS=3
B: MSC=10

I: Bus=0003 Vendor=0eef Product=0001 Version=0210
N: Name="eGalax Inc. USB TouchController"
P: Phys=usb-3f980000.usb-1.3/input0
S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/0003:0EEF:0001.0001/input/input2
U: Uniq=
H: Handlers=event2
B: PROP=0
B: EV=1

I: Bus=0003 Vendor=0eef Product=0001 Version=0210
N: Name="eGalax Inc. USB TouchController"
P: Phys=usb-3f980000.usb-1.3/input0
S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/0003:0EEF:0001.0001/input/input3
U: Uniq=
H: Handlers=mouse2 event3
B: PROP=0
B: EV=1b
B: KEY=420 0 1 0 0 0 0 0 0 0 0
B: ABS=100 3
B: MSC=10
and with the help of evtest I can see that only event1 is producing understandable events. In the X environment I couldn't see any event (no way to move the cursor) because input events are handled by libinput, that fails to recognize my touch events because they are not compliant with some criteria it is expecting. Then I decided to switch to evdev:

Code: Select all

sudo apt-get install xserver-xorg-input-evdev
and added the file /etc/X11/xorg.conf:

Code: Select all

Section "InputClass"
		Identifier "evdev tablet catchall"
		MatchIsTablet "on"
		MatchDevicePath "/dev/input/event*"
		Driver "evdev"
EndSection
After rebooting everything works fine.

Return to “Troubleshooting”