Inhaltsverzeichnis

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: <eGalax Inc.> 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:

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.

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