I am trying to create a simple udev rule, for the device below, Sony Computer Entertainment Inc BD Remote Control, but it does not work, I have read several tutorials, some documentation and other doubt posts like this one, in no case can I make it work.
I just do not know if it's an error in device attributes, distrubution that does not support udev rules or any other error.
"sudo reboot" is for testing purposes only.
I'm using Linux Mint.
Linux Mint Linux HP 4.15.0-20-generic # 21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018 x86_64 x86_64 x86_64 GNU / Linux
Here's one of several tests I've done:
ACTION=="add", SUBSYSTEM=="input", SUBSYSTEMS=="input",
ATTR{phys}=="00:19:86:00:15:36", RUN+="sudo reboot"
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.0/usb2/2-1/2-1.1/2-1.1:1.0/bluetooth/hci0/hci0:11/0005:054C:0306.003A/input/input70/event15':
KERNEL=="event15"
SUBSYSTEM=="input"
DRIVER==""
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/bluetooth/hci0/hci0:11/0005:054C:0306.003A/input/input70':
KERNELS=="input70"
SUBSYSTEMS=="input"
DRIVERS==""
ATTRS{name}=="Sony Computer Entertainment Inc BD Remote Control"
ATTRS{phys}=="00:19:86:00:15:36"
ATTRS{properties}=="0"
ATTRS{uniq}=="00:06:f5:97:ab:94"
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/bluetooth/hci0/hci0:11/0005:054C:0306.003A':
KERNELS=="0005:054C:0306.003A"
SUBSYSTEMS=="hid"
DRIVERS=="sony"
ATTRS{country}=="21"
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/bluetooth/hci0/hci0:11':
KERNELS=="hci0:11"
SUBSYSTEMS=="bluetooth"
DRIVERS==""
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/bluetooth/hci0':
KERNELS=="hci0"
SUBSYSTEMS=="bluetooth"
DRIVERS==""
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0':
KERNELS=="2-1.1:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="btusb"
ATTRS{authorized}=="1"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bInterfaceClass}=="ff"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bInterfaceProtocol}=="01"
ATTRS{bInterfaceSubClass}=="01"
ATTRS{bNumEndpoints}=="03"
ATTRS{supports_autosuspend}=="1"
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1':
KERNELS=="2-1.1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{authorized}=="1"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bConfigurationValue}=="1"
ATTRS{bDeviceClass}=="ff"
ATTRS{bDeviceProtocol}=="01"
ATTRS{bDeviceSubClass}=="01"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{bMaxPower}=="0mA"
ATTRS{bNumConfigurations}=="1"
ATTRS{bNumInterfaces}==" 4"
ATTRS{bcdDevice}=="0112"
ATTRS{bmAttributes}=="e0"
ATTRS{busnum}=="2"
ATTRS{configuration}==""
ATTRS{devnum}=="22"
ATTRS{devpath}=="1.1"
ATTRS{idProduct}=="21e8"
ATTRS{idVendor}=="0a5c"
ATTRS{ltm_capable}=="no"
ATTRS{manufacturer}=="Broadcom Corp"
ATTRS{maxchild}=="0"
ATTRS{product}=="BCM20702A0"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="removable"
ATTRS{serial}=="001986001536"
ATTRS{speed}=="12"
ATTRS{urbnum}=="434"
ATTRS{version}==" 2.00"
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1':
KERNELS=="2-1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{authorized}=="1"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bConfigurationValue}=="1"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceProtocol}=="01"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{bMaxPower}=="0mA"
ATTRS{bNumConfigurations}=="1"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bcdDevice}=="0000"
ATTRS{bmAttributes}=="e0"
ATTRS{busnum}=="2"
ATTRS{configuration}==""
ATTRS{devnum}=="2"
ATTRS{devpath}=="1"
ATTRS{idProduct}=="0024"
ATTRS{idVendor}=="8087"
ATTRS{ltm_capable}=="no"
ATTRS{maxchild}=="6"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="fixed"
ATTRS{speed}=="480"
ATTRS{urbnum}=="497"
ATTRS{version}==" 2.00"
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2':
KERNELS=="usb2"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{authorized}=="1"
ATTRS{authorized_default}=="1"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bConfigurationValue}=="1"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{bMaxPower}=="0mA"
ATTRS{bNumConfigurations}=="1"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bcdDevice}=="0415"
ATTRS{bmAttributes}=="e0"
ATTRS{busnum}=="2"
ATTRS{configuration}==""
ATTRS{devnum}=="1"
ATTRS{devpath}=="0"
ATTRS{idProduct}=="0002"
ATTRS{idVendor}=="1d6b"
ATTRS{interface_authorized_default}=="1"
ATTRS{ltm_capable}=="no"
ATTRS{manufacturer}=="Linux 4.15.0-20-generic ehci_hcd"
ATTRS{maxchild}=="2"
ATTRS{product}=="EHCI Host Controller"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="unknown"
ATTRS{serial}=="0000:00:1d.0"
ATTRS{speed}=="480"
ATTRS{urbnum}=="187"
ATTRS{version}==" 2.00"
looking at parent device '/devices/pci0000:00/0000:00:1d.0':
KERNELS=="0000:00:1d.0"
SUBSYSTEMS=="pci"
DRIVERS=="ehci-pci"
ATTRS{broken_parity_status}=="0"
ATTRS{class}=="0x0c0320"
ATTRS{companion}==""
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{d3cold_allowed}=="1"
ATTRS{device}=="0x1e26"
ATTRS{dma_mask_bits}=="32"
ATTRS{driver_override}=="(null)"
ATTRS{enable}=="1"
ATTRS{irq}=="23"
ATTRS{local_cpulist}=="0-3"
ATTRS{local_cpus}=="0f"
ATTRS{msi_bus}=="1"
ATTRS{numa_node}=="-1"
ATTRS{revision}=="0x04"
ATTRS{subsystem_device}=="0x1854"
ATTRS{subsystem_vendor}=="0x103c"
ATTRS{uframe_periodic_max}=="100"
ATTRS{vendor}=="0x8086"
looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
Update: Using the command sudo systemctl status udev.service
it seems that the rules are working, but not running script (.sh
) or program (/usr/bin/qbittorrent
) and referencing this error.
● systemd-udevd.service - udev Kernel Device Manager
Loaded: loaded (/etc/systemd/system/systemd-udevd.service; static; vendor preset: enabled)
Active: active (running) since Wed 2019-03-06 12:21:22 -03; 8min ago
Docs: man:systemd-udevd.service(8)
man:udev(7)
Main PID: 399 (systemd-udevd)
Status: "Processing with 16 children at max"
Tasks: 1
CGroup: /system.slice/systemd-udevd.service
└─399 /lib/systemd/systemd-udevd
mar 06 12:21:25 HP systemd-udevd[1939]: Process '/home/luiz/loop.sh' failed with exit code 1.
mar 06 12:21:26 HP systemd-udevd[2196]: Process '/home/luiz/loop.sh' failed with exit code 1.
mar 06 12:21:26 HP systemd-udevd[2220]: Process '/home/luiz/loop.sh' failed with exit code 1.
mar 06 12:21:31 HP systemd-udevd[2504]: Process '/home/luiz/loop.sh' failed with exit code 1.
mar 06 12:25:42 HP systemd-udevd[3225]: Process '/home/luiz/loop.sh' failed with exit code 1.
input
subsystem device that is a child device of anotherinput
subsystem device, and then requiring anATTR{phys}
... but according to yourudevadm info
listing, the top block (KERNEL=="event15"
) does not include aphys
attribute at all. Since the attribute is not in the top-most block ofudevadm info
, it needs to beATTRS{phys}
instead.qbittorrent
is a GUI program, and it would need at least theDISPLAY
variable and a~/.Xauthority
file (or a properly setXAUTHORITY
variable to point to a.Xauthority
file elsewhere) set properly in order to run... and unless you do something to change it, your script will be running as root. If you're logged in asluiz
, then any old/root/.Xauthority
file will be invalidated by the X server, and the udev rule running as root cannot insertqbittorrent
intoluiz
's X11 session, at least not without first stealing the X11 magic cookie.ACTION=="add", SUBSYSTEM=="input", ATTR{name}=="Sony Computer Entertainment Inc BD Remote Control", RUN+="/usr/bin/qbittorrent"
---------ACTION=="add", KERNEL=="event*", SUBSYSTEMS=="usb", DRIVERS=="usb", ATTR{idProduct}=="07a5", ATTR{idVendor}=="045e", RUN+="/home/luiz/loop.sh"