astroberry@astroberry:~$ udevadm info -a /dev/ttyACM1 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/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/tty/ttyACM1': KERNEL=="ttyACM1" SUBSYSTEM=="tty" DRIVER=="" looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0': KERNELS=="1-1.2:1.0" SUBSYSTEMS=="usb" DRIVERS=="cdc_acm" ATTRS{bInterfaceNumber}=="00" ATTRS{bInterfaceClass}=="02" ATTRS{authorized}=="1" ATTRS{bAlternateSetting}==" 0" ATTRS{supports_autosuspend}=="1" ATTRS{bInterfaceProtocol}=="01" ATTRS{bmCapabilities}=="2" ATTRS{bNumEndpoints}=="01" ATTRS{bInterfaceSubClass}=="02" looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2': KERNELS=="1-1.2" SUBSYSTEMS=="usb" DRIVERS=="usb" ATTRS{avoid_reset_quirk}=="0" ATTRS{urbnum}=="8050" ATTRS{speed}=="12" ATTRS{bmAttributes}=="c0" ATTRS{bcdDevice}=="0100" ATTRS{product}=="u-blox 7 - GPS/GNSS Receiver" ATTRS{configuration}=="" ATTRS{quirks}=="0x0" ATTRS{ltm_capable}=="no" ATTRS{devpath}=="1.2" ATTRS{maxchild}=="0" ATTRS{bMaxPacketSize0}=="64" ATTRS{bNumInterfaces}==" 2" ATTRS{authorized}=="1" ATTRS{version}==" 1.10" ATTRS{devnum}=="7" ATTRS{bDeviceProtocol}=="00" ATTRS{bDeviceClass}=="02" ATTRS{idVendor}=="1546" ATTRS{bDeviceSubClass}=="00" ATTRS{busnum}=="1" ATTRS{bConfigurationValue}=="1" ATTRS{bMaxPower}=="100mA" ATTRS{bNumConfigurations}=="1" ATTRS{removable}=="removable" ATTRS{manufacturer}=="u-blox AG - www.u-blox.com" ATTRS{devspec}==" (null)" ATTRS{idProduct}=="01a7" looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1': KERNELS=="1-1" SUBSYSTEMS=="usb" DRIVERS=="usb" ATTRS{maxchild}=="4" ATTRS{devpath}=="1" ATTRS{bMaxPacketSize0}=="64" ATTRS{version}==" 2.00" ATTRS{urbnum}=="51" ATTRS{idProduct}=="2514" ATTRS{bNumInterfaces}==" 1" ATTRS{bDeviceProtocol}=="02" ATTRS{idVendor}=="0424" ATTRS{removable}=="unknown" ATTRS{quirks}=="0x0" ATTRS{bMaxPower}=="2mA" ATTRS{bDeviceClass}=="09" ATTRS{speed}=="480" ATTRS{avoid_reset_quirk}=="0" ATTRS{bmAttributes}=="e0" ATTRS{bDeviceSubClass}=="00" ATTRS{configuration}=="" ATTRS{authorized}=="1" ATTRS{bNumConfigurations}=="1" ATTRS{ltm_capable}=="no" ATTRS{devnum}=="2" ATTRS{bConfigurationValue}=="1" ATTRS{bcdDevice}=="0bb3" ATTRS{busnum}=="1" looking at parent device '/devices/platform/soc/3f980000.usb/usb1': KERNELS=="usb1" SUBSYSTEMS=="usb" DRIVERS=="usb" ATTRS{devnum}=="1" ATTRS{product}=="DWC OTG Controller" ATTRS{idVendor}=="1d6b" ATTRS{bNumConfigurations}=="1" ATTRS{manufacturer}=="Linux 4.14.78-v7+ dwc_otg_hcd" ATTRS{bcdDevice}=="0414" ATTRS{bDeviceSubClass}=="00" ATTRS{avoid_reset_quirk}=="0" ATTRS{maxchild}=="1" ATTRS{bConfigurationValue}=="1" ATTRS{urbnum}=="25" ATTRS{bMaxPower}=="0mA" ATTRS{version}==" 2.00" ATTRS{serial}=="3f980000.usb" ATTRS{authorized_default}=="1" ATTRS{bNumInterfaces}==" 1" ATTRS{removable}=="unknown" ATTRS{authorized}=="1" ATTRS{quirks}=="0x0" ATTRS{busnum}=="1" ATTRS{bDeviceClass}=="09" ATTRS{bMaxPacketSize0}=="64" ATTRS{speed}=="480" ATTRS{bDeviceProtocol}=="01" ATTRS{idProduct}=="0002" ATTRS{bmAttributes}=="e0" ATTRS{configuration}=="" ATTRS{ltm_capable}=="no" ATTRS{devpath}=="0" ATTRS{interface_authorized_default}=="1" looking at parent device '/devices/platform/soc/3f980000.usb': KERNELS=="3f980000.usb" SUBSYSTEMS=="platform" DRIVERS=="dwc_otg" ATTRS{devspeed}=="Device Speed = 0x0" ATTRS{remote_wakeup}=="Remote Wakeup Sig = 0 Enabled = 0 LPM Remote Wakeup = 0" ATTRS{buspower}=="Bus Power = 0x1" ATTRS{fr_interval}=="Frame Interval = 0x1d4b" ATTRS{enumspeed}=="Device Enumeration Speed = 0x1" ATTRS{srpcapable}=="SRPCapable = 0x1" ATTRS{wr_reg_test}=="Time to write GNPTXFSIZ reg 10000000 times: 340 msecs (34 jiffies)" ATTRS{regvalue}=="invalid offset" ATTRS{gusbcfg}=="GUSBCFG = 0x20001700" ATTRS{hnp}=="HstNegScs = 0x0" ATTRS{rd_reg_test}=="Time to read GNPTXFSIZ reg 10000000 times: 900 msecs (90 jiffies)" ATTRS{mode}=="Mode = 0x1" ATTRS{gpvndctl}=="GPVNDCTL = 0x00000000" ATTRS{inv_sel_hsic}=="Invert Select HSIC = 0x0" ATTRS{ggpio}=="GGPIO = 0x00000000" ATTRS{grxfsiz}=="GRXFSIZ = 0x00000306" ATTRS{hprt0}=="HPRT0 = 0x00001405" ATTRS{busconnected}=="Bus Connected = 0x1" ATTRS{hsic_connect}=="HSIC Connect = 0x1" ATTRS{gnptxfsiz}=="GNPTXFSIZ = 0x01000306" ATTRS{driver_override}=="(null)" ATTRS{gsnpsid}=="GSNPSID = 0x4f54280a" ATTRS{regoffset}=="0xffffffff" ATTRS{hcddump}=="HCD Dump" ATTRS{spramdump}=="SPRAM Dump" ATTRS{hptxfsiz}=="HPTXFSIZ = 0x02000406" ATTRS{regdump}=="Register Dump" ATTRS{guid}=="GUID = 0x2708a000" ATTRS{hnpcapable}=="HNPCapable = 0x1" ATTRS{rem_wakeup_pwrdn}=="" ATTRS{srp}=="SesReqScs = 0x1" ATTRS{gotgctl}=="GOTGCTL = 0x001c0001" ATTRS{mode_ch_tim_en}=="Mode Change Ready Timer Enable = 0x0" ATTRS{bussuspend}=="Bus Suspend = 0x0" ATTRS{hcd_frrem}=="HCD Dump Frame Remaining" looking at parent device '/devices/platform/soc': KERNELS=="soc" SUBSYSTEMS=="platform" DRIVERS=="" ATTRS{driver_override}=="(null)" looking at parent device '/devices/platform': KERNELS=="platform" SUBSYSTEMS=="" DRIVERS==""