forest-all-around/system/50-usbhub-tty-device-map.rules

264 lines
7.9 KiB
Text

# persistent device name
#
# run following shell cmd.
#
# udevadm info -a -p $(udevadm info -q path -n /dev/ttyACM0)
#
#
# then you get sth. like following:
#
# 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:14.0/usb1/1-2/1-2.4/1-2.4:1.0/tty/ttyACM0':
# KERNEL=="ttyACM0"
# SUBSYSTEM=="tty"
# DRIVER==""
# looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.4/1-2.4:1.0':
# KERNELS=="1-2.4:1.0"
# SUBSYSTEMS=="usb"
# DRIVERS=="cdc_acm"
# ATTRS{authorized}=="1"
# ATTRS{bAlternateSetting}==" 0"
# ATTRS{bInterfaceClass}=="02"
# ATTRS{bInterfaceNumber}=="00"
# ATTRS{bInterfaceProtocol}=="01"
# ATTRS{bInterfaceSubClass}=="02"
# ATTRS{bNumEndpoints}=="01"
# ATTRS{bmCapabilities}=="6"
# ATTRS{supports_autosuspend}=="1"
# looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.4':
# KERNELS=="1-2.4"
# SUBSYSTEMS=="usb"
# DRIVERS=="usb"
# ATTRS{authorized}=="1"
# ATTRS{avoid_reset_quirk}=="0"
# ATTRS{bConfigurationValue}=="1"
# ATTRS{bDeviceClass}=="02"
# ATTRS{bDeviceProtocol}=="00"
# ATTRS{bDeviceSubClass}=="00"
# ATTRS{bMaxPacketSize0}=="64"
# ATTRS{bMaxPower}=="100mA"
# ATTRS{bNumConfigurations}=="1"
# ATTRS{bNumInterfaces}==" 2"
# ATTRS{bcdDevice}=="0277"
# ATTRS{bmAttributes}=="c0"
# ATTRS{busnum}=="1"
# ATTRS{configuration}==""
# ATTRS{devnum}=="31"
# ATTRS{devpath}=="2.4"
# ATTRS{idProduct}=="0483"
# ATTRS{idVendor}=="16c0"
# ATTRS{ltm_capable}=="no"
# ATTRS{manufacturer}=="Teensyduino"
# ATTRS{maxchild}=="0"
# ATTRS{product}=="USB Serial"
# ATTRS{quirks}=="0x0"
# ATTRS{removable}=="fixed"
# ATTRS{rx_lanes}=="1"
# ATTRS{serial}=="4871050"
# ATTRS{speed}=="12"
# ATTRS{tx_lanes}=="1"
# ATTRS{urbnum}=="10"
# ATTRS{version}==" 1.10"
# looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-2':
# KERNELS=="1-2"
# SUBSYSTEMS=="usb"
# DRIVERS=="usb"
# ATTRS{authorized}=="1"
# ATTRS{avoid_reset_quirk}=="0"
# ATTRS{bConfigurationValue}=="1"
# ATTRS{bDeviceClass}=="09"
# ATTRS{bDeviceProtocol}=="02"
# ATTRS{bDeviceSubClass}=="00"
# ATTRS{bMaxPacketSize0}=="64"
# ATTRS{bMaxPower}=="100mA"
# ATTRS{bNumConfigurations}=="1"
# ATTRS{bNumInterfaces}==" 1"
# ATTRS{bcdDevice}=="9212"
# ATTRS{bmAttributes}=="e0"
# ATTRS{busnum}=="1"
# ATTRS{configuration}==""
# ATTRS{devnum}=="30"
# ATTRS{devpath}=="2"
# ATTRS{idProduct}=="0610"
# ATTRS{idVendor}=="05e3"
# ATTRS{ltm_capable}=="no"
# ATTRS{manufacturer}=="GenesysLogic"
# ATTRS{maxchild}=="4"
# ATTRS{product}=="USB2.0 Hub"
# ATTRS{quirks}=="0x0"
# ATTRS{removable}=="removable"
# ATTRS{rx_lanes}=="1"
# ATTRS{speed}=="480"
# ATTRS{tx_lanes}=="1"
# ATTRS{urbnum}=="44"
# ATTRS{version}==" 2.10"
# looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1':
# KERNELS=="usb1"
# SUBSYSTEMS=="usb"
# DRIVERS=="usb"
# ATTRS{authorized}=="1"
# ATTRS{authorized_default}=="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}=="0504"
# ATTRS{bmAttributes}=="e0"
# ATTRS{busnum}=="1"
# 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 5.4.0-48-generic xhci-hcd"
# ATTRS{maxchild}=="11"
# ATTRS{product}=="xHCI Host Controller"
# ATTRS{quirks}=="0x0"
# ATTRS{removable}=="unknown"
# ATTRS{rx_lanes}=="1"
# ATTRS{serial}=="0000:00:14.0"
# ATTRS{speed}=="480"
# ATTRS{tx_lanes}=="1"
# ATTRS{urbnum}=="1026"
# ATTRS{version}==" 2.00"
# looking at parent device '/devices/pci0000:00/0000:00:14.0':
# KERNELS=="0000:00:14.0"
# SUBSYSTEMS=="pci"
# DRIVERS=="xhci_hcd"
# ATTRS{ari_enabled}=="0"
# ATTRS{broken_parity_status}=="0"
# ATTRS{class}=="0x0c0330"
# ATTRS{consistent_dma_mask_bits}=="64"
# ATTRS{d3cold_allowed}=="1"
# ATTRS{dbc}=="disabled"
# ATTRS{device}=="0x9cb1"
# ATTRS{dma_mask_bits}=="64"
# ATTRS{driver_override}=="(null)"
# ATTRS{enable}=="1"
# ATTRS{irq}=="53"
# ATTRS{local_cpulist}=="0-3"
# ATTRS{local_cpus}=="f"
# ATTRS{msi_bus}=="1"
# ATTRS{numa_node}=="-1"
# ATTRS{revision}=="0x03"
# ATTRS{subsystem_device}=="0x7270"
# ATTRS{subsystem_vendor}=="0x8086"
# ATTRS{vendor}=="0x8086"
# looking at parent device '/devices/pci0000:00':
# KERNELS=="pci0000:00"
# SUBSYSTEMS==""
# DRIVERS==""
# now look at (line 28 of this file). which is:
# KERNELS=="1-2.4:1.0"
#
# KERNELS value indicates what port is being used.
#
#
# now, look at the usb plugs of the usb hub (black one w/ usb 3 support)
# by pluging in and out (trial and error)
# one can easily get a mapping of KERNELS values like:
#
#
# but, be careful !
# all usb ports are usb 3.0 capable ports.
# plug-in usb 3.0 device, then they will be registered under usb3 bus.
# plug-in usb 2.0 device, then they will be registered under usb2 bus.
# usb2 bus & usb3 bus numbering map is totally different !
#
# usb 2.0 mapping (for example, you will get one of these with 'arduino')
# +-------+-------+-------+-------+
# | 1-2.1 | 1-2.2 | 1-2.3 | 1-2.4 |--------[USB A plug]|||
# +-------+-------+-------+-------+
# usb 3.0 mapping (for example, you will get one of these with 'usb3.0 external ssd')
# +-------+-------+-------+-------+
# | 2-2.1 | 2-2.2 | 2-2.3 | 2-2.4 |--------[USB A plug]|||
# +-------+-------+-------+-------+
# so, as a summary
# usb 2/3 port mappings
# +-------+-------+-------+-------+
# | A | B | C | D |--------[USB A plug]|||
# +-------+-------+-------+-------+
# +-------+-------+-------+-------+
# | 1-2.1 | 1-2.2 | 1-2.3 | 1-2.4 |--------[USB A plug]|||
# +-------+-------+-------+-------+
# +-------+-------+-------+-------+
# | 2-2.1 | 2-2.2 | 2-2.3 | 2-2.4 |--------[USB A plug]|||
# +-------+-------+-------+-------+
# configurations to get fixed symlinks only for ttyACM* & ttyUSB*
# usb 2.0
KERNEL=="ttyACM*", KERNELS=="1-2.1", MODE="0666", SYMLINK+="portA"
KERNEL=="ttyUSB*", KERNELS=="1-2.1", MODE="0666", SYMLINK+="portA"
# usb 3.0
KERNEL=="ttyACM*", KERNELS=="2-2.1", MODE="0666", SYMLINK+="portA"
KERNEL=="ttyUSB*", KERNELS=="2-2.1", MODE="0666", SYMLINK+="portA"
# usb 2.0
KERNEL=="ttyACM*", KERNELS=="1-2.2", MODE="0666", SYMLINK+="portB"
KERNEL=="ttyUSB*", KERNELS=="1-2.2", MODE="0666", SYMLINK+="portB"
# usb 3.0
KERNEL=="ttyACM*", KERNELS=="2-2.2", MODE="0666", SYMLINK+="portB"
KERNEL=="ttyUSB*", KERNELS=="2-2.2", MODE="0666", SYMLINK+="portB"
# usb 2.0
KERNEL=="ttyACM*", KERNELS=="1-2.3", MODE="0666", SYMLINK+="portC"
KERNEL=="ttyUSB*", KERNELS=="1-2.3", MODE="0666", SYMLINK+="portC"
# usb 3.0
KERNEL=="ttyACM*", KERNELS=="2-2.3", MODE="0666", SYMLINK+="portC"
KERNEL=="ttyUSB*", KERNELS=="2-2.3", MODE="0666", SYMLINK+="portC"
# usb 2.0
KERNEL=="ttyACM*", KERNELS=="1-2.4", MODE="0666", SYMLINK+="portD"
KERNEL=="ttyUSB*", KERNELS=="1-2.4", MODE="0666", SYMLINK+="portD"
# usb 3.0
KERNEL=="ttyACM*", KERNELS=="2-2.4", MODE="0666", SYMLINK+="portD"
KERNEL=="ttyUSB*", KERNELS=="2-2.4", MODE="0666", SYMLINK+="portD"