Dokumentation / Fehlerbehebung / So lesen Sie Berichte zu Touch-Eingaben

So lesen Sie Berichte zu Touch-Eingaben

Einführung und Überblick

Prüfen Sie zunächst, ob Linux das Touchgerät erkennt. Vergleichen Sie gemeldete Kontakte, wenn niemand den Bildschirm berührt und wenn jemand vor Ort gezielt einen bekannten Punkt berührt. So erkennen Sie, ob der Controller von der Realität abweichende Kontakte meldet. Ursache und Reparatur werden dadurch nicht automatisch bestimmt.

Prüfungen und Fehlerbehebung

Remote-Konsole und Linux-Werkzeuge helfen, Touch-Eingaben aus dem Büro oder vor Ort zu untersuchen. Die Diagnose prüft Annahmen vor Firmwareupdate, Neukalibrierung oder Austausch der Touch-Ebene und kann unnötige Arbeiten vermeiden. Sie ersetzt keine Hardwareprüfung.

Mit Monitoring beginnen und dann gezielt prüfen

Prüfen Sie zuerst Zeitstempel und angeschlossene USB-Geräte des neuesten Berichts unter Gerätemonitoring. Ein erkannter Controller meldet nicht zwingend korrekte Berührungen. Dies prüfen Sie im nächsten Schritt.

1. Symptome bestimmen

  • Keine Reaktion: Prüfen Sie, ob das Touchgerät erkannt und verbunden ist.
  • Reaktion an falscher Stelle: Prüfen Sie Touch-Ausrichtung und Zuordnung in den Geräteeinstellungen.
  • Unregelmäßige oder ungewollte Reaktion: Vergleichen Sie Kontakte ohne Berührung und bei gezieltem Berühren.
  • Verzögerung: Unterscheiden Sie verzögerte Eingabe von langsamer Anwendungsreaktion. Ein Zustandsabzug allein misst keine Latenz.
Touch-Eingabe und Anwendungsreaktion unterscheiden

Funktioniert eine entfernte Maus, aber nicht die Berührung, beweist dies keinen Touchpaneldefekt. Vergleichen Sie die Linux-Eingabedaten mit der Anwendungsreaktion. Unter Wayland beeinflussen XInput-Änderungen möglicherweise nicht die vom Player verwendete Eingabe. Dieselbe Matrix erneut zu setzen ist keine Reparatur.

2. Meldungen des Touchgeräts prüfen

Öffnen Sie den folgenden Befehlsblock und führen Sie ihn in der Remote-Konsole aus. Er liest einmalig den Zustand aus und ändert nichts. Speichern Sie zuerst eine Ausgabe ohne Bildschirmberührung. Wiederholen Sie die Abfrage dann bei gezielter Berührung eines bekannten Punkts vor Ort. Vorgänge zwischen den beiden Abfragen werden nicht aufgezeichnet.

Befehl für eine einmalige Prüfung anzeigen
python3 - <<'PY'
#!/usr/bin/env python3
"""Linux-evdev-Zustandsabzug mit reinem Lesezugriff. Kein Reset, Grab, Kalibrieren oder Schreiben.

Benötigt Python 3, das generische Linux-ioctl-Layout (z. B. x86/ARM) und Leseberechtigung
für /dev/input/event*. Typ-B-Kontakte werden aus dem Kernelzustand abgefragt.
Rohe Achsen vor Rotation/Kalibrierung des Compositors. Zum Vergleich erneut ausführen.
"""
import array
import fcntl
import glob
import os

def query(fd, number, size, initial=None):
    data = bytearray(size) if initial is None else bytearray(initial)
    fcntl.ioctl(fd, (2 << 30) | (size << 16) | (ord('E') << 8) | number, data, True)
    return data

def absinfo(fd, code):
    a = array.array('i')
    a.frombytes(query(fd, 0x40 + code, 24))
    return a

def slots(fd, code, count):
    a = array.array('i', [code] + [0] * count)
    data = query(fd, 0x0a, len(a) * a.itemsize, a.tobytes())
    result = array.array('i'); result.frombytes(data)
    return result[1:]

def position(value, limits):
    lo, hi = limits[1], limits[2]
    return 'n/a' if hi <= lo else '{:.1f}%'.format(100 * (value - lo) / (hi - lo))

def main():
    found = denied = 0
    for path in sorted(glob.glob('/dev/input/event*')):
        try:
            fd = os.open(path, os.O_RDONLY | os.O_NONBLOCK)
        except PermissionError:
            denied += 1; continue
        except OSError as error:
            print(path, error); continue
        try:
            bits = query(fd, 0x20 + 3, 64)
            has = lambda code: bool(bits[code // 8] & (1 << (code % 8)))
            keys = query(fd, 0x20 + 1, 96)
            touch_supported = bool(keys[330 // 8] & (1 << (330 % 8)))
            multi = has(47) and has(57) and has(53) and has(54)
            if not multi and not (touch_supported and has(0) and has(1)):
                continue
            found += 1
            name = query(fd, 0x06, 256).split(b'\0', 1)[0].decode(errors='replace')
            print('\nGerät:', path, name)
            print('Nur Zustandsabzug; Koordinaten sind rohe Sensorachsen, keine Bildschirmpixel.')
            if multi:
                count = absinfo(fd, 47)[2] + 1
                if not 1 <= count <= 256:
                    print('Nicht unterstützte Slotanzahl:', count); continue
                tracking = slots(fd, 57, count)
                xs, ys = slots(fd, 53, count), slots(fd, 54, count)
                xr, yr = absinfo(fd, 53), absinfo(fd, 54)
                active = [i for i, value in enumerate(tracking) if value >= 0]
                print('Aktive Kontakte:', len(active))
                for i in active:
                    print('Slot', i, 'ID', tracking[i], 'X=', xs[i], position(xs[i], xr),
                          'Y=', ys[i], position(ys[i], yr))
            else:
                print('Keine Typ-B-Kontaktanzahl; nur Single-Touch-Zustand.')
                x, y = absinfo(fd, 0), absinfo(fd, 1)
                print('X=', x[0], position(x[0], x), 'Y=', y[0], position(y[0], y))
            if touch_supported:
                state = query(fd, 0x18, 96)
                print('BTN_TOUCH:', bool(state[330 // 8] & (1 << (330 % 8))))
        except OSError as error:
            print(path, 'Dieses Gerät kann nicht gelesen werden:', error)
        finally:
            os.close(fd)
    if not found:
        print('Kein unterstütztes Gerät ausgelesen. Dies beweist keinen Hardwaredefekt.')
    if denied:
        print('Zugriff verweigert bei', denied, 'Eingabegerät(en). Kontaktieren Sie den autorisierten Support.')

if __name__ == '__main__':
    main()

PY

Dieselbe Prüfung können Sie auch durchführen mit dem herunterladbaren Diagnoseskript.

Technischer Hinweis für Administratoren

Das Skript benötigt Linux, Python 3 und Leseberechtigung für /dev/input/event*. Es installiert nichts, ändert keine Kalibrierung, trennt keinen Treiber und blockiert keine Eingaben anderer Anwendungen. Die Liste kann weitere Zeigegeräte enthalten. Identifizieren Sie den richtigen Controller am Namen. Bei nicht unterstützten Eingabetypen kann die Kontaktanzahl fehlen. Bitten Sie bei verweigertem Zugriff Ihren Anbieter um Hilfe, statt Berechtigungen pauschal zu ändern.

Wenn die Konsole nur SEND OK zurückgibt

Eine Versandbestätigung ist weder Befehlsausgabe noch Abschlussnachweis. Liefert die Konsole keine Ergebnisse mehr, insbesondere nach dem Stoppen der Anzeigeanwendung, ist Schweigen kein leerer Diagnosebefund. Vereinbaren Sie eine unabhängige Prüfung über einen berechtigten Wartungszugang oder vor Ort. Siehe auch Hinweise zur Remote-Konsole.

3. Kontakte und Koordinaten auswerten

Worauf Sie achten solltenBedeutung
GerätName und Kennung des Eingabegeräts unter Linux. Suchen Sie den Touchcontroller anhand seines Namens.
Aktive KontakteAnzahl aktuell gemeldeter Kontakte eines unterstützten Multitouchcontrollers. Ohne Berührung sollten es null sein.
Slot / IDKennzeichnet einen Kontakt, keine nummerierte Bildschirmposition.
X / YVom Sensor gemeldete Position. Prozentwerte sind nicht automatisch Pixel oder Abstände vom linken und oberen Rand.
BTN_TOUCHTrue bedeutet gemeldete Berührung, False keine gemeldete Berührung, sofern das Gerät diese Angabe liefert.

Beispielausgabe, keine Messung Ihres Geräts:

Gerät: /dev/input/eventN Beispiel-Touchcontroller
Aktive Kontakte: 1
Slot 0 ID 12 X= 600 50.0% Y= 1100 100.0%
BTN_TOUCH: True

Weiteres Vorgehen anhand des Ergebnisses

  • Kontakte bleiben ohne Berührung bestehen: Vergleichen Sie ihre Positionen mit bekannten Berührungen und prüfen Sie Bereich, Rand oder Gehäuse. Dies ist ein Prüfhinweis, kein Beweis für Schmutz oder einen Defekt.
  • Kontakte entsprechen echten Berührungen, aber die Anwendung reagiert nicht: Prüfen Sie Ausrichtung und Zuordnung in den Touch-Ausrichtungseinstellungen. Ein korrekter Eingabeabzug allein beweist keine korrekte Anwendungsreaktion.
  • Gerät fehlt oder Auslesen schlägt fehl: Speichern Sie die Ausgabe und senden Sie sie an Ihren Anbieter. Ursache können Berechtigungen, nicht unterstützte Eingaben oder Verbindungen sein. Die Liste allein beweist keinen Defekt.
Technischer Hinweis für Administratoren

X und Y sind rohe Sensorachsen. Prozentwerte beschreiben die Position im vom Treiber gemeldeten Wertebereich. Sie sind nicht automatisch Bildschirmpixel oder Abstände von links und oben. Rotation, Kalibrierung und Zuordnung können den Zusammenhang verändern. Vergleichen Sie bekannte Berührungen, um einen physischen Punkt zu lokalisieren. Werte werden nicht atomar gelesen; wiederholen Sie bei bewegten Kontakten den Befehl.

Ein ohne Berührung gemeldeter Kontakt kann die Prüfung auf einen bestimmten Bereich lenken. So lassen sich Annahmen vor Firmwareupdates oder unbegründetem Teiletausch prüfen. Er beweist nicht, dass Schmutz, mechanischer Druck, Controllerzustand oder Defekt die Ursache ist. Null Kontakte zu einem Zeitpunkt schließen sporadische Probleme nicht aus. Fehlende Erkennung oder Lesefehler beweisen keinen Hardwaredefekt.

Beispiel: Kontakte ohne Bildschirmberührung

Bei einer Serviceprüfung meldete der Controller wiederholt vier aktive Kontakte nahe dem unteren Rand und BTN_TOUCH: True, obwohl niemand den Bildschirm berührte. Nach einem Software-Reset kamen sie mit neuen IDs zurück. Dies bestätigt die Meldungen, nicht ihre Ursache. Neue IDs oder ein geänderter Event-Dateiname beweisen keine Behebung. Vergleichen Sie eine neue Abfrage und prüfen Sie den betreffenden Gehäusebereich vor weiteren Änderungen.

4. Oberfläche und Gehäuse prüfen

Prüfen Sie Oberfläche und Ränder auf Schmutz, Feuchtigkeit, anhaftende Gegenstände oder Gehäusedruck. Beachten Sie die Reinigungsvorgaben des Herstellers. Klären Sie bei Türen mit Touchfolie, ob das Problem nach Wartung oder Positionsänderung begann.

5. Ausgangszustand sachgerecht wiederherstellen

Dokumentieren Sie den Zustand vor und nach jedem Eingriff. Die Kennung /dev/input/eventN kann sich nach Neustart oder erneutem Anschließen ändern. Identifizieren Sie den Controller erneut am Namen statt anhand einer alten Eingabenummer. Ein Treiberreset kann den Controller weiter mit Strom versorgen und garantiert keinen vollständigen Hardware-Reset.

Manche Konstruktionen passen den Touchcontroller beim Einschalten automatisch an. Wird danach eine Tür oder Folie bewegt, können bei diesen Geräten falsche Kontakte auftreten. Dies gilt nicht allgemein. Klären Sie das Vorgehen mit dem Hardwareanbieter.

Schließen Sie zuerst die Wartung ab, schließen Sie Türen und bringen Sie das Gehäuse in normale Betriebsposition. Empfiehlt der Hersteller eine vollständige Stromtrennung, muss sie auch den möglicherweise über USB versorgten Touchcontroller umfassen. Ein Playerneustart unterbricht diese Versorgung eventuell nicht. Eine berechtigte Person muss das vorgesehene Verfahren befolgen. Bewegen Sie das Gehäuse nach dem Einschalten nicht mehr.

Eine USB-Wiederherstellung aus der Ferne hängt von der Verkabelung ab und kann weitere Geräte trennen. Diese Anleitung enthält deshalb weder einen universellen Resetbefehl noch eine Firmwareupdate-Anweisung.

Verwandte Themen und nächste Schritte

6. Ergebnis prüfen und Befunde weitergeben

Vergleichen Sie erneut den unberührten Zustand mit mehreren Berührungen an bekannten Stellen. Senden Sie dem Support Controllername, Ausgabe, Symptome, Bildschirmausrichtung und den letzten Eingriff. Geben Sie an, ob vollständige Stromtrennung half und ob Türbewegungen das Problem beeinflussen. Vereinbaren Sie bei Fortbestehen eine Hardwareprüfung.

Haben Sie die gesuchte Information nicht gefunden?
Wenden Sie sich an Ihren Softwareanbieter.