I also digged in the systemd-221 sources to find documentation about the meaning of ENV{ID_USB_INTERFACES}=="*:0701??:*". The only non-udev-rules file where ID_USB_INTERFACES is found is src/udev/udev-builtin-usb_id.c and therein not any helpful comment which means one has to parse the code to find out what ID_USB_INTERFACES contains which leads to: ------------------------------------------------------------------------- static int dev_if_packed_info( ... ... if (snprintf(if_str, 8, ":%02x%02x%02x", desc->bInterfaceClass, desc->bInterfaceSubClass, desc->bInterfaceProtocol) != 7) continue; ------------------------------------------------------------------------- I.e. ID_USB_INTERFACES contains a concatenation of what "lsusb -v" shows as bInterfaceClass bInterfaceSubClass bInterfaceProtocol FYI on my Tumbleweed system: ------------------------------------------------------------------------- # lsusb -v -s 001:002 Bus 001 Device 002: ID 04f9:0022 Brother Industries, Ltd HL-5150D series ... bInterfaceClass 7 Printer bInterfaceSubClass 1 Printer bInterfaceProtocol 2 Bidirectional ... # udevadm info -x /dev/bus/usb/001/002 \ | egrep 'SUBSYSTEM|DEVTYPE|ID_USB_INTERFACES' E: DEVTYPE=usb_device E: ID_USB_INTERFACES=:070102: E: SUBSYSTEM=usb -------------------------------------------------------------------------