======Allgemein======
Unter FreeBSD funktioniert ein Touchscreen nicht "out-of-the-box". Daher müssen zunächst einige Handgriffe erledigt werden um den Touchscreen zum Funktionieren zu überzeugen.
Es ist zu erwähnen, dass der Treiber noch recht jung ist und auf Grund dessen nicht sehr stabil läuft!
====== Voraussetzungen ======
Es muss ein installiertes FreeBSD mit aktuellen Port-Tree und konfigurierten Xorg (ohne Touchscreen-Unterstützung) zur Verfügung stehen.
====== Anschluss prüfen ======
Zunächst wird geprüft ob der Touchscreen überhaupt am USB-Bus gefunden wird. Hierzu wird der Befehlt **dmesg** verwendet
% dmesg
(...)
ugen1.2: at usbus1
(...)
Die obige Zeile zeigt, dass ein eGalax-Touchscreen vorliegt und gefunden wurde.
======Kernelmodul installieren======
Im nächsten Schritt wird der **uep**-Treiber, also das Kernelmodul, benötigt. Dieses sollte sich als **root** mit dem Befehl
# kldload uep
laden lassen. (Mit //kldstat// können die geladenen Module angezeigt werden). Im aktuellen Beispiel (FreeBSD 8.1) liegt das Modul jedoch noch nicht in kompilierter Form und kann daher noch nicht geladen werden. Auf Grund dessen müssen zunächst die Kernelquellen installiert und das Modul hieraus kompiliert werden.
===== Systemquellen installieren =====
Wie im Artikel [[Systemquellen aktualisieren]] beschrieben ist werden die Quellen des Systems, inkl. der Kernelquellen, installiert. Sollten die System- und/oder Kernelquellen bereits installiert sein kann dieser Schritt übersprungen werden.
Nach getaner Arbeit liegen nun unter ///usr/src// die Quellen des Systems.
===== Kernelmodul kompilieren und installieren =====
Die Quellen des Kernels liegen unter dem Verzeichnis ///usr/src/sys//. Zum kompilieren des Moduls wird als **root** wie folgt vorgegangen:
# cd /usr/src/sys/modules/usb/uep
# make
Um das Modul nun auch nach ///boot/kernel// zu installieren wird nun (noch immer im Verzeichnis ///usr/src/sys/modules/usb/uep//) der installationsbefehl aufgerufen:
# make install
Nun kann das Modul geladen werden:
# kldload uep
Kontrolliert wird das ganze mit:
# kldstat
Id Refs Address Size Name
1 10 0xc0400000 bb5504 kernel
2 1 0xc3b66000 9000 i915.ko
3 1 0xc3b6f000 14000 drm.ko
4 1 0xc457b000 3000 uep.ko
Wie man sieht ist das Modul (letzte Zeile) geladen.
===== Kernelmodul beim Systemstart laden =====
Um das Modul nicht immer von Hand laden zu müssen wird als **root** die Datei ///boot/loader.conf// bearbeitet und um folgende Zeile ergänzt:
uep_load="YES"
====== Xorg-Treiber installieren ======
Als nächstes wird der Treiber für Xorg installiert.
# cd /usr/ports/x11-drivers/xf86-input-egalax
# make install clean
====== Xorg konfigurieren ======
===== Touchscreen bekannt machen =====
Nachdem das System ein Kernelmodul hat um das Device anzusprechen und der Xorg ein Treiber hat um darauf zuzugreifen wird es Zeit das ganze dem Xorg bekannt zu machen.
Die Datei ///etx/X11/xorg.conf// wird wie folgt editiert:
*olgender Absatz wird ergänzt
Section "InputDevice"
Identifier "Touch0"
Driver "egalax"
Option "Device" "/dev/uep0"
Option "ReverseY" "off"
EndSection
*er Abschnitt **ServerLayout** wird um folgende Zeile ergänzt:
InputDevice "Touch0" "SendCoreEvents"
Nach dem nächsten Start von Xorg sollte der Touchscreen bereits reagieren, wenngleich nicht unbedingt so wie im ersten Ansatz gewünscht. Sollte die Y-Achse vertauscht sein (also beim Tippen oben der Mauszeiger nach unten wandern und umgekehrt) muss die Option **Option "ReverseY" "off"** auf **on** gesetzt werden.
===== Touchscreen kalibrieren =====
Um den Touchscreen zu kalibrieren wird wie folgt vorgegangen. Zunächst wird in der ///etc/X11/xorg.conf// die **Section "InputDevice"** um **Option "Calibrate"** ergänzt:
Section "InputDevice"
Identifier "Touch0"
Driver "egalax"
Option "Device" "/dev/uep0"
Option "Calibrate"
Option "ReverseY" "off"
EndSection
Hernach wird der Xorg gestartet.
# Xorg
Im nun aktiven **Xorg** wird der komplette Rand des Touchscreens mehrmals ringsherum abgefahren damit der Xorg die maximalen Grenzen kennen lernen kann. Wurde dies ein paar mal gemacht wird der **Xorg** wieder beendet. Anschließend wir ein Blick in die Log-Datei **/var/log/Xorg.0.log** geworfen und nach dem **letzten** Auftauchen einer Zeile suchen die ähnlich der folgenden aussieht:
(WW) Touch0: adjusted calibration MinX=50, MaxX=1924, MinY=100, MaxY=1918.
Mit Hilfe dieser Werte wird die Datei ///etc/X11/xorg.conf** erneut editiert und der Passus der **Section "InputDevice"** des Touchscreens angepasst. Die Zeile **Option "Calibrate"//' wird wieder entfernt und hierfür die kalibrierten Werte eingesetzt.
Section "InputDevice"
Identifier "Touch0"
Driver "egalax"
Option "Device" "/dev/uep0"
Option "MinX" "50"
Option "MaxX" "1924"
Option "MinY" "100"
Option "MaxY" "1918"
Option "ReverseY" "off"
EndSection
Mit diesen Änderungen sollte der Touchscreen nun beim nächsten Start kalibriert zur Verfügung stehen.
====== Fehlersuche======
*ollte der Touchscreen überhaupt nicht reagieren so sollte geprüft werden ob das Device ///dev/uep0// überhaupt vorhanden ist.
*ollte der Touchscreen die Y-Achse vertauscht haben ist dies über die Option **ReverseY** korrigiert werden.