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