Using Hope Industrial Touch Screens with Linux

Ubuntu Operating System
Ubuntu Operating System

“How well do your touch screens work with Linux?” is a question we get very often. While the short answer is always “perfectly!” there is more than one way to support and align our touch screens with Linux operating systems, and which to choose often depends on the particular circumstances of a given application. In this article we will provide a high level overview of some of the more common methods for supporting Linux.

In future articles we will provide step-by-step technical descriptions of how to use these techniques, but in the meantime if you have any specific questions just let us know and we’ll do our best to help you out.

Native Linux Kernel HID Module

Our USB touch screens will be recognized by most OS’ as a standard HID (Human Interface Device) pointing device and Linux is no exception – USB HID kernel modules are installed by default in most Linux distributions. This means that if you plug our screen directly into the USB port it will instantly respond to touch with no other work required.

Connecting the touch screen via RS-232 Serial (included on all Hope touch models) requires a bit more effort, but we had no problems getting this to work on Ubuntu 16.04, Debian 8.5, and CentOS 7 using this guide.

Once responding to touch, you will typically find that the touch screen is not following your finger and needs alignment. We generally recommend aligning either by using xinput_calibrator or doing a manual calibration with EVTest.

xinput_calibrator Alignment Screen
xinput_calibrator Alignment Screen

xinput_calibrator

xinput_calibrator is an open source calibration program that provides a 4-point calibration just like the one supplied by our standard Windows drivers. This program allows some more advanced features like hold-to-right-click and is easy to use, although persisting a calibration after reboot does require editing some text files. Also, xinput_calibrator will not work with multiple monitors which could affect some users.

xinput_calibrator can already be found in many package repositories and is easily installed on Ubuntu 16.04, Debian 8.5, and Fedora 24 (although we had trouble getting the calibration to persist in Fedora due to differing file formats).

CentOS 7 and OpenSUSE 13.2 do not have a package in the repositories, but xinput_calibrator can always be compiled from the source code.

We wrote about xinput_calibrator a few years ago, but look for an update on that article coming soon.

Manual Calibration with EVTest

If you are using a distribution that does not support xinput_calibrator, another option is to set up manual calibration points using EVTest. The basic idea is that you can use the EVTest utility to determine offset points to calibrate your screen, then apply these offset points to the touch screen. This is the approach we took in this blog post and we will give more detailed instructions in a future post.

This approach should technically work in most any Linux distribution.

Elo Linux Binary Drivers

Elo Touch Screen Video Alignment
Elo Touch Screen Video Alignment

Hope Industrial touch screens use Accutouch controllers from Elo Touch, who also provides a set of generic Linux binary drivers, available here.

We successfully tested the USB driver version 4.0.1 and the Serial driver version 3.4.0 on Ubuntu 14.04 (64-bit). Since these drivers come directly from Elo, some advanced features are supported including multiple displays (up to 32, we tested 2), an active touch area, click on touch, click on un-touch, drag delay, beep on touch, and of course a full calibration tool.

While we have successfully tested all of these features, we found this installation to be a bit more difficult than the techniques used above. Unless you need some of these advanced features, we would recommend sticking with xinput_calibrator or the EVTest method.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>