Retourner aux forums || Retourner au forum Linux.debian

Linux.debian : udev, rule pour point de montage d'un device

Posté par xenon_hs (page perso, ) le 21 janvier 2006
0
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

--
Dans la vie il n'y a pas de problèmes mais que des solutions
> Lire le message (9 commentaires, moyenne: 1,2).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

Début de réponse ....

Posté par jlh () le 21/01/2006 à 15:24. (lien). Évalué à 3.

C'est plutôt dans le répertoire /sys qu'il faut chercher des infos pour créer des règles pour udev,
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 (page perso, ) le 22/01/2006 à 15:52. (lien). Évalué à 1.

    Merci our les infos !

    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 ?

    --
    Dans la vie il n'y a pas de problèmes mais que des solutions
    • [^]Re: Début de réponse ....

      Posté par jlh () le 22/01/2006 à 16:43. (lien). Évalué à 1.

      Essaies :
      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 (page perso, ) le 23/01/2006 à 21:47. (lien). Évalué à 1.

        Merci pour tes précieuses info c'est de mieux en mieux !
        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

        --
        Dans la vie il n'y a pas de problèmes mais que des solutions
        • [^]Re: Début de réponse ....

          Posté par jlh () le 24/01/2006 à 10:20. (lien). Évalué à 1.

          /dev/touchscreen pointe bien vers /dev/input/event3 ??

          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 (page perso, ) le 24/01/2006 à 20:21. (lien). Évalué à 1.

            Salut !

            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 =)

            --
            Dans la vie il n'y a pas de problèmes mais que des solutions
            • [^]Re: Début de réponse ....

              Posté par jlh () le 24/01/2006 à 23:08. (lien). Évalué à 1.

              La règle que je t'ai donné n'est pas bonne, elle créée un lien vers le mauvais device, /dev/ts1 est utilisé par le driver de ton écran tactile et se trouve dans /dev/input/ normalement (le NAME="%k" dans ma règle l'a déplacé dans /dev, pour qu'il apparaisse dans /dev/input il faudrait mettre NAME="input/%k")

              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 (page perso, ) le 29/01/2006 à 02:32. (lien). Évalué à 1.

                re !

                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

                --
                Dans la vie il n'y a pas de problèmes mais que des solutions
                • [^]Re: Début de réponse ....

                  Posté par jlh () le 29/01/2006 à 15:56. (lien). Évalué à 1.

                  Je pense qu'il faut modifier ta règle en remplacant NAME="input/event5" par NAME="input/%k", comme ça tu ne modifies pas le nom du device créé par le kernel.
                  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)

Revenir en haut de page || Retourner aux forums || Retourner au forum Linux.debian