Bonjour,
J'ai un problème avec udev, j'ai un device qui change de "point de montage" à chaque reboot, alors qu'il me faut un point fixe (ici: /input/event5)
Voilà les info du device en question:
#cat /proc/bus/input/devices
I: Bus=0003 Vendor=0eef Product=0001 Version=0100
N: Name="eGalax Inc."
P: Phys=/input0
S: Sysfs=/class/input/input3
H: Handlers=mouse1 event3 ts1
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=3
Cette fois il est sur event3, la fois d'après sur event2, ...
J'ai ajouté un fichier dans /etc/udev/rules.d/ que j'ai appelée "10-my.rule" et j'ai ai mis:
KERNEL=="mouse1", NAME="input/event5"
Rebooté et toujours sur un autre event que le 5.
J'ai fais attention de mettre le N°10 pour que ma rule soit loadée avant les autres...
H E L P
Merci, bon week-end
# Début de réponse ....
Posté par jlh . Évalué à 3.
Mais il existe udevinfo qui vient avec le package udev.
Essaies : udevinfo -ap /sys/class/input/input3/device/
Tu devrais obtenir une liste de paramètres utilisable pour créer une règle.
Et tu pourras tester la règle que tu auras créée avec :
udevtest /sys/class/input/input3/
Pour des infos plus détaillées voir http://www.reactivated.net/writing_udev_rules.html (en anglais)
[^] # Re: Début de réponse ....
Posté par xenon_hs (site web personnel) . Évalué à 1.
looking at device '/devices/pci0000:00/0000:00:10.0/usb2/2-2':
ID=="2-2"
BUS=="usb"
DRIVER=="usb"
SYSFS{configuration}=="USB TouchScreen"
SYSFS{manufacturer}=="eGalax Inc."
SYSFS{maxchild}=="0"
SYSFS{version}==" 1.10"
SYSFS{devnum}=="7"
SYSFS{speed}=="1.5"
SYSFS{bMaxPacketSize0}=="8"
SYSFS{bNumConfigurations}=="1"
SYSFS{bDeviceProtocol}=="00"
SYSFS{bDeviceSubClass}=="00"
SYSFS{bDeviceClass}=="00"
SYSFS{bcdDevice}=="0100"
SYSFS{idProduct}=="0001"
SYSFS{idVendor}=="0eef"
SYSFS{bMaxPower}=="100mA"
SYSFS{bmAttributes}=="a0"
SYSFS{bConfigurationValue}=="1"
SYSFS{bNumInterfaces}==" 1"
J'ai donc crée une rule:
SYSFS{configuration}=="USB TouchScreen", NAME="event5"
Qui se load avant les autres mais pareil ! il se monte pas sur event5.
Une idée ?
[^] # Re: Début de réponse ....
Posté par jlh . Évalué à 1.
BUS=="usb", SYSFS{manufacturer}=="eGalax Inc.", SYSFS{configuration}=="USB TouchScreen", NAME="%k", SYMLINK="touchscreen"
Cette règle devrait créer un lien symbolique appelé "touchscreen" dans /dev pointant vers ton device quelque soit le nom que le kernel lui attribue au départ.
[^] # Re: Début de réponse ....
Posté par xenon_hs (site web personnel) . Évalué à 1.
Le device est bien crée dans /dev/touchscreen, j'ai donc modifié la ligne dans mon /etc/X11/xorg.conf pour qu'elle pointe sur ce device
C'est le driver evdev qui se charge de translater les donées pour le serveur X dans mon cas, et c'est là le problème:
Quand l'écran est détecté automatiquement, par exemple, sur /dev/input/event3 (et que mon xorg est bien sur cette entrée), tout est ok le curseur suit mon mouvement sur l'écran
Par contre si l'écran est monté sur /dev/touchscreen grâce à la règle sus-écrite (et le xorg.conf adapté) le curseur ne suit pas mon doight mais va se caler dans le coin droite de l'écran.
As-tu une idée ?
Encore merci
[^] # Re: Début de réponse ....
Posté par jlh . Évalué à 1.
Si oui , il faudrait comparer le fichier /var/log/Xorg.0.log avec /dev/input/event3
et avec /dev/touchscreen pour voir si xorg paramètre ton device de la même façon dans les 2 cas.
[^] # Re: Début de réponse ....
Posté par xenon_hs (site web personnel) . Évalué à 1.
Alors j'ai un peu looké, avec la règle ci-dessus mon /dev/touchscreen/ pointe sur /dev/ts1, si je fais un cat de ce device et que je touche mon écran je vois bien la sortie RAW data de mon screen, quand je lances X, il n'arrive pas à interpreter ça et le curseur part n'importe ou.
Par contre avec la règle ci-dessus j'ai un autre device qui s'est crée dans /dev/event2 (surement à cause du NAME"%k"???) et si je fais un cat de ce dossier j'ai la sortie pour X qui apparait et non plus les raw data, donc cela joue si j utilises ce device pour x (le curseur est alors ok).
Bien entendu le %k fait que si le device change de place au boot ben mon écran part sur un autre device ce qui re-pose le problème du départ...
Donc au lieu de name="%k" j'ai tenté un name"touchscreen" je reboot et il me sort toujours des raw data in-interprétables...
Je comprends plus rien.
Merci =)
[^] # Re: Début de réponse ....
Posté par jlh . Évalué à 1.
M'enfin ça n'est pas ce device qui nous intéresse ...
Essaies : udevinfo -q path -n /dev/input/event??
Tu devrais obtenir un chemin dans le répertoire /sys , du genre
/class/input/.....
Aprés : udevinfo -ap /sys/class/le chemin obtenu précedemment
et tu devrais avoir d'autres infos pour écrire une règle pour udev, la bonne cette fois ....
Bonne chance.
[^] # Re: Début de réponse ....
Posté par xenon_hs (site web personnel) . Évalué à 1.
Voilà j'ai une rule qui work impec ! (j'avais un prob avec hotplug c'est pour cela que cela réagissait bizarement....) voilà ce que ça me donne au final:
BUS=="usb", SYSFS{configuration}=="USB TouchScreen", SYSFS{manufacturer}=="eGalax Inc.", NAME="input/event5", SYMLINK="input/touchscreen"
Dernière question après je te laisses tranquille promis !
Dans mon ca l'écran va devoir être mis sous/hors tension alors que le pc est allumé, ce qui implique que le device doit rester le même pour que la partie tactile fonctionne malgré un débranchage/branchage.
Actuellement quand je débranche (physiquement) mon écran et que je le rebranche, la partie tactile répond mais est faussée (axes Y + géométrie/calibration).
Si je fais un #cat /proc/bus/input/devices, avant de débrancher l'écran et de le rebrancher j'ai cela.
********************************
S: Sysfs=/class/input/input4
H: Handlers=mouse1 event4
********************************
et après avoir rebranché (donc contrôles faussé) j'ai
********************************
S: Sysfs=/class/input/input5
H: Handlers=mouse1 event5
********************************
Voilà, tu as peut-être remarqué qu'il y avait quelque chose d'étrange, c'est que dans ma rule je spécifie l'event5 et que c'est le 4 qui est affiché lors du #cat /proc/bus/input/devices, alors que si je controles l'entrée utilisée par X c'est bien l'event5 !
Il y a un flou pour moi de ce côté là, ça serait sympa si tu pouvais encore m'aider la dessus.
Merci bon week-end.
Romain
[^] # Re: Début de réponse ....
Posté par jlh . Évalué à 1.
Et il faut que tu utilise le lien symbolique "input/touchscreen" dans ton fichier xorg.conf. Le lien symbolique sera le seul élément qui n'aura pas changé entre 2 branchements, quelque soit le nom donné au device par le kernel, le lien doit pointé vers lui.
(En même temps, je ne crois pas que le serveur X supporte le branchement à chaud de nouveaux périphériques)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.