eGalax Touchscreen avec Raspberry Pi 3 - La souris revient au même endroit après un clic


0

J'ai un Raspberry Pi 3 et un écran tactile de 15 ", utilisant VGA pour la vidéo (j'utilise un convertisseur pour brancher la prise HDMI du Pi) et un port USB pour les fonctionnalités tactiles.

Lorsque je démarre avec le périphérique branché, le module usbtouchscreen gère le périphérique et crée deux entrées: /dev/input/event3et /dev/input/mouse1. Xorg enregistre l' event3entrée et je peux interagir par contact tactile avec le système, mais pas comme je l'aurais prévu. Je ne peux rien cliquer, je ne fais que déplacer la souris. Il n’enregistre pas non plus l’ mouse1entrée due à no driver found(plus de détails dans les sorties de journal ci-dessous). Les touches s’enregistrent presque partout à l’écran, à l’exception des coins extrêmes, mais la souris revient à peu près au coin inférieur gauche après chaque pression. Quand je dis près du coin inférieur gauche, je veux dire environ 1 / 8ème de l'écran, à l'écart du coin réel sur les deux axes. Après avoir configuré la configuration Xorg, permutez et inversez les axes en 10-evdev.conf:

Option "SwapAxes" "1"
Option "Inverser" "1"

La souris est dans le quadrant inférieur droit. La souris est également contrainte à environ 1/2 à 2/3 de l'écran, quelle que soit l'orientation de l'axe, un peu comme un effet de redimensionnement. Lorsque je clique en haut à gauche de l'écran, la souris se déplace quelque part au milieu de l'écran. Pareil pour toucher toutes les autres parties de l'écran.

J'ai essayé de régler Option "Mode" "Relative"dans la configuration, ce qui permet à la souris de suivre mon doigt n'importe où sur l'écran (la mise à l'échelle 0,5x a donc disparu), mais elle revient à différents endroits, progressant et finissant par atteindre le coin inférieur droit en tant que "position de départ" "après les presses.

J'ai essayé de reconstruire le noyau Raspberry Pi 3 avec toutes les options eGalax / EETI modulaires ou incluses:

CONFIG_TOUCHSCREEN_EGALAX = m
CONFIG_TOUCHSCREEN_EETI = m
CONFIG_TOUCHSCREEN_USB_COMPOSITE = m
CONFIG_TOUCHSCREEN_USB_EGALAX = y

La même chose se passe comme décrit ci-dessus.

J'ai essayé de suivre le guide EETI pour installer leur pilote propriétaire, situé à l' adresse http://www.eeti.com.tw/drivers_Linux.html . J'ai téléchargé le eGTouch_v2.5.5814.L-mafichier, modifié les 4 paramètres du noyau recommandés, appliqué les correctifs de code source kernel versions 2.6+et créé. Lorsque j'ai mis le noyau sur ma carte Pi SD et que je l'ai démarré, le event3et mouse1n'ont pas été créés car ils m'ont fait retirer usbtouchscreendu noyau. Le guide a déclaré que je devais voir mon écran tactile eGalax sans aucun gestionnaire (contrairement à ce mouse1que event3je voyais auparavant) lorsque je me suis enfui, cat /proc/bus/input/devicesmais cela ne s'est pas présenté du tout. De plus, je ne suis pas capable d'interagir du tout via le toucher dans cette configuration.

J'ai essayé de faire clignoter Raspbian, Ubuntu MATE et Arch Linux ARM .img, et ils se sont tous comportés de la même manière, à une exception près. Quelque part au cours de mon processus d’installation d’Ubuntu MATE et apt update && apt upgradeen même temps rpi-update, j’ai testé l’écran pour la première fois depuis le clignotement d’Ubuntu sur le SD et cela a parfaitement fonctionné! Cela me tue, car une fois la mise à niveau et le redémarrage terminés, je n’ai jamais pu me reproduire. J'ai essayé de refaire clignoter Ubuntu sans succès. J'étais confiant que cela resterait et je n'ai donc eu aucune des sorties de journal ou des paramètres de configuration qui l'ont fait ainsi.

Ma théorie est que l' mouse1entrée est ce qui crée des clics, et ce n'est pas enregistré. Selon le journal Xorg ci-dessous:

Adding input device eGalax Inc. USB TouchController (/dev/input/mouse1) No input driver specified, ignoring this device.

Je l' ai essayé d' ajouter /dev/input/mouse1à 10-evdev.confavec , Driver "evdev"mais il me donne le message d'erreur suivant: evdev: eGalax Inc. USB TouchController: Unable to query fd: Inappropriate ioctl for device. On dirait que evdev ne reconnaît pas l’entrée fournie par mouse1. Tous les autres pilotes que je peux essayer?

Divers journal de sortie:

Sortie pertinente de cat / proc / bus / input / devices:

I: Bus=0003 Vendor=0eef Product=0001 Version=0100
N: Name="eGalax Inc. USB TouchController"
P: Phys=usb-3f980000.usb-1.5/input0
S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.0/input/input4
U: Uniq=
H: Handlers=mouse1 event3 
B: PROP=0
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=3

ls -l / dev / input / by-id /:

lrwxrwxrwx 1 root root 9 Nov 25 18:09 usb-DELL_DELL_USB_Keyboard-event-kbd -> ../event2
lrwxrwxrwx 1 root root 9 Nov 25 18:53 usb-eGalax_Inc._USB_TouchController-event-if00 -> ../event3
lrwxrwxrwx 1 root root 9 Nov 25 18:09 usb-Logitech_USB_Receiver-event-if01 -> ../event1
lrwxrwxrwx 1 root root 9 Nov 25 18:09 usb-Logitech_USB_Receiver-event-mouse -> ../event0
lrwxrwxrwx 1 root root 9 Nov 25 18:09 usb-Logitech_USB_Receiver-mouse -> ../mouse0

sortie lsusb:

Bus 001 Device 006: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax TouchScreen
Bus 001 Device 005: ID 413c:2005 Dell Computer Corp. RT7D50 Keyboard
Bus 001 Device 004: ID 046d:c52f Logitech, Inc. Unifying Receiver
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

sortie pertinente des périphériques usb:

T:  Bus=01 Lev=02 Prnt=02 Port=04 Cnt=04 Dev#=  6 Spd=1.5 MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0eef ProdID=0001 Rev=01.00
S:  Manufacturer=eGalax Inc.
S:  Product=USB TouchController
C:  #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=ff Driver=usbtouchscreen

ls / dev / input:

by-id
by-path
event0
event1
event2
event3
mice
mouse0
mouse1

Xorg.0.log sortie pertinente:

[51.878] (II) config / udev: Ajout d'un périphérique d'entrée eGalax Inc. USB TouchController (/ dev / input / event3)
[51.879] (**) TouchController USB d'eGalax Inc.: Application de InputClass "evdev touchscreen catchall"
[51.879] (II) Utilisation du pilote d'entrée 'evdev' pour 'eGalax Inc. USB TouchController'
[51.879] (**) USB TouchController d'eGalax Inc.: signale toujours les événements principaux
[51.879] (**) evdev: eGalax Inc. USB TouchController: Périphérique: "/ dev / input / event3"
[51.879] (-) evdev: eGalax Inc. USB TouchController: fournisseur 0xeef produit 0x1
[51.879] (-) evdev: eGalax Inc. USB TouchController: axes absolus trouvés
[51.879] (-) evdev: eGalax Inc. USB TouchController: axes absolus x et y trouvés
[51.879] (-) evdev: eGalax Inc. USB TouchController: écran tactile absolu trouvé
[51.879] (II) evdev: eGalax Inc. USB TouchController: Configuration en tant qu'écran tactile
[51.879] (**) evdev: eGalax Inc. Contrôleur tactile USB: YAxisMapping: boutons 4 et 5
[51.879] (**) evdev: eGalax Inc. Contrôleur tactile USB: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
[51.879] (**) Option "config_info" "udev: /sys/devices/platform/soc/3f980000.usb/usb1/1-1-1-1-1-1-1-1-1.5: 1.0 / input / input3 / event3"
[51.879] (II) XINPUT: Ajout d'un périphérique d'entrée étendu "eGalax Inc. USB TouchController" (type: TOUCHSCREEN, id 9)
[51.879] (II) evdev: eGalax Inc. USB TouchController: initialisé pour les axes absolus.
[51.880] (**) eGalax Inc. USB TouchController: (accélère) en conservant le schéma d'accélération 1
[51.880] (**) eGalax Inc. USB TouchController: profil d'accélération (accéléré) 0
[51.880] (**) eGalax Inc. USB TouchController: facteur d'accélération (accéléré): 2 000
[51.880] (**) eGalax Inc. USB TouchController: seuil d'accélération (accéléré): 4
[51.881] (II) config / udev: Ajout d'un périphérique d'entrée eGalax Inc. USB TouchController (/ dev / input / mouse1)
[51.881] (II) Aucun pilote d'entrée spécifié, ignorant ce périphérique.
[51.881] (II) Ce périphérique a peut-être été ajouté à un autre fichier de périphérique.
[2310.541] (II) config / udev: retrait du périphérique eGalax Inc. USB TouchController
[2310.573] (II) evdev: eGalax Inc. USB TouchController: Fermer
[2310.574] (II) UnloadModule: "evdev"

dmesg sortie pertinente:

[4.845962] entrée: eGalax Inc. USB TouchController en tant que /devices/platform/soc/3f980000.usb/usb1/1-1-1-1-1.5-1-1.5:1.0/input/input3
[4.846690] usbcore: nouveau pilote d'interface enregistré usbtouchscreen

10-evdev.conf lignes pertinentes:

Section "InputClass"
        Identifiant "evdev touchscreen catchall"
        MatchIsTouchscreen "sur"
        MatchDevicePath "/ dev / input / event *"
    Option "SwapAxes" "1"
    Option "Inverser" "1"
        Pilote "evdev"
EndSection

Si vous avez lu jusqu'ici, merci! Je pensais que plus d'infos valait mieux que moins. Apprécier tous les pointeurs.


La première étape consiste à revenir au pilote usbtouchscreen, à l’utiliser evtest /dev/input/event3(le chemin réel peut changer, assurez-vous d’utiliser le pilote actuel ou à l’utiliser dev/input/by-id) et de voir le type d’événements que vous obtenez et ce qui se produit après le clic qui le fait rebondir. à l'ancien emplacement. dmesgMentionne- t- il un périphérique HID ou HIDRAW?
dirkt

L'exécution de evtest / xinput test révèle une instabilité que la souris prend, parfois même lorsque je ne touche même pas l'écran. Le a [0] (axe 0 ou axe X) bascule entre 1703 et 1704 de manière aléatoire. Parfois, il se met en mode silencieux, mais lorsque je touche l'écran, il revient toujours à cet endroit. Cela change en fonction de mes paramètres d'inversion / échange d'axes. Les seules mentions de hid / hidraw dans dmesg sont mon récepteur USB Logitech (deux fois) et mon clavier USB Dell. Je dois aussi mentionner que je ne peux pas cliquer sur l'écran. Ne peut que déplacer la souris.
Ashish Narasimham

Réponses:


1

J'ai d'abord pensé que le problème était que l'inversion du fil USB faisait fonctionner le moniteur, mais il s'avère que l'écran bouge à l'intérieur du boîtier de l'écran. Il s'est déplacé juste assez pour commencer à fonctionner lorsque j'ai inversé les extrémités du fil USB. Moniteur très capricieux.


Maintenant, la question intéressante est de savoir comment vous obtenez l'effet que vous avez décrit en inversant le câble. Avec un câble hôte-périphérique normal, cela ne peut pas arriver. Peut-être qu'un port OTG est impliqué d'une manière ou d'une autre.
Dirkt

Ouais, c’est pourquoi je n’ai pas essayé pendant si longtemps - je pensais que le câble était identique dans les deux sens. Cependant, il a ce que je viens d'apprendre d'être un noyau de ferrite proche d'un bout, comme ceci: slate.com/blogs/browbeat/2012/11/01/… Je ne sais pas si cela a quelque chose à voir avec l'asymétrie.
Ashish Narasimham

Nope, un noyau de ferrite est juste pour la réduction de bruit EM. Les ports OTG ont une broche supplémentaire, vous pouvez donc utiliser différents câbles pour passer du mode hôte au mode périphérique. Avez-vous regardé les broches dans les bouchons? (Je suis simplement curieux, c'est la première fois de ma vie que j'entends parler d'un tel comportement causé par l'inversion d'un câble).
dirkt

1
Ok, alors j'ai compris le vrai problème. Basculer la clé USB était un facteur confondant, mais le problème est que le moniteur est un moniteur budgétaire et que l'écran réel se déplace à l'intérieur du boîtier du moniteur. En inversant le câble, j'ai dû déplacer le moniteur dans une position dans laquelle il fonctionnait. J'ai transporté le moniteur à un endroit différent et il a fini par faire la même chose. On dirait qu'il est temps de revenir.
Ashish Narasimham
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.