Page 1 of 1

Raspbian with an Elo 2515 touchscreen

Posted: Thu Dec 25, 2014 9:23 pm
by codedor
Hello all,

new to the forum, hope I'm posting in the right board - if not, please correct me.

I shopped in the bargain bin for a touchscreen I could hook up to the Pi, and found an Elo 19" 2515 for a rock-bottom price. It has a USB connection, and good screen - on boot, dmesg finds the correct device out of the box:

Code: Select all

[    3.396325] usb 1-1.2: new full-speed USB device number 4 using dwc_otg
[    3.520001] usb 1-1.2: New USB device found, idVendor=04e7, idProduct=0126
[    3.530548] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    3.546058] usb 1-1.2: Product: Elo TouchSystems 2515 iTouch Plus USB Touchmonitor
[    3.561427] usb 1-1.2: Manufacturer: Elo TouchSystems
[    3.570200] usb 1-1.2: SerialNumber: 22008054
A bit further the USB bus seems to pick it up correctly in dmesg output:

Code: Select all

[    6.087687] input: Elo TouchSystems Elo TouchSystems 2515 iTouch Plus USB Touchmonitor as /devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/input/input2
[    6.373550] hid-multitouch 0003:04E7:0126.0001: input,hiddev0,hidraw3: USB HID v1.11 Mouse [Elo TouchSystems Elo TouchSystems 2515 iTouch Plus USB Touchmonitor] on usb-bcm2708_usb-1.2/input0
[    6.578070] bcm2708-i2s bcm2708-i2s.0: Failed to create debugfs directory
I get proper screen output, but touch does not work.

I tried evdev:

Code: Select all

>> sudo evtest /dev/input/event2
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x4e7 product 0x126 version 0x111
Input device name: "Elo TouchSystems Elo TouchSystems 2515 iTouch Plus USB Touchmonitor"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 330 (BTN_TOUCH)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value      0
      Min        0
      Max     4095
    Event code 1 (ABS_Y)
      Value      0
      Min        0
      Max     4095
    Event code 47 (ABS_MT_SLOT)
      Value      0
      Min        0
      Max        1
    Event code 53 (ABS_MT_POSITION_X)
      Value      0
      Min        0
      Max     4095
    Event code 54 (ABS_MT_POSITION_Y)
      Value      0
      Min        0
      Max     4095
    Event code 57 (ABS_MT_TRACKING_ID)
      Value      0
      Min        0
      Max    65535
  Property type 1 (INPUT_PROP_DIRECT)
Testing ... (interrupt to exit)
Nothing registers however, and from the output I'm inclined to think that it registers on hardware level on the bus, but not when touched.

Does anybody have any experience with this specific model from Elo - or with Elo in general?

I lurked around the other boards, but I seem to have different problems than the related posts when I was searching. Anybody here to point a bloke in the right direction?

Any help is much appreciated!

Kind regards,

PS: the Pi + touchscreen is to serve as an keypad and interface for opening the door / carport / ... through Vantage domotics system from the outside when visitors have entered our building. They receive the access codes through SMS once we get it up and running.

Re: Raspbian with an Elo 2515 touchscreen

Posted: Sat Feb 07, 2015 2:18 pm
by foo8
Hi Frank,

I have exactly the same problem. Were you able to solve it?

Kind regards,


Re: Raspbian with an Elo 2515 touchscreen

Posted: Wed Nov 28, 2018 4:07 pm
by nelsix
Three years later I have the same issue with a 17" ELO touchscreen monitor

I'm able to see it n dmesg
I'm able to see on the lsusb output
The monitor is fully operational with other OS
The same raspberry PI3 with a 15" ELO1515 works like a charm

Not able to see it as an input device with: cat /proc/bus/input/devices


Code: Select all

Bus 001 Device 005: ID 0dc6:3412 Precision Squared Technology Corp. 
Bus 001 Device 004: ID 04e7:0071 Elo TouchSystems Touchmonitor Interface
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
dmesg | grep Elo

Code: Select all

[    2.658172] usb 1-1.2: Product: Elo TouchSystems Inc. APR Controller
[    2.658183] usb 1-1.2: Manufacturer: Elo TouchSystems
evtest output

Code: Select all

No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:	USB Keyboard
/dev/input/event1:	USB Keyboard
Select the device event number [0-1]: 
Any ideas???? I couldn't find the answer to this in anywhere yet
Any clue will be highly appreciated

Re: Raspbian with an Elo 2515 touchscreen

Posted: Tue Oct 01, 2019 5:30 pm
by jhoger
I've had this working one pi.

From memory, I had to download kernel headers, and build and install the ELO driver, and I had to calibrate the screen using xinput_calibrator. The output of xinput_calibrator has to be copied to xorg conf directories.

I have to do it again today on another pi, I will try to take better notes.

Re: Raspbian with an Elo 2515 touchscreen

Posted: Sat Oct 05, 2019 4:18 am
by jhoger

Code: Select all

 Here are my steps for the ELO 2515. There are some options at the end depending on what works for you. I think some issues are specific to my situation but most is the same for everyone.

Deploying ELO driver for 2515

First, update packages
$ sudo mount -o rw,remount /boot
$ sudo apt-get update
$ sudo apt-get upgrade

Install kernel headers
$ sudo apt-get install raspberrypi-kernel-headers

Download ELO driver 

I downloaded the 2.6.1 ARM multi-touch driver (note that version #'s and links change… you may need to search ELO's site again and figure out the links. But the steps should be the same)

$ mkdir src
$ cd src
$ wget 
$ tar xvf SW602654_Elo_Linux_MT_USB_Driver_v2.6.1_armv7l.tar

Options… in bin-mt-usb directory is a readme.txt . It has the installation instructions. I was logged in via Putty, so I started a screen session so I could have one bash session for scrolling the documentation and one to execute the commands. Do what feels good to you.
$ screen
c-a c
less ./bin-mt-usb/readme.txt
c-a n
Use c-a n (ctrl-a next) to flip back and forth between command area and readme


$ sudo cp -r ./bin-mt-usb/  /etc/opt/elo-mt-usb
$ cd /etc/opt/elo-mt-usb
$ sudo chmod 777 *
$ sudo chmod 444 *.txt

$ sudo cp /etc/opt/elo-mt-usb/99-elotouch.rules /etc/udev/rules.d

$ uname -r
 $ ls -l /etc/opt/elo-mt-usb/*.ko
ls: cannot access '/etc/opt/elo-mt-usb/*.ko': No such file or directory

This means you have to build a kernel module that loads into YOUR kernel. That means you need correct kernel headers for your kernel which is why I ran the command above to install the kernel headers. Hopefully those are for my kernel.

$ cd /etc/opt/elo-mt-usb/elo_mt_input_mod_src
$ make
make -C /lib/modules/4.19.66-v7+/build SUBDIRS=/etc/opt/elo-mt-usb/elo_mt_input_mod_src modules
make[1]: Entering directory '/usr/src/linux-headers-4.19.66-v7+'
  CC [M]  /etc/opt/elo-mt-usb/elo_mt_input_mod_src/elo_mt_input.o
  LD [M]  /etc/opt/elo-mt-usb/elo_mt_input_mod_src/elo_mt_input_mod.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /etc/opt/elo-mt-usb/elo_mt_input_mod_src/elo_mt_input_mod.mod.o
  LD [M]  /etc/opt/elo-mt-usb/elo_mt_input_mod_src/elo_mt_input_mod.ko
make[1]: Leaving directory '/usr/src/linux-headers-4.19.66-v7+'


$ sudo make install

My system uses systemd, so I followed the systemd steps to install the elo whatever-it-does service.

$ sudo cp /etc/opt/elo-mt-usb/elo.service /etc/systemd/system/
$ sudo systemctl enable elo.service
Created symlink /etc/systemd/system/ → /etc/systemd/system/elo.service.
 $ sudo systemctl status elo.service
● elo.service - Invoke Elo service at system startup.
   Loaded: loaded (/etc/systemd/system/elo.service; enabled; vendor preset: enabled)
   Active: inactive (dead)

Instructions want you to reboot. There goes your uptime. Whatever.

I want to find my way back there though so I
$ pwd
Before I
$ sudo reboot

$ sudo chown pi:pi /dev/elo-mt-usb
$ cd /etc/opt/elo-mt-usb
$ DISPLAY=:0.0 ./elova

At this point you would think the monitor would be calibrated, but for me it wasn't mapped properly. It needed flipped or rotated… or something. In my case the display is mounted portrait, which I set in the /boot/config.txt

In my case my problem was solved with the xinput_calibrator tool. So you can try this:
 $ DISPLAY=:0.0 xinput_calibrator --output-type xinput
        Setting calibration data: 0, 4095, 0, 4095
Calibrating EVDEV driver for "Elo MultiTouch(MT) Device Input Module" id=8
        current calibration values (from XInput): min_x=0, max_x=4095 and min_y=0, max_y=4095

Doing dynamic recalibration:
        Inverting X and/or Y axis...
        Setting calibration data: -14, 4073, -4, 4099
        --> Making the calibration permanent <--
  Install the 'xinput' tool and copy the command(s) below in a script that starts with your X session
    xinput set-int-prop "Elo MultiTouch(MT) Device Input Module" "Evdev Axis Calibration" 32 -14 4073 -4 4099
    xinput set-int-prop "Elo MultiTouch(MT) Device Input Module" "Evdev Axes Swap" 8 0

The last two “xinput” commands need to be run somewhere every startup. Keep in mind if the USB bus resets you may lose your mapping and have to re-run the commands. You may want to trigger these commands as a udev rule. But if you're lucky you won't have to do any of this.

Actually that didn't work either. Works for some machines, not this one. So I generated conf file with xinput_calibrator

$ DISPLAY=:0.0 xinput_calibrator --output-type xorg.conf.d
Calibrating EVDEV driver for "Elo MultiTouch(MT) Device Input Module" id=7
        current calibration values (from XInput): min_x=-14, max_x=4073 and min_y=-4, max_y=4099

Doing dynamic recalibration:
        Inverting X and/or Y axis...
        Setting calibration data: -19, 4080, 1, 4074
        --> Making the calibration permanent <--
  copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf' (/usr/share/X11/xorg.conf.d/ in some distro's)
Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "Elo MultiTouch(MT) Device Input Module"
        Option  "Calibration"   "-19 4080 1 4074"
        Option  "SwapAxes"      "0"

This tells you to put it into /etc/X11 but that's not where it's at on the Pi.
The general location is /usr/share/X11/xorg.conf.d/ 

I had to delete the file 45-evdev.conf.
I replaced the file 10-evdev.conf with this content:

Section "InputClass"
        Identifier    "Elo touchscreen Catchall evdev"
        MatchProduct    "Elo MultiTouch(MT) Device Input Module"
        MatchDevicePath    "/dev/input/event*"
        Driver    "evdev"
        Option  "Calibration"   "-14 4058 12 4115"
        Option  "SwapAxes"      "0"

Your mileage may very… different Calibration, SwapAxes, etc.
But xinput_calibrator will usually help you find the right values to use.

Re: Raspbian with an Elo 2515 touchscreen

Posted: Mon Oct 21, 2019 6:51 pm
by BobDangit
Unfortunately this did not work with my ET1919L. Still no response from the touchscreen. Perhaps I'll start over and try with the legacy drivers. I'll post back if I'm successful

Re: Raspbian with an Elo 2515 touchscreen

Posted: Wed Oct 23, 2019 6:36 am
by DiffEQs
I'm also interested in this too. I have an ELO4200L I've been trying to get working, but same exact problem.

I have a 3B+. Tried running latest Raspbian, then Ubuntu Mate 18.03, installing the Linux ARMv7 multi touch 2.6.1 driver from Elo's website, but same issue where lsusb shows the Pi does recognize a device Elo Touchsystems is connected, but it doesn't register any touch events.

The touchscreen works perfectly fine when plugged into a Windows laptop...

Will also update if successful.

Re: Raspbian with an Elo 2515 touchscreen

Posted: Sun Nov 03, 2019 8:10 am
by DiffEQs
I don't think running either Elo's driver or evdev is going to work (at least for my screen, ET4200L).

E-mail response from Elo says that the technology in the TV and the Raspberry Pi not compatible..
After some digging some more, it seems even though the specs of touch TV includes optical, intellitouch, and APR, the USB seems to only send out APR. When looking at Device Information on my Windows 10 PC, it only registers as an APR device.

With the screen connected via USB to the Pi, lsusb -v shows
>> lsusb -v

BUS 001 Device 006: ID 04e7:0074 Elo TouchSystems
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDevice Class 255 Vendor Specific Class
bDeviceSubClass 255 Vendor Specific Subclass
bDeviceProtocol 255 Vendor Specific Protocol
bMaxPacketSize0 8
id Vendor 0x04e7 Elo TouchSystems
idProduct 0x0074
bcdDevice 0.08
iManufacturer 1 Elo TouchSystems
iProduct 2 7002 APR Controller version 1.311

So I think combination of the USB registering as a Vendor Specific Protocol and APR Controller, Elo's website specifically excluding APR from their supported ARM drivers, and the e-mail from Elo saying they are not compatible leads me to believe they aren't going to least not without going way deeper into making that vendor specific protocol work. Or paying Elo for a custom one.

Although I would've liked to use the Pi, I'm moving onto a different mini computer to drive my screen.

Re: Raspbian with an Elo 2515 touchscreen

Posted: Wed Nov 13, 2019 3:20 am
by BobDangit
Thanks for posting back! I was worried that would end up being the case. Guess the project now is building a cheap windows based mini pc... Less than ideal but I guess I could use it to run other processes in the background as well