linux-hotplug.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Use GROUP= in a rule matching an interface of the device?
@ 2010-09-09  9:21 Ludovic Rousseau
  2010-09-09  9:36 ` Kay Sievers
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: Ludovic Rousseau @ 2010-09-09  9:21 UTC (permalink / raw)
  To: linux-hotplug

Hello,

I am trying to write a udev configuration file to change the group
ownership of the device if the device contains a CCID interface
(bInterfaceClass = 11 or 0x0B).

I would like to use something like:
ATTR{bInterfaceClass}="0b", GROUP="pcscd"
but that does not work.

I also tried ATTRS instead of ATTR
ATTRS{bInterfaceClass}="0b", GROUP="pcscd"
but it does not work either.

One solution I found to work is:
ATTRS{bInterfaceClass}="0b", RUN+="/bin/chgrp pcscd $root/$parent"


It looks like the problem is that my rule matches on an attribute of
an interface instead of an attribute of the device.
Is it possible/supported to use GROUP= in my case?

Thanks

Some more info:
Debian testing/squeeze system
kernel 2.6.34-1-686
udev 160-1

$ udevadm monitor --env --kernel --udev

KERNEL[1284023092.630235] add
/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1.1 (usb)
UDEV_LOG=3
ACTION­d
DEVPATH=/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1.1
SUBSYSTEM=usb
DEVNAME=bus/usb/003/035
DEVTYPE=usb_device
DEVICE=/proc/bus/usb/003/035
PRODUCTŽ6/3437/100
TYPE=0/0/0
BUSNUM\03
DEVNUM\x035
SEQNUM\x1538
MAJOR\x189
MINOR)0

KERNEL[1284023092.633197] add
/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1.1/3-1.1:1.0 (usb)
UDEV_LOG=3
ACTION­d
DEVPATH=/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1.1/3-1.1:1.0
SUBSYSTEM=usb
DEVTYPE=usb_interface
DEVICE=/proc/bus/usb/003/035
PRODUCTŽ6/3437/100
TYPE=0/0/0
INTERFACE\x11/0/0
MODALIAS=usb:v08E6p3437d0100dc00dsc00dp00ic0Bisc00ip00
SEQNUM\x1539

UDEV  [1284023092.642405] add
/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1.1 (usb)
UDEV_LOG=3
ACTION­d
DEVPATH=/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1.1
SUBSYSTEM=usb
DEVNAME=/dev/bus/usb/003/035
DEVTYPE=usb_device
DEVICE=/proc/bus/usb/003/035
PRODUCTŽ6/3437/100
TYPE=0/0/0
BUSNUM\03
DEVNUM\x035
SEQNUM\x1538
ID_VENDOR=Gemplus
ID_VENDOR_ENC=Gemplus
ID_VENDOR_ID\be6
ID_MODEL=USB_SmartCard_Reader
ID_MODEL_ENC=USB\x20SmartCard\x20Reader
ID_MODEL_ID437
ID_REVISION\x0100
ID_SERIAL=Gemplus_USB_SmartCard_Reader
ID_BUS=usb
ID_USB_INTERFACES=:0b0000:
MAJOR\x189
MINOR)0
DEVLINKS=/dev/char/189:290

UDEV  [1284023092.663831] add
/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1.1/3-1.1:1.0 (usb)
UDEV_LOG=3
ACTION­d
DEVPATH=/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1.1/3-1.1:1.0
SUBSYSTEM=usb
DEVTYPE=usb_interface
DEVICE=/proc/bus/usb/003/035
PRODUCTŽ6/3437/100
TYPE=0/0/0
INTERFACE\x11/0/0
MODALIAS=usb:v08E6p3437d0100dc00dsc00dp00ic0Bisc00ip00
SEQNUM\x1539


$ udevadm info --path /devices/pci0000:00/0000:00:1d.1/usb3/3-1 --attribute-walk

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:1d.1/usb3/3-1':
    KERNEL="3-1"
    SUBSYSTEM="usb"
    DRIVER="usb"
    ATTR{configuration}=""
    ATTR{bNumInterfaces}=" 1"
    ATTR{bConfigurationValue}="1"
    ATTR{bmAttributes}="e0"
    ATTR{bMaxPower}="100mA"
    ATTR{urbnum}="756"
    ATTR{idVendor}="04cc"
    ATTR{idProduct}="1122"
    ATTR{bcdDevice}="0110"
    ATTR{bDeviceClass}="09"
    ATTR{bDeviceSubClass}="00"
    ATTR{bDeviceProtocol}="00"
    ATTR{bNumConfigurations}="1"
    ATTR{bMaxPacketSize0}="64"
    ATTR{speed}="12"
    ATTR{busnum}="3"
    ATTR{devnum}="2"
    ATTR{devpath}="1"
    ATTR{version}=" 1.10"
    ATTR{maxchild}="5"
    ATTR{quirks}="0x0"
    ATTR{avoid_reset_quirk}="0"
    ATTR{authorized}="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.1/usb3':
    KERNELS="usb3"
    SUBSYSTEMS="usb"
    DRIVERS="usb"
    ATTRS{configuration}=""
    ATTRS{bNumInterfaces}=" 1"
    ATTRS{bConfigurationValue}="1"
    ATTRS{bmAttributes}="e0"
    ATTRS{bMaxPower}="  0mA"
    ATTRS{urbnum}="34"
    ATTRS{idVendor}="1d6b"
    ATTRS{idProduct}="0001"
    ATTRS{bcdDevice}="0206"
    ATTRS{bDeviceClass}="09"
    ATTRS{bDeviceSubClass}="00"
    ATTRS{bDeviceProtocol}="00"
    ATTRS{bNumConfigurations}="1"
    ATTRS{bMaxPacketSize0}="64"
    ATTRS{speed}="12"
    ATTRS{busnum}="3"
    ATTRS{devnum}="1"
    ATTRS{devpath}="0"
    ATTRS{version}=" 1.10"
    ATTRS{maxchild}="2"
    ATTRS{quirks}="0x0"
    ATTRS{avoid_reset_quirk}="0"
    ATTRS{authorized}="1"
    ATTRS{manufacturer}="Linux 2.6.34-1-686 uhci_hcd"
    ATTRS{product}="UHCI Host Controller"
    ATTRS{serial}="0000:00:1d.1"
    ATTRS{authorized_default}="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.1':
    KERNELS="0000:00:1d.1"
    SUBSYSTEMS="pci"
    DRIVERS="uhci_hcd"
    ATTRS{vendor}="0x8086"
    ATTRS{device}="0x27c9"
    ATTRS{subsystem_vendor}="0x1028"
    ATTRS{subsystem_device}="0x01ad"
    ATTRS{class}="0x0c0300"
    ATTRS{irq}="22"
    ATTRS{local_cpus}="ffffffff"
    ATTRS{local_cpulist}="0-31"
    ATTRS{modalias}="pci:v00008086d000027C9sv00001028sd000001ADbc0Csc03i00"
    ATTRS{dma_mask_bits}="32"
    ATTRS{consistent_dma_mask_bits}="32"
    ATTRS{broken_parity_status}="0"
    ATTRS{msi_bus}=""

  looking at parent device '/devices/pci0000:00':
    KERNELS="pci0000:00"
    SUBSYSTEMS=""
    DRIVERS=""


$ udevadm info --path
/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1.1/3-1.1:1.0
--attribute-walk

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1.1/3-1.1:1.0':
    KERNEL="3-1.1:1.0"
    SUBSYSTEM="usb"
    DRIVER=""
    ATTR{bInterfaceNumber}="00"
    ATTR{bAlternateSetting}=" 0"
    ATTR{bNumEndpoints}="03"
    ATTR{bInterfaceClass}="0b"
    ATTR{bInterfaceSubClass}="00"
    ATTR{bInterfaceProtocol}="00"
    ATTR{modalias}="usb:v08E6p3437d0100dc00dsc00dp00ic0Bisc00ip00"
    ATTR{supports_autosuspend}="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1.1':
    KERNELS="3-1.1"
    SUBSYSTEMS="usb"
    DRIVERS="usb"
    ATTRS{configuration}=""
    ATTRS{bNumInterfaces}=" 1"
    ATTRS{bConfigurationValue}="1"
    ATTRS{bmAttributes}="a0"
    ATTRS{bMaxPower}="200mA"
    ATTRS{urbnum}="9"
    ATTRS{idVendor}="08e6"
    ATTRS{idProduct}="3437"
    ATTRS{bcdDevice}="0100"
    ATTRS{bDeviceClass}="00"
    ATTRS{bDeviceSubClass}="00"
    ATTRS{bDeviceProtocol}="00"
    ATTRS{bNumConfigurations}="1"
    ATTRS{bMaxPacketSize0}="8"
    ATTRS{speed}="12"
    ATTRS{busnum}="3"
    ATTRS{devnum}="35"
    ATTRS{devpath}="1.1"
    ATTRS{version}=" 1.10"
    ATTRS{maxchild}="0"
    ATTRS{quirks}="0x0"
    ATTRS{avoid_reset_quirk}="0"
    ATTRS{authorized}="1"
    ATTRS{manufacturer}="Gemplus"
    ATTRS{product}="USB SmartCard Reader"

  looking at parent device '/devices/pci0000:00/0000:00:1d.1/usb3/3-1':
    KERNELS="3-1"
    SUBSYSTEMS="usb"
    DRIVERS="usb"
    ATTRS{configuration}=""
    ATTRS{bNumInterfaces}=" 1"
    ATTRS{bConfigurationValue}="1"
    ATTRS{bmAttributes}="e0"
    ATTRS{bMaxPower}="100mA"
    ATTRS{urbnum}="756"
    ATTRS{idVendor}="04cc"
    ATTRS{idProduct}="1122"
    ATTRS{bcdDevice}="0110"
    ATTRS{bDeviceClass}="09"
    ATTRS{bDeviceSubClass}="00"
    ATTRS{bDeviceProtocol}="00"
    ATTRS{bNumConfigurations}="1"
    ATTRS{bMaxPacketSize0}="64"
    ATTRS{speed}="12"
    ATTRS{busnum}="3"
    ATTRS{devnum}="2"
    ATTRS{devpath}="1"
    ATTRS{version}=" 1.10"
    ATTRS{maxchild}="5"
    ATTRS{quirks}="0x0"
    ATTRS{avoid_reset_quirk}="0"
    ATTRS{authorized}="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.1/usb3':
    KERNELS="usb3"
    SUBSYSTEMS="usb"
    DRIVERS="usb"
    ATTRS{configuration}=""
    ATTRS{bNumInterfaces}=" 1"
    ATTRS{bConfigurationValue}="1"
    ATTRS{bmAttributes}="e0"
    ATTRS{bMaxPower}="  0mA"
    ATTRS{urbnum}="34"
    ATTRS{idVendor}="1d6b"
    ATTRS{idProduct}="0001"
    ATTRS{bcdDevice}="0206"
    ATTRS{bDeviceClass}="09"
    ATTRS{bDeviceSubClass}="00"
    ATTRS{bDeviceProtocol}="00"
    ATTRS{bNumConfigurations}="1"
    ATTRS{bMaxPacketSize0}="64"
    ATTRS{speed}="12"
    ATTRS{busnum}="3"
    ATTRS{devnum}="1"
    ATTRS{devpath}="0"
    ATTRS{version}=" 1.10"
    ATTRS{maxchild}="2"
    ATTRS{quirks}="0x0"
    ATTRS{avoid_reset_quirk}="0"
    ATTRS{authorized}="1"
    ATTRS{manufacturer}="Linux 2.6.34-1-686 uhci_hcd"
    ATTRS{product}="UHCI Host Controller"
    ATTRS{serial}="0000:00:1d.1"
    ATTRS{authorized_default}="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.1':
    KERNELS="0000:00:1d.1"
    SUBSYSTEMS="pci"
    DRIVERS="uhci_hcd"
    ATTRS{vendor}="0x8086"
    ATTRS{device}="0x27c9"
    ATTRS{subsystem_vendor}="0x1028"
    ATTRS{subsystem_device}="0x01ad"
    ATTRS{class}="0x0c0300"
    ATTRS{irq}="22"
    ATTRS{local_cpus}="ffffffff"
    ATTRS{local_cpulist}="0-31"
    ATTRS{modalias}="pci:v00008086d000027C9sv00001028sd000001ADbc0Csc03i00"
    ATTRS{dma_mask_bits}="32"
    ATTRS{consistent_dma_mask_bits}="32"
    ATTRS{broken_parity_status}="0"
    ATTRS{msi_bus}=""

  looking at parent device '/devices/pci0000:00':
    KERNELS="pci0000:00"
    SUBSYSTEMS=""
    DRIVERS=""


-- 
 Dr. Ludovic Rousseau

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2010-09-13 12:56 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-09  9:21 Use GROUP= in a rule matching an interface of the device? Ludovic Rousseau
2010-09-09  9:36 ` Kay Sievers
2010-09-09  9:57 ` Ludovic Rousseau
2010-09-09 20:49 ` David Zeuthen
2010-09-10  9:49 ` Ludovic Rousseau
2010-09-10 11:13 ` Marco d'Itri
2010-09-10 11:24 ` Kay Sievers
2010-09-10 15:14 ` Ludovic Rousseau
2010-09-13  9:34 ` Kay Sievers
2010-09-13 12:42 ` Ludovic Rousseau
2010-09-13 12:48 ` Marco d'Itri
2010-09-13 12:56 ` Ludovic Rousseau

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).