codedor
Posts: 1
Joined: Thu Dec 25, 2014 9:11 pm

Raspbian with an Elo 2515 touchscreen

Thu Dec 25, 2014 9:23 pm

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
Properties:
  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,
Frank

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.

foo8
Posts: 1
Joined: Sat Feb 07, 2015 2:15 pm

Re: Raspbian with an Elo 2515 touchscreen

Sat Feb 07, 2015 2:18 pm

Hi Frank,

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

Kind regards,

Thomas

nelsix
Posts: 1
Joined: Wed Nov 28, 2018 3:50 pm

Re: Raspbian with an Elo 2515 touchscreen

Wed Nov 28, 2018 4:07 pm

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

lsusb

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
Thanks!

jhoger
Posts: 3
Joined: Thu Nov 06, 2014 1:34 am

Re: Raspbian with an Elo 2515 touchscreen

Tue Oct 01, 2019 5:30 pm

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 X.org 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.

jhoger
Posts: 3
Joined: Thu Nov 06, 2014 1:34 am

Re: Raspbian with an Elo 2515 touchscreen

Sat Oct 05, 2019 4:18 am

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
https://www.elotouch.com/support/downloads#/category/346LYmeuAUEI4Qa0sSyiSa/os/3JOU2VmTG8qgYWYIeEsGk2 

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 https://assets.ctfassets.net/of6pv6scuh5x/VTFvAiEmsb3IEzzCrcc0e/046ba0022ca5d8a9c9ec8c366f7f80a2/SW602654_Elo_Linux_MT_USB_Driver_v2.6.1_armv7l.tar 
$ 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
<ENTER>
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

Installation:

$ 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+'

Beautiful.

$ 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/graphical.target.wants/elo.service → /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
/home/pi/src/bin-mt-usb
Before I
$ sudo reboot

Calibration
$ 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 X.org 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"
EndSection

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"
EndSection


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

BobDangit
Posts: 2
Joined: Mon Oct 21, 2019 6:47 pm

Re: Raspbian with an Elo 2515 touchscreen

Mon Oct 21, 2019 6:51 pm

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

DiffEQs
Posts: 1
Joined: Wed Oct 23, 2019 6:25 am

Re: Raspbian with an Elo 2515 touchscreen

Wed Oct 23, 2019 6:36 am

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.

Return to “Other projects”