Я изо всех сил пытаюсь создать правила udev для некоторых подобных устройств (последовательный USB-порт).
Вот вывод детали одного из них:
$ udevadm info --name=/dev/ttyACM0 --attribute-walk
Информация Udevadm начинается с устройства, указанного devpath, а затем
поднимается по цепочке родительских устройств. Он печатает для каждого устройства
найдены все возможные атрибуты в формате ключа правил udev.
Правило для сопоставления может быть составлено из атрибутов устройства.
и атрибуты одного родительского устройства.
глядя на устройство '/devices/pci0000:00/0000:00:15.0/usb1/1-3/1-3:1.0/tty/ttyACM0':
ЯДРО=="ttyACM0"
ПОДСИСТЕМА=="терминал"
ВОДИТЕЛЬ==""
просмотр родительского устройства '/devices/pci0000:00/0000:00:15.0/usb1/1-3/1-3:1.0':
ЯДРА=="1-3:1.0"
ПОДСИСТЕМЫ=="USB"
ДРАЙВЕРЫ=="cdc_acm"
АТТР{iad_bFunctionClass}=="02"
ATTRS{iad_bInterfaceCount}=="02"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bInterfaceProtocol}=="01"
ATTRS{iad_bFunctionSubClass}=="02"
ATTRS{iad_bFirstInterface}=="00"
АТТРС{bInterfaceSubClass}=="02"
ATTRS{авторизованный}=="1"
ATTRS{iad_bFunctionProtocol}=="00"
АТТР{bmCapabilities}=="6"
ATTRS{supports_autosuspend}=="1"
АТТРС{bInterfaceClass}=="02"
АТТР{bNumEndpoints}=="01"
глядя на родительское устройство '/devices/pci0000:00/0000:00:15.0/usb1/1-3':
ЯДРА=="1-3"
ПОДСИСТЕМЫ=="USB"
ДРАЙВЕРЫ=="USB"
ATTRS{maxchild}=="0"
АТТР{busnum}=="1"
ATTRS{скорость}=="12"
ATTRS{avoid_reset_quirk}=="0"
АТТР{rx_lanes}=="1"
АТТР{bDeviceSubClass}=="02"
ATTRS{idVendor}=="2341"
ATTRS{devnum}=="6"
АТТР{bNumInterfaces}==" 2"
ATTRS{bDeviceProtocol}=="01"
ATTRS{причуды}=="0x0"
ATTRS{devpath}=="3"
ATTRS{bMaxPower}=="100 мА"
ATTRS{bDeviceClass}=="ef"
АТТР{tx_lanes}=="1"
ATTRS{версия}==" 2.00"
ATTRS{производитель}=="Ардуино"
ATTRS{ltm_capable}=="нет"
ATTRS{удаляемый}=="неизвестно"
ATTRS{product}=="Nano 33 BLE"
ATTRS{bConfigurationValue}=="1"
ATTRS{idProduct}=="805a"
АТТР{bNumConfigurations}=="1"
ATTRS{авторизованный}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{серийный}=="F594686789F67DE5"
АТТР{bcdDevice}=="0101"
ATTRS{конфигурация}==""
АТТР{urbnum}=="13"
АТТР{bmAttributes}=="c0"
глядя на родительское устройство '/devices/pci0000:00/0000:00:15.0/usb1':
ЯДРА=="usb1"
ПОДСИСТЕМЫ=="USB"
ДРАЙВЕРЫ=="USB"
ATTRS{bDeviceClass}=="09"
ATTRS{maxchild}=="8"
ATTRS{ltm_capable}=="нет"
АТТР{urbnum}=="85"
ATTRS{производитель}=="Linux 5.11.0-38-универсальный xhci-hcd"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{причуды}=="0x0"
ATTRS{product}=="хост-контроллер xHCI"
ATTRS{bDeviceProtocol}=="01"
ATTRS{devpath}=="0"
АТТР{devnum}=="1"
АТТР{rx_lanes}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{авторизованный_по умолчанию}=="1"
ATTRS{скорость}=="480"
АТТР{busnum}=="1"
ATTRS{версия}==" 2.00"
ATTRS{bConfigurationValue}=="1"
АТТР{bNumInterfaces}==" 1"
АТТР{idProduct}=="0002"
ATTRS{авторизованный}=="1"
ATTRS{bMaxPower}=="0 мА"
ATTRS{серийный номер}=="0000:00:15.0"
ATTRS{конфигурация}==""
ATTRS{удаляемый}=="неизвестно"
АТТР{bNumConfigurations}=="1"
ATTRS{idVendor}=="1d6b"
ATTRS{bmAttributes}=="e0"
АТТР{bcdDevice}=="0511"
АТТР{tx_lanes}=="1"
ATTRS{bDeviceSubClass}=="00"
ATTRS{interface_authorized_default}=="1"
просмотр родительского устройства '/devices/pci0000:00/0000:00:15.0':
ЯДРА=="0000:00:15.0"
ПОДСИСТЕМЫ=="PCI"
ДРАЙВЕРЫ=="xhci_hcd"
ATTRS{редакция}=="0x0d"
АТТР{ирк}=="126"
ATTRS{driver_override}=="(null)"
АТТР{dma_mask_bits}=="64"
ATTRS{устройство}=="0x5aa8"
ATTRS{subsystem_vendor}=="0x8086"
ATTRS{включить}=="1"
ATTRS{consistent_dma_mask_bits}=="64"
ATTRS{вендор}=="0x8086"
ATTRS{subsystem_device}=="0x5aa8"
ATTRS{power_state}=="D0"
ATTRS{local_cpulist}=="0-3"
ATTRS{dbc}=="отключено"
ATTRS{класс}=="0x0c0330"
АТТР{ari_enabled}=="0"
ATTRS{local_cpus}=="f"
ATTRS{broken_parity_status}=="0"
ATTRS{numa_node}=="-1"
АТТР{msi_bus}=="1"
АТТР{d3cold_allowed}=="1"
глядя на родительское устройство '/devices/pci0000:00':
ЯДРА=="pci0000:00"
ПОДСИСТЕМЫ==""
ДРАЙВЕРЫ==""
Сначала я хочу создать правило для этого устройства, не используя сериал
атрибут (см. ниже).
В /etc/udev/rules.d
я создал 10-жест.правила
с этим содержанием:
SUBSYSTEM=="tty",SUBSYSTEMS=="usb",DRIVERS=="cdc_acm",ATTRS{idVendor}=="2341",ATTRS{idProduct}=="805a",SYMLINK+="жест"
тогда:
$ sudo chmod 0644 10-жест.правила
$ udevadm control --reload-rules && триггер udevadm
но симлинк не создается. Я также пытался:
$ sudo udevadm control --log-priority=debug
$ журналctl -f
но я не нахожу ничего подходящего.
Первый вопрос: Я наверняка сделал что-то не так в правиле.Можете ли вы помочь мне узнать, что?
я не хочу использовать сериал
атрибут, потому что мне нужно подключить несколько таких устройств. Я не буду знать их серийное имя (кстати, фактические устройства могут меняться), поэтому я буду полагаться на тип устройства (ПОДСИСТЕМА
, ПОДСИСТЕМЫ
, ВОДИТЕЛИ
и idVendor
/idProduct
атрибуты).
Второй вопрос: как создать символическую ссылку с прогрессивным номером (например, «жест1», «жест2») для всех устройств, соответствующих правилу? Порядок не важен.
Убунту 20.04