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.
inputsubsystem device that is a child device of anotherinputsubsystem device, and then requiring anATTR{phys}... but according to yourudevadm infolisting, the top block (KERNEL=="event15") does not include aphysattribute at all. Since the attribute is not in the top-most block ofudevadm info, it needs to beATTRS{phys}instead.qbittorrentis a GUI program, and it would need at least theDISPLAYvariable and a~/.Xauthorityfile (or a properly setXAUTHORITYvariable to point to a.Xauthorityfile 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/.Xauthorityfile will be invalidated by the X server, and the udev rule running as root cannot insertqbittorrentintoluiz'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"