View previous topic :: View next topic |
Author |
Message |
razer l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
Joined: 08 Oct 2004 Posts: 893 Location: Paris - France
|
Posted: Fri Jul 21, 2006 11:51 pm Post subject: [UDEV]Soit çà marche pas, soit j'y comprend rien...(résol |
|
|
J'ai récupéré un scanner USB, ce dernier fonctionne après déjà pas mal de galères, enfin passons
Mon problème actuel est qu'il ne fonctionne qu'en root, pour une sombre histoire de droits sur le fichier /dev/bus/usb/...
Je peux résoudre le problème avec un hack vilain (et encore, pas évident lors d'un brachement à chaud), mais impossible de faire çà proprement avec une règle udev.
Je suis point à point cette documentation : http://www.reactivated.net/writing_udev_rules.html
1. Je commence par brancher mon scanner, et à récupérer les infos :
Code: | # lsusb
Bus 001 Device 019: ID 06bd:2091 AGFA-Gevaert NV SnapScan e20
# udevinfo -a -p /sys/class/usb_device/usbdev1.19/device
looking at device '/devices/pci0000:00/0000:00:1d.0/usb1/1-1':
KERNEL=="1-1"
SUBSYSTEM=="usb"
SYSFS{configuration}==""
SYSFS{product}=="SNAPSCAN"
SYSFS{manufacturer}=="AGFA "
SYSFS{maxchild}=="0"
SYSFS{version}==" 1.00"
SYSFS{devnum}=="19"
SYSFS{speed}=="12"
SYSFS{bMaxPacketSize0}=="8"
SYSFS{bNumConfigurations}=="1"
SYSFS{bDeviceProtocol}=="ff"
SYSFS{bDeviceSubClass}=="ff"
SYSFS{bDeviceClass}=="ff"
SYSFS{bcdDevice}=="0100"
SYSFS{idProduct}=="2091"
SYSFS{idVendor}=="06bd"
SYSFS{bMaxPower}=="100mA"
SYSFS{bmAttributes}=="40"
SYSFS{bConfigurationValue}=="1"
SYSFS{bNumInterfaces}==" 1"
|
Jusque là çà va : j'ai les infos pour créer la règle kivabien :
Code: | # cat /etc/udev/rules.d/92-scanner.rules
SUBSYSTEM=="usb", SYSFS{product}=="SNAPSCAN", GROUP="scanner", MODE="664", OPTIONS+="last_rule" |
Et puis... keudalle, il persiste à me garder les droits :
Code: | # ls -l /dev/bus/usb/001/019
crw-r--r-- 1 root root 189, 18 jui 22 01:31 /dev/bus/usb/001/019 |
Dans la doc que je cite, il propose une méthode de débuggage :
Code: | # udevtest /class/usb_device/usbdev1.19/device
main: looking at device '/devices/pci0000:00/0000:00:1d.0/usb1/1-1' from subsystem 'usb'
main: run: '/sbin/modprobe '
main: run: 'udev_run_devd usb'
main: run: 'socket:/org/kernel/udev/monitor'
main: run: 'socket:/org/freedesktop/hal/udev_event' |
Aucune trace de ma règle, qui à priori devrait apparaitre...
Une idée ???
Last edited by razer on Sat Jul 22, 2006 12:15 am; edited 1 time in total |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
razer l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
Joined: 08 Oct 2004 Posts: 893 Location: Paris - France
|
Posted: Sat Jul 22, 2006 12:14 am Post subject: |
|
|
Ben finalement, je me réponds à moi même...
C'est toujours comme çà lorsqu'on décide par dépit de poster sur ce forum pour de l'aide, alors qu'on est à 2 doigts de la solution...
bon alors voila mon erreur, la commande udevinfo correcte est :
Code: | # udevinfo -a -p /class/usb_device/usbdev1.19
looking at device '/class/usb_device/usbdev1.19':
KERNEL=="usbdev1.19"
SUBSYSTEM=="usb_device"
SYSFS{dev}=="189:18"
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb1/1-1':
ID=="1-1"
BUS=="usb"
DRIVER=="usb"
SYSFS{configuration}==""
SYSFS{product}=="SNAPSCAN"
SYSFS{manufacturer}=="AGFA "
SYSFS{maxchild}=="0"
SYSFS{version}==" 1.00"
SYSFS{devnum}=="19"
SYSFS{speed}=="12"
SYSFS{bMaxPacketSize0}=="8"
SYSFS{bNumConfigurations}=="1"
SYSFS{bDeviceProtocol}=="ff"
SYSFS{bDeviceSubClass}=="ff"
SYSFS{bDeviceClass}=="ff"
SYSFS{bcdDevice}=="0100"
SYSFS{idProduct}=="2091"
SYSFS{idVendor}=="06bd"
SYSFS{bMaxPower}=="100mA"
SYSFS{bmAttributes}=="40"
SYSFS{bConfigurationValue}=="1"
SYSFS{bNumInterfaces}==" 1"
|
Vous remarquerez probablement les différences d'info...
De là, la règle correcte devient :
Code: | # cat /etc/udev/rules.d/92-scanner.rules
BUS=="usb", SYSFS{product}=="SNAPSCAN", SYSFS{manufacturer}=="AGFA ", GROUP="scanner", MODE="664", OPTIONS+="last_rule"
|
Et comme par magie :
Code: | # ls -l /dev/bus/usb/001/020
crw-rw-r-- 1 root scanner 189, 19 jui 22 02:04 /dev/bus/usb/001/020 |
Il n'en demeure pas moins que :
Udev est vicieux à donner des infos différentes en fonction de la manière dont on s'adresse à lui
Difficile de faire valoir à l'utilisateur lambda que GNU/Linux est simple d'utilisation quand une personne qui, comme moi, utilise ce système depuis 10 ans avec la culture apprise, et qui malgré tout met de bonnes heures de galère pour faire fonctionner un simple scanner |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
titoucha Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/10449069954413d790886fc.jpg)
Joined: 21 Jul 2005 Posts: 2374 Location: Genève
|
Posted: Sat Jul 22, 2006 12:48 am Post subject: |
|
|
Je sais pas si j'ose . quand j'ai vu ton message ça ma fait penser que mon scanner ne fonctionnait pas correctement, pour ma part j'ai modifier le fichier /etc/udev/rules.d/50-udev.rules en modifiant la ligne
Code: | # usbfs-like device nodes
SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", NAME="%c", MODE="0644"
par
SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", NAME="%c", MODE="0664", GROUP="usb" |
c'est plus rapide et ça fonctionne, j'y voit un avantage cela fonctionne aussi pour les autres devices usb (appareils photos), par contre il y à un défaut je pense que lors de la prochaine mise à jour de udev cette règle va-t-être mise à la poubelle. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
razer l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
Joined: 08 Oct 2004 Posts: 893 Location: Paris - France
|
Posted: Sat Jul 22, 2006 2:41 am Post subject: |
|
|
titoucha wrote: | Je sais pas si j'ose . quand j'ai vu ton message ça ma fait penser que mon scanner ne fonctionnait pas correctement, pour ma part j'ai modifier le fichier /etc/udev/rules.d/50-udev.rules en modifiant la ligne
Code: | # usbfs-like device nodes
SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", NAME="%c", MODE="0644"
par
SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", NAME="%c", MODE="0664", GROUP="usb" |
c'est plus rapide et ça fonctionne, j'y voit un avantage cela fonctionne aussi pour les autres devices usb (appareils photos), par contre il y à un défaut je pense que lors de la prochaine mise à jour de udev cette règle va-t-être mise à la poubelle. |
Il semblerait tellement plus logique que ta modif soit la config par défaut de udev : il y a un groupe usb, autant s'en servir : faire du chmod 664 sur une groupe root c'est stupide.
Concernant ma méthode, udev était un truc obscur avant de me pancher sur mon soucis de scanner, je voulais étudier un peu l'affaire. Comme bon linuxien qui se respecte, j'ai lu le howto... |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
geekounet Bodhisattva
![Bodhisattva Bodhisattva](/images/ranks/rank-bodhisattva.gif)
![](images/avatars/42499887147a7828d56a1b.png)
Joined: 11 Oct 2004 Posts: 3772
|
Posted: Sat Jul 22, 2006 9:00 am Post subject: |
|
|
titoucha wrote: | Je sais pas si j'ose . quand j'ai vu ton message ça ma fait penser que mon scanner ne fonctionnait pas correctement, pour ma part j'ai modifier le fichier /etc/udev/rules.d/50-udev.rules en modifiant la ligne
Code: | # usbfs-like device nodes
SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", NAME="%c", MODE="0644"
par
SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", NAME="%c", MODE="0664", GROUP="usb" |
c'est plus rapide et ça fonctionne, j'y voit un avantage cela fonctionne aussi pour les autres devices usb (appareils photos), par contre il y à un défaut je pense que lors de la prochaine mise à jour de udev cette règle va-t-être mise à la poubelle. |
Met ta règle modifiée dans un fichier à part, et elle sera pas supprimée ![Smile :)](images/smiles/icon_smile.gif) |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
titoucha Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/10449069954413d790886fc.jpg)
Joined: 21 Jul 2005 Posts: 2374 Location: Genève
|
Posted: Sat Jul 22, 2006 11:24 pm Post subject: |
|
|
Si je la met dans un fichier à part c'est la que je ne comprend pas trop comment udev s'y prend pour hérarchisé ces règles car il va se retrouver avec deux règles pour l'usb qui lui disent de faire prèsque la même chose, mais comment choisit-il la règle? par le numéro du fichier ? 50 étant le numéro des règles de bases tout fichier possédant un numéro plus grand modifie les règles de base.
Bon après mon hypothèse je vais passer à la pratique.
Edit: Bon jais mis la règle modifier dans un fichier nommé 92-usb.rules et remis le fichier de base en ordre, bilan ça fonctionne pas, je continues mes recherches.
Last edited by titoucha on Sat Jul 22, 2006 11:36 pm; edited 1 time in total |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
geekounet Bodhisattva
![Bodhisattva Bodhisattva](/images/ranks/rank-bodhisattva.gif)
![](images/avatars/42499887147a7828d56a1b.png)
Joined: 11 Oct 2004 Posts: 3772
|
Posted: Sat Jul 22, 2006 11:31 pm Post subject: |
|
|
http://reactivated.net/writing_udev_rules.html wrote: | Rule files and semantics
When deciding how to name a device and which additional actions to perform, udev reads a series of rules files. These files are kept in the /etc/udev/rules.d directory, and they all must have the .rules suffix.
Default udev rules are stored in /etc/udev/rules.d/50-udev.rules. You may find it interesting to look over this file - it includes a few examples, and then some default rules proving a devfs-style /dev layout. However, you should not write rules into this file directly.
Files in /etc/udev/rules.d/ are parsed in lexical order, and in some circumstances, the order in which rules are parsed is important. In general, you want your own rules to be parsed before the defaults, so I suggest you create a file at /etc/udev/rules.d/10-local.rules and write all your rules into this file.
In a rules file, lines starting with "#" are treated as comments. Every other non-blank line is a rule. Rules cannot span multiple lines.
One device can be matched by more than one rule. This has it's practical advantages, for example, we can write two rules which match the same device, where each one provides its own alternate name for the device. Both alternate names will be created, even if the rules are in separate files. It is important to understand that udev will not stop processing when it finds a matching rule, it will continue searching and attempt to apply every rule that it knows about. |
|
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
titoucha Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/10449069954413d790886fc.jpg)
Joined: 21 Jul 2005 Posts: 2374 Location: Genève
|
Posted: Sat Jul 22, 2006 11:48 pm Post subject: |
|
|
Merci, dans le cas présent il fallait que je mette ma règle dans 10-local.rules.
Par contre vu mon anglais j'ai pas tout compris les suptilités sur l'ordre des fichier et des règles pour udev, ça m'a l'air assez obscur.
Je me lancerais dans la relecture de ce howto à tête reposée. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|