Search code examples
linuxqtqt5yoctoimx6

Yocto / i.Mx.6: How to support touch on touchscreen monitor


I am working on Nitrogen6x board that runs on Yocto 2.1 with Qt 5.6.2 support. I have developed a Qt application that shall support the input options like USB Keyboard, Mouse and Touchscreen and shall support a Full HD resolution display.

I have connected a touchscreen monitor which supports Full HD resolution to the Nitrogen board using HDMI to VGA converter cable, and my application was working fine with the correct resolution and supports plug and play keyboard and mouse connections.

BUT, the touch response on the touchscreen monitor was not received by the Qt Framework and hence the touch interface was not working for me as expected.

When I plug the mouse am seeing the below information on my nitrogen board console:

~ # usb 1-1.1: new low-speed USB device number 8 using ci_hdrc
input: HID 413c:3010 as /devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb1/1-1/1-1.1/1-1.1:1.0/0003:413C:3010.0006/input/input3
hid-generic 0003:413C:3010.0006: input: USB HID v1.00 Mouse [HID 413c:3010] on usb-ci_hdrc.1-1.1/input0

But, When I plug the touchscreen monitor am only seeing this:

~ # usb 1-1.1: new full-speed USB device number 7 using ci_hdrc

I was expecting that the touch screen interface will get automatically detected and will be passed as a input plugin to the Qt application.

I have run make menuconfig and have enabled USB Touch screen rebuilt the kernel. But, still am noticing the below error messages while the kernel is booting:

Galcore version 5.0.11.41671
egalax_ts 2-0004: Failed to read firmware version
egalax_ts: probe of 2-0004 failed with error -5
ft5x06-ts 2-0038: reset fffffffe
ft5x06-ts 2-0038: Could not detect touch screen -19.

Am some how missing to configure the right kernel options to detect the touchscreen. any help on this is appreciable. Thanks in advance.


Solution

  • I have selected the below option: Device Drivers -> HID Devices -> Special HID drivers -> HID Multitouch panels as an embedded driver (*) in my Kernel configuration, and then I have rebuilt the kernel by adding my touchscreen's Vendor ID and Device / Product ID to the files hid-ids.h and hid-multitouch.c at relevant places.

    My touchscreen is working as expected now.