PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit 2 Touchscreens



martin_muc
27.10.11, 22:56
Hallo,
ich bin unter Linux völlig neu und bei meinen ersten Versuchen im Rahmen eines Projekts gleich auf Probleme gestoßen, die ich auch durch intensives Googlen nicht lösen konnte, da die gefundenen Lösungsvorschläge nicht funktionieren ;)

Ausgangssituation ist folgende Hardware:
* Acer Aspire 1825 PTC, Netbook mit 11.5" Touchscreen,1366x768. Die 320GB Festplatte wurde durch eine SSD ersetzt.

* Acer T231H 23" Touchscreen, 1920x1080, angeschlossen über HDMI und USB

Als Betriebssystem läuft Ubuntu 11.10

Das Problem: Das Netbook und der Bildschirm werden korrekt erkannt (inklusive Produktbezeichnung). Auch die Einstellung der Auflösung und Position ging problemlos. Leider läuft die Touchfunktion nicht ordnungsgemäß.

Auf jedem der Bildschirme wird das Touch Signal erkannt und auch in die Positionierung des Mauszeigers umgesetzt. Jedoch ist die Positionierung des Mauszeigers nicht korrekt. Ich kann durch Berühren eines Bildschirms jede Position auf beiden Bildschirmen erreichen.
Im Speziellen bedeutet das:
*Rechter Bildschirm, ganz rechts berührt: Mauszeiger ist korrekt positioniert am rechten Bildschirmrand
*Rechter Bildschirm, mittig berührt: Mauszeiger ist zu weit links positioniert
*Rechter Bildschirm, ganz links berührt: Mauszeiger ist zu weit links positioniert am linken Bildschirmrand des linken Monitors

Das inverse Bild ergibt sich durch berühren des linken Monitors.

Alle Versuche, dies durch diverse Kalibrierungseinstellungen zu beheben waren bisher erfolglos.

Bisherige Ansätze (motiviert durch versch. Tutorials):
*Kalibrierung mit xinput_calibrator und erstellen der Datei /etc/X11/xorg.conf.d/99-calibration.conf wie beschrieben
*Kalibrierung mit xinput_calibrator und Modifikation der Datei /usr/share/X11/xorg.conf.d/10-evdev.conf
*Auslesen der Bildschirmwerte mit Evtest und eintragen der Werte in die 10-evdev.conf Datei

Nach jeder Änderung wurde das System neu gestartet, um Fehler auszuschließen. Die Änderung am Problem war aber bei jedem der Lösungsansätze präzise NULL ;)

Fakt ist: Jetzt weiß ich nicht mehr weiter und auch Google bringt keine weiteren Lösungsansätze. Daher bitte ich euch um Rat, wie ich die beiden Bildschirme so aufeinander abstimmen kann, dass bei jedem Bildschirm das Touch Signal nur auf die eigene Bildschirmfläche angewandt wird.

Weitere Informationen:
Am Startbildschirm (vor dem login) ist die Touchfunktion korrekt.
Deaktiviere ich im Anzeigenmanagement einen der Monitore ist auf dem Anderen die Touchfunktion einwandfrei und präzise.

Danke für eure Hilfe schonmal
Martin

gropiuskalle
28.10.11, 00:14
Wie sehen die genannten Dateien denn jetzt aus? Nach welcher Anleitung bist Du vorgegangen?

martin_muc
28.10.11, 06:52
Hallo,
nachdem die genannten Verfahren keine Auswirkung zeigten habe ich alle Änderungen rückgängig gemacht.

verwendete Anleitungen u.a.
http://ubuntuforums.org/showthread.php?t=1755896
http://www.innovationsts.com/blog/?p=3040

Die anderen finde ich spontan nicht mehr. Aber alle liefen darauf hinaus, dass die Werte mit einem Tool (xinput-calibrator oder evtest) ausgelesen werden und in eine der oben genannten Konfigurationsdateien geschrieben werden.

lg
Martin

martin_muc
29.10.11, 19:22
Hallo,
ich habe heute nochmal neu formatiert und Ubuntu neu aufgespielt. Zudem habe ich den Acer Monitor durch einen Faytech Monitor mit eGalax Controller ersetzt.

Stand der Dinge: Den Faytech Monitor konnte ich mit dem eGalax Treibertool so anpassen, das Eingaben auf diesem Monitor korrekt erkannt werden.

Das Problem bleibt weiterhin der Bildschirm des Acer 1825 Notebooks. Dieser basiert auf einem Cando Controller und ich bin scheinbar nicht der erste mit dem Problem ;) Aber vielleicht bekommen wir das hier ja gelöst.

Ich bin weiterhin entsprechend diesem Artikel vorgegangen:
http://wiki.ubuntuusers.de/xorg.conf.d

Zur Anzeige der Geräte verwendete ich "xinput -list". Die Ausgabe ist wie folgt:

chuser@chamsys-Linux:~$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ eGalaxTouch Controller id=10 [slave pointer (2)]
⎜ ↳ Cando 11.6 id=11 [slave pointer (2)]
⎜ ↳ Logitech USB-PS/2 Optical Mouse id=13 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=15 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Sleep Button id=9 [slave keyboard (3)]
↳ CNF9011 id=12 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=14 [slave keyboard (3)]


Cando 11.6 ist demnach der Corpus Delicti.

Daraufhin erstellte ich mir eine Datei mit dem Namen "53-Cando.conf" im Verzeichnis "/usr/share/X11/xorg.conf.d", in dem auch der eGalax Treiber sich verewigt hat.
Das Präfix 53, da der eGalax Treiber sich mit 52 eingetragen hat und ich Überschreibungen als Fehlerquelle ausschließen wollte.

Diese Datei enthält nun folgende Daten:

Section "InputClass"
Identifier "Cando 116"
MatchProduct "Cando 11.6"
MatchDevicePath "/dev/input/event*"
Option "XMin" "500"
Option "YMin" "500"
Option "XMax" "510"
Option "YMax" "510"
EndSection

Die Werte die Min- und Max Koordinaten wurden absichtlich sinnfrei gewählt, um die Auswirkung auf jeden Fall zu erkennen.
Auswirkung = NULL. Sehr schade.

Weiterer Versuch: Festlegung der Min- und Max Koordinaten über die Option "Calibration"

Section "InputClass"
Identifier "Cando 116"
MatchProduct "Cando 11.6"
MatchDevicePath "/dev/input/event*"
Option "Calibration" "500 500 510 510"
EndSection
Auswirkung ist ebenfalls NULL.

In anderen Quellen werden die Optionen auch folgendermaßen bezeichnet:

Section "InputClass"
Identifier "Cando 116"
MatchProduct "Cando 11.6"
MatchDevicePath "/dev/input/event*"
Option "MinX" "500"
Option "MinY" "500"
Option "MaxX" "510"
Option "MaxY" "510"
EndSection
Das funktionierte ebenfalls nicht.

Um zu überprüfen, ob ich das Gerät mit diesem File überhaupt ansprechen kann, verwendete ich folgenden Code:

Section "InputClass"
Identifier "Cando 116"
MatchProduct "Cando 11.6"
MatchDevicePath "/dev/input/event*"
Option "Ignore" "on"
EndSection

Daraufhin wurden keine Eingaben über den Touchscreen am Acer 1825 mehr erkannt. Das Display wird also über die Datei scheinbar angesprochen, nur die Kalibrierung ist nicht möglich.

Die Standarddatei "10-evdev.conf" sieht folgendermaßen aus.


#
# Catch-all evdev loader for udev-based systems
# We don't simply match on any device since that also adds accelerometers
# and other devices that we don't really want to use. The list below
# matches everything but joysticks.

Section "InputClass"
Identifier "evdev pointer catchall"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection

Section "InputClass"
Identifier "evdev keyboard catchall"
MatchIsKeyboard "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection

Section "InputClass"
Identifier "evdev touchpad catchall"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection

Section "InputClass"
Identifier "evdev tablet catchall"
MatchIsTablet "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection

Section "InputClass"
Identifier "evdev touchscreen catchall"
MatchIsTouchscreen "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection

Ich habe daher auf weitere Treiberdefinitionen in meiner Datei "53-..." verzichtet. Leider konnte ich auch keinen spezifischen Treiber für den Cando Controller finden.

Selbstverständlich habe ich nach jeder Änderung an der Datei den Rechner neu gestartet.

Btw.: Unter "/etc/dev/input/by-id" ist eine Datei "usb-Cando_11.6-event-if00" hinterlegt. Das scheint auch seine Richtigkeit zu haben.

Die Frage ist nun: Wie bekomme ich das Ding kalibriert? Gibt es dazu Ideen eurerseits?

Edit: Weitere Hinweise:


chuser@chamsys-Linux:~$ dmesg | grep hid
[ 2.703606] generic-usb 0003:0EEF:0001.0001: input,hiddev0,hidraw0: USB HID v1.00 Pointer [eGalax Inc. USB TouchController] on usb-0000:00:1a.0-1/input0
[ 2.703856] usbcore: registered new interface driver usbhid
[ 2.703859] usbhid: USB HID core driver
[ 3.122755] generic-usb 0003:046D:C03D.0003: input,hidraw1: USB HID v1.10 Mouse [Logitech USB-PS/2 Optical Mouse] on usb-0000:00:1d.0-1/input0
[ 4.802665] cando-touch 0003:2087:0B03.0002: input,hidraw2: USB HID v1.11 Device [Cando 11.6 ] on usb-0000:00:1a.1-1/input0




chuser@chamsys-Linux:~$ lsmod
Module Size Used by
usbtouchscreen 18128 0
parport_pc 32111 0
ppdev 12849 0
arc4 12473 2
snd_hda_codec_hdmi 27535 1
snd_hda_codec_realtek 255882 1
iwlagn 284777 0
snd_hda_intel 28209 2
snd_hda_codec 90901 3 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_i ntel
snd_hwdep 13274 1 snd_hda_codec
snd_pcm 80042 3 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
snd_seq_midi 13132 0
rfcomm 38125 8
snd_rawmidi 25269 1 snd_seq_midi
snd_seq_midi_event 14475 1 snd_seq_midi
iwlcore 148964 1 iwlagn
snd_seq 51291 2 snd_seq_midi,snd_seq_midi_event
sco 17827 2
bnep 17785 2
l2cap 48656 16 rfcomm,bnep
btusb 18160 2
binfmt_misc 13213 1
bluetooth 65493 9 rfcomm,sco,bnep,l2cap,btusb
snd_timer 28659 2 snd_pcm,snd_seq
snd_seq_device 14110 3 snd_seq_midi,snd_rawmidi,snd_seq
mac80211 257001 2 iwlagn,iwlcore
i915 451048 3
cfg80211 156212 3 iwlagn,iwlcore,mac80211
snd 55295 14 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_i ntel,snd_hda_codec,snd_hwdep,snd_pcm,snd_rawmidi,s nd_seq,snd_timer,snd_seq_device
uvcvideo 66851 0
hid_cando 12719 0
psmouse 59039 0
soundcore 12600 1 snd
joydev 17322 0
videodev 75143 1 uvcvideo
serio_raw 12990 0
snd_page_alloc 14073 2 snd_hda_intel,snd_pcm
drm_kms_helper 40971 1 i915
drm 184164 4 i915,drm_kms_helper
i2c_algo_bit 13184 1 i915
video 18951 1 i915
lp 13349 0
parport 36746 3 parport_pc,ppdev,lp
usbhid 41704 1
hid 77084 2 hid_cando,usbhid
ahci 21591 2
libahci 25548 1 ahci
atl1c 36237 0