Get Touchscreen eGalaxy Touch working

So it’s not event0. I got many events on event1. So that is it. You can stop now. I’ll come back.

Managed to calibrate it now.

What do you mean?

I saw that the xinput_calibration starts. So I tapped at the crosses appearing. Thought you started it ?
Could tap the crosses and he recognised it

Uh right. Good. I thought it ran an automated calibration. Great. So first:

Section "InputClass"
	Identifier	"calibration"
	MatchProduct	"eGalax Inc. Touch"
	Option	"Calibration"	"42 1992 95 1956"
	Option	"SwapAxes"	"0"
EndSection

This is the correct calibration so please update your app and repush it. As well you will need server-xorg-input-evdev as X server driver. You were missing that too so there was no driver for x to connect to your input devices.

Tell me when you managed to push these changes so I can check everything is Ok.

And one more thing. I removed the app variable related to ft5406. Your device is not using a ft5406 chip so no need to have that probed. Your touchscreen device works on USB using the egalax driver.

Work like a charm :wink:

Thank you. Great work.

The whole thing was updating the calibration and install “xserver-xorg-input-evdev” ?

Let’s summarize:

  1. Remove the ft5406 overlay as the device is supported by default.
  2. You need an X driver which connects the input devices to the X server - the opensource one works just fine for your device (xserver-xorg-input-evdev). You can use xinput (you can install it as well) to see if X can detect your input device. As soon as the X driver was install (and after X restart) you can see that X can detect the input device:
root@raspberry-pi2-cfcd83d:/# DISPLAY=:0 xinput
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ eGalax Inc. Touch                       	id=6	[slave  pointer  (2)]
⎜   ↳ eGalax Inc. Touch                       	id=7	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
  1. Using the calibration tool (xinput_calibrator) we generated the correct parameters for the device and used it statically in the app to be persistent for the fleet.

Hope this clarifies.

1 Like

Ok Everything clear.

Wow Great Work :wink:

Thank you very much for the great help !

Sure, anytime. Enjoy!

Hi I am having problem with egalaxy touch screen on Jetson TX2.

Here is my docker,

RUN apt-get update && apt-get install -y --no-install-recommends \
    xserver-xorg-core \
    xserver-xorg-input-all \
    xserver-xorg-video-fbdev \
    xserver-xorg-input-evdev \
    xorg \
    xinput \
    x11-apps \
    matchbox-window-manager \
    xinit \
    && rm -rf /var/lib/apt/lists/*

The output of lsusb,

lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 0eef:c000 D-WAV Scientific Co., Ltd
Bus 001 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

I can read the data stream on /dev/input/event4.

I think it has correct driver and installation. but the touch screen doesn’t work and xinput cannot find the touch screen,

DISPLAY=:0 xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]

I appreciate if someone can help me.

Thanks!

Hey @Farzad
Which version of balenaOS are you using?

In addition is there any logs in dmesg that might reveal more information?

BalenaOS:
balenaOS 2.29.0+rev1

dmesg logs,

[  163.380265] tegradc 15210000.nvdisplay: blank - normal
[  163.519744] tegradc 15210000.nvdisplay: unblank
[  163.546538] tegradc 15210000.nvdisplay: unblank

Hi @CameronDiver ,
Jordan mentioned you were working on this issue. I am wondering if you have any progress.
This is really blocking our integration with Balena

Cheers

@Farzad could you tell us what happens if you run xinput_calibrator --list?

Also, is that all you see in dmesg? If you look at the OP there should be something along the lines of:

[160095.551950] input: eGalax Inc. Touch as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/0003:0EEF:0001.0003/input/input6

But the more you can post the better.

Hi @pcarranzav,

I’m on the same project as @Farzad.
xinput_calibrator --list returns:

Error: No calibratable devices found.

However, I’ve managed to install drivers from eGalaxy and now our dmesg does show the touchscreen being connected:

[   11.395695] usb 1-2: new full-speed USB device number 2 using xhci-tegra
[   11.489967] tegra-pcie 10003000.pcie-controller: link 0 down, retrying
[   11.528652] usb 1-2: feature bit otg_vbus_off set
[   11.533389] usb 1-2: New USB device found, idVendor=0eef, idProduct=c000
[   11.540129] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[   11.547295] usb 1-2: Product: eGalaxTouch EXC3000-3619-49.00.00
[   11.553259] usb 1-2: Manufacturer: eGalax Inc.
[   11.558307] xhci-tegra 3530000.xhci: tegra_xhci_mbox_work mailbox command 6
[   11.580396] input: eGalax Inc. eGalaxTouch EXC3000-3619-49.00.00 as /devices/3530000.xhci/usb1/1-2/1-2:1.0/0003:0EEF:C000.0001/input/input4
[   11.593146] hid-multitouch 0003:0EEF:C000.0001: input,hidraw0: USB HID v2.10 Pointer [eGalax Inc. eGalaxTouch EXC3000-3619-49.00.00] on usb-3530000.xhci-2/input0

However, the touchscreen still does not appear in xinput --list. Any idea what’s going on?

Thanks,
Jin

@Jin, in case this helps, something to double check is that the X server was successfully started before running the xinput and xinput_calibrator commands. Are you starting the X server with startx or some other similar command? In another thread (link below), another user reported their issue was that they were trying to run xinput before startx, rather than the other way around. The following worked for them:

# Start application
startx /usr/src/app/node_modules/electron/dist/electron /usr/src/app --enable-logging
# Wait for X to come up
sleep 3
# Rotate display and touchscreen
xrandr -o right  # this is for screen rotation, probably doesn't apply to you
xinput ...

Related posts:

@pdcastro Thank you for the suggestion, but I’ve got it working now.

We found that the balena image we based our image on (balenalib/jetson-tx2-ubuntu:xenial) did not contain the right driver for the eGalaxy touchscreen at the time of this writing. So to get it working I had to manually build this driver from linux master into a kernel module using this balena sample project and load it when starting up the container. I also made sure to set ENV UDEV 1 in our Dockerfile as well.

@Jin, glad to hear it, and many thanks for sharing your solution here! It will help anyone else who comes across this issue. I’ll also check with the OS team if they think that this driver should be included in the image by default.

@pdcastro Hey, just want to give another update. Turns out we didn’t need the eGalaxy touchscreen drivers after all. All we needed to do was to set ENV UDEV 1, and install xserver packages:

RUN apt-get update && apt-get install -y --no-install-recommends \
    xserver-xorg-legacy \
    xserver-xorg-core \
    xserver-xorg-input-all \
    xserver-xorg-video-fbdev \
    xserver-xorg-input-evdev \
    xorg \
    xinput \
    x11-apps \
    matchbox-window-manager \
    xinit \
    && rm -rf /var/lib/apt/lists/*

as well as carrier board drivers. It makes sense, since the driver is already part of Linux core kernel.

1 Like