You are not logged in.

#1 2015-07-08 09:53:46

MickeyMouse
Member
Registered: 2014-10-24
Posts: 13

Execute a udev rule AFTER another rule

Hello,

I have the same problem as the one described here https://bbs.archlinux.org/viewtopic.php?id=150114: My usb mouse is disconnected when i stopped using it for a few seconds.

The solution is to disable auto suspend for this device using the following command :

sudo bash -c "echo on > /sys/bus/usb/devices/1-3.1/power/control"

I tried to automate this operation by creating a new udev rule. I created the following file /usr/lib/udev/rules.d/43-mouse-local.rules (I kown, i should create this file in the /etc/udev/rules.d/ folder but it just for test :-) )

ACTION=="add", SUBSYSTEMS=="usb", ATTR{idVendor}=="046d", ATTR{idProduct}=="c018", TEST=="power/control", ATTR{power/control}="on"

This rule match the correct event/device (I made some debug) BUT it is not executed in the right order.

My udevd log are :

ATTR '/sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.1/power/control' writing 'on' /usr/lib/udev/rules.d/43-mouse-local.rules:2
IMPORT builtin 'usb_id' /usr/lib/udev/rules.d/50-udev-default.rules:13
IMPORT builtin 'hwdb' /usr/lib/udev/rules.d/50-udev-default.rules:13
MODE 0664 /usr/lib/udev/rules.d/50-udev-default.rules:41
RUN '/usr/share/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass} vboxusers' /usr/lib/udev/rules.d/60-vboxdrv.rules:6
handling device node '/dev/bus/usb/001/071', devnum=c189:70, mode=0664, uid=0, gid=0
set permissions /dev/bus/usb/001/071, 020664, uid=0, gid=0
creating symlink '/dev/char/189:70' to '../bus/usb/001/071'
created db file '/run/udev/data/c189:70' for '/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.1'
starting '/usr/share/virtualbox/VBoxCreateUSBNode.sh 189 70 00 vboxusers'
Process '/usr/share/virtualbox/VBoxCreateUSBNode.sh 189 70 00 vboxusers' succeeded.
passed device to netlink monitor 0x7f0ac1705d50
seq 3888 processed
passed 303 byte device to netlink monitor 0x7f0ac16f47d0
seq 3889 running
ATTR '/sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.1/1-3.1:1.0/../power/control' writing 'auto' /usr/lib/udev/rules.d/42-usb-hid-pm.rules:34

The first line

ATTR '/sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.1/power/control' writing 'on' /usr/lib/udev/rules.d/43-mouse-local.rules:2

shows that my rule is executed and the power/control attribute is set to "on". And the last line

ATTR '/sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.1/1-3.1:1.0/../power/control' writing 'auto' /usr/lib/udev/rules.d/42-usb-hid-pm.rules:34

shows that another rule has erased my modification.

The documentation says "All rules files are collectively sorted and processed in lexical order" my rule name is 43-mouse-local.rules and the other rule name is 42-usb-hid-pm.rules so i don't understand why my rule is no executed after the 42-usb-hid-pm.rules.

Thanks in advance

Offline

#2 2015-07-08 11:23:12

brebs
Member
Registered: 2007-04-03
Posts: 3,742

Re: Execute a udev rule AFTER another rule

Why have you changed your rule to use "SUBSYTEMS" instead of "SUBSYSTEM"? They have different meanings.

See original autosuspend thread.

Last edited by brebs (2015-07-08 11:24:07)

Offline

#3 2015-07-08 13:29:52

MickeyMouse
Member
Registered: 2014-10-24
Posts: 13

Re: Execute a udev rule AFTER another rule

Hi,

Thank you for your help. I fully followed your advices big_smile.

I comment my 43-mouse-local.rules file.
I created the /etc/udev/rules.d/91-local.rules file with the following content :

ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="046d", ATTR{idProduct}=="c018", ATTR{power/control}="on"

The only difference with your configuration described in https://bbs.archlinux.org/viewtopic.php … 0#p1178070 is that i replaced

ATTR{product}=="Razer Abyssus"

by

ATTR{idVendor}=="046d", ATTR{idProduct}=="c018"

I still have the same problem sad :

ATTR '/sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.1/power/control' writing 'on' /etc/udev/rules.d/91-local.rules:1
handling device node '/dev/bus/usb/001/096', devnum=c189:95, mode=0664, uid=0, gid=0
can not stat() node '/dev/bus/usb/001/096' (No such file or directory)
created db file '/run/udev/data/c189:95' for '/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.1'
starting '/usr/share/virtualbox/VBoxCreateUSBNode.sh 189 95 00 vboxusers'
Process '/usr/share/virtualbox/VBoxCreateUSBNode.sh 189 96 00 vboxusers' succeeded.
passed device to netlink monitor 0x7f2525a719d0
seq 4246 processed
passed 300 byte device to netlink monitor 0x7f2525a717c0
seq 4247 running
IMPORT builtin 'hwdb' /usr/lib/udev/rules.d/50-udev-default.rules:15
RUN 'kmod load $env{MODALIAS}' /usr/lib/udev/rules.d/80-drivers.rules:5
created db file '/run/udev/data/+usb:1-3.2:1.0' for '/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.2/1-3.2:1.0'
Execute 'load' 'usb:v03F0p0024d0300dc00dsc00dp00ic03isc01ip01in00'
Inserted 'usbhid'
passed device to netlink monitor 0x7f2525a71240
seq 4247 processed
passed 351 byte device to netlink monitor 0x7f2525a717c0
seq 4248 running
IMPORT builtin 'hwdb' /usr/lib/udev/rules.d/50-udev-default.rules:15
IMPORT builtin 'hwdb' returned non-zero
RUN 'kmod load $env{MODALIAS}' /usr/lib/udev/rules.d/80-drivers.rules:5
Execute 'load' 'hid:b0003g0001v000003F0p00000024'
Inserted 'hid_generic'
passed device to netlink monitor 0x7f2525a71240
seq 4248 processed
passed 638 byte device to netlink monitor 0x7f2525a717c0
passed 250 byte device to netlink monitor 0x7f2525a717c0
seq 4251 running
handling device node '/dev/hidraw1', devnum=c250:1, mode=0600, uid=0, gid=0
preserve permissions /dev/hidraw1, 020600, uid=0, gid=0
creating symlink '/dev/char/250:1' to '../hidraw1'
created empty file '/run/udev/data/c250:1' for '/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.2/1-3.2:1.0/0003:03F0:0024.002A/hidraw/hidraw1'
passed device to netlink monitor 0x7f2525a719d0
seq 4251 processed
passed 253 byte device to netlink monitor 0x7f2525a717c0
seq 4261 running
passed device to netlink monitor 0x7f2525a719d0
seq 4261 processed
seq 4249 running
IMPORT builtin 'input_id' /usr/lib/udev/rules.d/50-udev-default.rules:14
IMPORT builtin 'hwdb' /usr/lib/udev/rules.d/50-udev-default.rules:15
IMPORT builtin 'hwdb' returned non-zero
IMPORT builtin 'usb_id' /usr/lib/udev/rules.d/60-persistent-input.rules:7
/sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.2/1-3.2:1.0: if_class 3 protocol 0
IMPORT builtin 'path_id' /usr/lib/udev/rules.d/60-persistent-input.rules:31
RUN 'kmod load $env{MODALIAS}' /usr/lib/udev/rules.d/80-drivers.rules:5
created db file '/run/udev/data/+input:input130' for '/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.2/1-3.2:1.0/0003:03F0:0024.002A/input/input130'
Execute 'load' 'input:b0003v03F0p0024e0110-e0,1,4,11,14,k71,72,73,74,75,77,79,7A,7B,7C,7D,7E,7F,80,81,82,83,84,85,86,87,88,89,8A,8C,8E,96,98,9E,9F,A1,A3,A4,A5,A6,AD,B0,B1,B2,B3,B4,B7,B8,B9,BA,BB,BC,BD,BE,BF,C0,C1,C2,F0,ram4,l0,1,2,sfw'
Inserted 'mac_hid'
Inserted 'evdev'
passed device to netlink monitor 0x7f2525a71240
seq 4249 processed
passed 263 byte device to netlink monitor 0x7f2525a717c0
seq 4250 running
IMPORT builtin 'input_id' /usr/lib/udev/rules.d/50-udev-default.rules:14
Process '/usr/share/virtualbox/VBoxCreateUSBNode.sh 189 95 00 vboxusers' succeeded.
passed device to netlink monitor 0x7f2525a892a0
seq 4239 processed
passed 303 byte device to netlink monitor 0x7f2525a717c0
seq 4240 running
ATTR '/sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.1/1-3.1:1.0/../power/control' writing 'auto' /usr/lib/udev/rules.d/42-usb-hid-pm.rules:34

Offline

Board footer

Powered by FluxBB