Raspberry Pi – USB touchscreen kalibratie

raspberry pi logo

touch screen icon

Deze pagina beschrijft het kalibreren van een USB touchscreen dat aangesloten is op een Raspberry Pi, ik heb 3 avonden gezeten en research gedaan, vele mogelijkheden onderzocht en veel trial & error ondervonden, op deze pagina de juiste oplossing die bij mij heeft gewerkt!

Ik heb onlangs een LCD scherm gekocht met touchscreen ingebouwd, het gaat om een “Flatron L1510SF”:

Flatron L1510SF

Dit scherm heeft alleen een VGA ingang, dus er zit nu een HDMI <> VGA tussen en dat werkt perfect:

HDMI naar VGA converter

De USB B uitgang van de touchscreen is aangesloten op de Raspberry Pi en word in linux herkend als:

xinput_calibrator installeren

Je kan xinput_calibrator installeren met het volgende commando:

sudo apt-get install -y xinput-calibrator

Zelf compileren kan ook, zie het voorbeeld hier.

xinput_calibrator starten

Let op, dit kan niet vanuit een SSH/VNC verbinding, je zal dit vanuit de console op de desktop moeten uitvoeren!

Open de console, en start het kalibratieprogramma met het commando:  xinput_calibrator

Het volgende scherm zal opkomen, hier kun je de touchscreen configureren doormidden van de punten aan te drukken op het scherm.

xinput_calibrator screen

TIP: Gebruik een aanwijzer of pincet om zo precies mogelijk op de kruisjes te drukken.

Nadat je op de vier kruisjes in de hoeken hebt gedrukt, verschijnt deze console output:

xinput_calibrator console screen


WHEEZY/JESSIE

Hierin staan de kalibratie getallen en instellingen, er wordt ook beschreven hoe je de calibratie permanent kan maken (na reboot) door bepaalde instellingen op te slaan in het volgende bestand:

/etc/X11/xorg.conf.d/99-calibration.conf

Voordat je meteen een sudo nano uitvoert….de folder moet eerst aangemaakt worden, met het commando:

sudo mkdir /etc/X11/xorg.conf.d

Maak nu het bestand aan met het commando:

sudo nano /etc/X11/xorg.conf.d/99-calibration.conf

Voeg de inhoud daar aan toe die je voorgesteld krijgt, in mijn geval:

Maar…de assen moesten na kalibratie alsnog omgekeerd worden, ik heb daarom deze regels toegevoegd:

Dat maakt het totaalplaatje:

Druk op CTRL+S en dan op CTRL+X om het bestand op te slaan en nano af te sluiten, zo worden de instellingen geladen als de Raspberry Pi opnieuw opgestart word.


STRETCH

Ja…veel zoek- en puzzelwerk geweest, op de Stretch image draait nu “x server” welke “libinput” gebruikt om invoer apparaten af te handelen in plaats van “evdev“.

libinput

libinput negeert bovenstaande regels, en reageert alleen nog op de instellingen van “Transformation Matrix”, in het kort:

Waarbij je deze instellingen kan gebruiken voor:
X-as inverteren: Option "TransformationMatrix" "-1 0 1 0 1 0 0 0 1"
Y-as inverteren: Option "TransformationMatrix" "1 0 0 0 -1 1 0 0 1"
X-as en Y-as omkeren: Option "TransformationMatrix" "0 1 0 1 0 0 0 0 1"

Maar dat geeft nogal een puzzelwerk bij deze monitor, ook kan je niet eenvoudig de calibratie gegevens er in kwijt.

Ps. veranderingen toepassen zonder het systeem opnieuw op te starten:  sudo service lightdm restart

Toch EVDEV gebruiken

Je kan dezelfde configuratie gebruiken zoals boven aangegeven voor Wheezy/Jessie, maar dan moet je wel evdev installeren:

Stap 1

Installeer evdev:

sudo apt-get install xserver-xorg-input-evdev

Stap 2

Er is nu een configuratiebestand:

/usr/share/X11/xorg.conf.d/10-evdev.conf

aangemaakt, heel belangrijk is dat deze geladen wordt na libinput (40-libinput.conf)…. dat doe je door dit bestand een hoger getal te geven (bijvoorbeeld 45):

sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf

Verwijder oude “10-” bestand:

sudo rm /usr/share/X11/xorg.conf.d/10-evdev.conf

Start de Raspberry opnieuw op: sudo reboot


Troubleshooting

Je kan altijd in het XORG log kijken als er iets aan de hand is:

cat /var/log/Xorg.0.log