Да трабл весь в том что удав чхать хотел на правило! И ничего запускать соответственно не будет...
В общем перебором правил из вывода
$ udevadm info --attribute-walk --path=/sys/bus/usb/devices/2-5
$ udevadm info --attribute-walk --path=/sys/bus/usb/devices/2-5
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.7/usb2/2-5':
KERNEL=="2-5"
SUBSYSTEM=="usb"
DRIVER=="usb"
ATTR{configuration}==""
ATTR{bNumInterfaces}==" 1"
ATTR{bConfigurationValue}=="1"
ATTR{bmAttributes}=="c0"
ATTR{bMaxPower}==" 2mA"
ATTR{urbnum}=="35"
ATTR{idVendor}=="04a9"
ATTR{idProduct}=="3175"
ATTR{bcdDevice}=="0002"
ATTR{bDeviceClass}=="00"
ATTR{bDeviceSubClass}=="00"
ATTR{bDeviceProtocol}=="00"
ATTR{bNumConfigurations}=="1"
ATTR{bMaxPacketSize0}=="64"
ATTR{speed}=="480"
ATTR{busnum}=="2"
ATTR{devnum}=="4"
ATTR{version}==" 2.00"
ATTR{maxchild}=="0"
ATTR{quirks}=="0x0"
ATTR{authorized}=="1"
ATTR{manufacturer}=="Canon Inc."
ATTR{product}=="Canon Digital Camera"
ATTR{serial}=="C3B06C7487E44578B5CAAB084E8D465A"
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2':
KERNELS=="usb2"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{bMaxPower}==" 0mA"
ATTRS{urbnum}=="65"
ATTRS{idVendor}=="1d6b"
ATTRS{idProduct}=="0002"
ATTRS{bcdDevice}=="0206"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="2"
ATTRS{devnum}=="1"
ATTRS{version}==" 2.00"
ATTRS{maxchild}=="6"
ATTRS{quirks}=="0x0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="Linux 2.6.28-13-generic ehci_hcd"
ATTRS{product}=="EHCI Host Controller"
ATTRS{serial}=="0000:00:1d.7"
ATTRS{authorized_default}=="1"
looking at parent device '/devices/pci0000:00/0000:00:1d.7':
KERNELS=="0000:00:1d.7"
SUBSYSTEMS=="pci"
DRIVERS=="ehci_hcd"
ATTRS{vendor}=="0x8086"
ATTRS{device}=="0x2836"
ATTRS{subsystem_vendor}=="0x1043"
ATTRS{subsystem_device}=="0x81ec"
ATTRS{class}=="0x0c0320"
ATTRS{irq}=="23"
ATTRS{local_cpus}=="ffffffff,ffffffff"
ATTRS{local_cpulist}=="0-63"
ATTRS{modalias}=="pci:v00008086d00002836sv00001043sd000081ECbc0Csc03i20"
ATTRS{broken_parity_status}=="0"
ATTRS{msi_bus}==""
looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
добился я того чтобы RUN+="/bin/touch /1" отрабатывался. Отрабатывает оно почемуто только по правилу
ACTION=="remove", KERNEL=="2-5", SUBSYSTEM=="usb", RUN+="/bin/touch /1"
но правило то какоето левое получается, привязка к порту получается... Что с этим делать?
Сейчас правила выглядят так:
ACTION=="add", ATTR{manufacturer}=="Canon Inc.", ATTR{product}=="Canon Digital Camera", RUN+="/bin/mkdir -p /media/IXUS"
ACTION=="add", ATTR{manufacturer}=="Canon Inc.", ATTR{product}=="Canon Digital Camera", RUN+="/usr/bin/gphotofs /media/IXUS -o allow_other"
ACTION=="remove", KERNEL=="2-5", SUBSYSTEM=="usb", RUN+="/bin/umount -f /media/IXUS"
ACTION=="remove", KERNEL=="2-5", SUBSYSTEM=="usb", RUN+="/bin/rmdir /media/IXUS"
Всё создаётся/удаляется/монтируется/размонтируется, но только для одного конкретно определённого порта, и после подключения к другом порту по прежнему остаётся мусор! Мне кажется трабл в том что система мгновенно забывает все данные об устройстве после его отключения, и потому поля ATTR{} не отрабатывают.
ЗЫ sudo мне думаю не надо, у него это похоже чтобы (небезопасную?) утилитку запускать не от рута а от пользователя, у меня всё отрабатывает и от рута, -o allow_other решило проблему. udevmonitor --udev --environment (udevadm monitor --udev --env в моём случае) ничем не помогло, правила вида ID_VENDOR= или ID_MODEL= вообще не выводятся((
ЗЗЫ А вот странные переменные MAJOR=252 и MINOR=22 - помогли! Проблема полностью решена. Правила выглядят так:
ACTION=="add", ATTR{manufacturer}=="Canon Inc.", ATTR{product}=="Canon Digital Camera", RUN+="/bin/mkdir -p /media/IXUS"
ACTION=="add", ATTR{manufacturer}=="Canon Inc.", ATTR{product}=="Canon Digital Camera", RUN+="/usr/bin/gphotofs /media/IXUS -o allow_other"
ACTION=="remove", MAJOR=="252", MINOR=="22", RUN+="/bin/umount -f /media/IXUS"
ACTION=="remove", MAJOR=="252", MINOR=="22", RUN+="/bin/rmdir /media/IXUS"