Happy new year, everyone.
I’m stumped. I am trying to block one interface of a USB device blocked via a udev rule and it’s not picking it up for some reason. I tried every whichever way I found on the internet and it’s not working. It’s not firing even a RUN="echo hi"
in the rule, so I think it’s not picking the rule up.
I know the /etc/udev/rules.d/99blah.rules
gets picked up when I run udevadm test.
I can see a plug in event firing.
There’s one attribute I’m trying to specify that I didn’t see in search results, maybe that’s what I’m doing wrong somehow.
It’s a bInterfaceNumber="01"
for a USB device (as seen via lsusb -v
). So I do ATTRS{}==“” for idVendor and idProduct and then do ATTRS{"bInterfaceNumber"}=="01"
.
I am suspecting maybe I’m not filtering correctly? I’ve done this on Archlinux before a while ago but not remembering the details.
Why are there ATTRS
and ATTR
?? And SUBSYSTEMS
vs SUBSYSTEM
?
Run udevadm info --attribute-walk --path=whatever device such as /sys/bus/usb/devices/etc
This will show specifically all attributes and how to reference them. bInterfaceNumber show ATTR
, not ATTRS
for this specific attribute. And SUBSYSTEM
, not SUBSYSTEMS
.
This solves the problem, , the rule is triggered. You can always verify that the rule is triggered without reloading anything, unplugging anything, or rebooting by running:
udevadm test "whatever device such as /sys/bus/usb/devices/etc"
2 Likes