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!
Es muss ein installiertes FreeBSD mit aktuellen Port-Tree und konfigurierten Xorg (ohne Touchscreen-Unterstützung) zur Verfügung stehen.
Zunächst wird geprüft ob der Touchscreen überhaupt am USB-Bus gefunden wird. Hierzu wird der Befehlt dmesg verwendet
% dmesg (...) ugen1.2: <eGalax Inc.> at usbus1 (...)
Die obige Zeile zeigt, dass ein eGalax-Touchscreen vorliegt und gefunden wurde.
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.
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.
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.
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"
Als nächstes wird der Treiber für Xorg installiert.
# cd /usr/ports/x11-drivers/xf86-input-egalax # make install clean
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:
Section "InputDevice" Identifier "Touch0" Driver "egalax" Option "Device" "/dev/uep0" Option "ReverseY" "off" EndSection
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.
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.