Tôi đang gặp khó khăn trong việc tạo quy tắc udev cho một số thiết bị tương tự (cổng USB nối tiếp).
Đây là đầu ra của chi tiết từ một trong số chúng:
$ udevadm thông tin --name=/dev/ttyACM0 --attribute-walk
Thông tin Udevadm bắt đầu với thiết bị được chỉ định bởi devpath và sau đó
đi lên chuỗi thiết bị gốc. Nó in cho mọi thiết bị
đã tìm thấy, tất cả các thuộc tính có thể có ở định dạng khóa quy tắc udev.
Một quy tắc để khớp, có thể được tạo bởi các thuộc tính của thiết bị
và các thuộc tính từ một thiết bị mẹ duy nhất.
nhìn vào thiết bị '/devices/pci0000:00/0000:00:15.0/usb1/1-3/1-3:1.0/tty/ttyACM0':
KERNEL=="ttyACM0"
HỆ THỐNG PHỤ ==" tty"
NGƯỜI ĐIỀU KHIỂN ==""
nhìn vào thiết bị mẹ '/devices/pci0000:00/0000:00:15.0/usb1/1-3/1-3:1.0':
KERNELS=="1-3:1.0"
HỆ THỐNG PHỤ ==" usb"
TRÌNH ĐIỀU KHIỂN=="cdc_acm"
ATTRS{iad_bFunctionClass}=="02"
ATTRS{iad_bInterfaceCount}=="02"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bInterfaceProtocol}=="01"
ATTRS{iad_bFunctionSubClass}=="02"
ATTRS{iad_bFirstInterface}=="00"
ATTRS{bInterfaceSubClass}=="02"
ATTRS{được ủy quyền}=="1"
ATTRS{iad_bFunctionProtocol}=="00"
ATTRS{bmCapabilities}=="6"
ATTRS{supports_autosuspend}=="1"
ATTRS{bInterfaceClass}=="02"
ATTRS{bNumEndpoints}=="01"
nhìn vào thiết bị mẹ '/devices/pci0000:00/0000:00:15.0/usb1/1-3':
NHÂN =="1-3"
HỆ THỐNG PHỤ ==" usb"
TRÌNH ĐIỀU KHIỂN ==" usb"
ATTRS{maxchild}=="0"
ATTRS{busnum}=="1"
ATTRS{speed}=="12"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{rx_lanes}=="1"
ATTRS{bDeviceSubClass}=="02"
ATTRS{idVendor}=="2341"
ATTRS{devnum}=="6"
ATTRS{bNumInterfaces}==" 2"
ATTRS{bDeviceProtocol}=="01"
ATTRS{quirks}=="0x0"
ATTRS{devpath}=="3"
ATTRS{bMaxPower}=="100mA"
ATTRS{bDeviceClass}=="ef"
ATTRS{tx_lanes}=="1"
ATTRS{version}==" 2.00"
ATTRS{nhà sản xuất}=="Arduino"
ATTRS{ltm_capable}=="không"
ATTRS{removable}=="unknown"
ATTRS{product}=="Nano 33 BLE"
ATTRS{bConfigurationValue}=="1"
ATTRS{idProduct}=="805a"
ATTRS{bNumConfigurations}=="1"
ATTRS{được ủy quyền}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{serial}=="F594686789F67DE5"
ATTRS{bcdDevice}=="0101"
ATTRS{cấu hình}==""
ATTRS{urbnum}=="13"
ATTRS{bmAttributes}=="c0"
nhìn vào thiết bị mẹ '/devices/pci0000:00/0000:00:15.0/usb1':
KERNELS=="usb1"
HỆ THỐNG PHỤ ==" usb"
TRÌNH ĐIỀU KHIỂN ==" usb"
ATTRS{bDeviceClass}=="09"
ATTRS{maxchild}=="8"
ATTRS{ltm_capable}=="không"
ATTRS{urbnum}=="85"
ATTRS{nhà sản xuất}=="Linux 5.11.0-38-generic xhci-hcd"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{quirks}=="0x0"
ATTRS{product}=="Bộ điều khiển máy chủ xHCI"
ATTRS{bDeviceProtocol}=="01"
ATTRS{devpath}=="0"
ATTRS{devnum}=="1"
ATTRS{rx_lanes}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{authorized_default}=="1"
ATTRS{speed}=="480"
ATTRS{busnum}=="1"
ATTRS{version}==" 2.00"
ATTRS{bConfigurationValue}=="1"
ATTRS{bNumInterfaces}==" 1"
ATTRS{idProduct}=="0002"
ATTRS{được ủy quyền}=="1"
ATTRS{bMaxPower}=="0mA"
ATTRS{serial}=="0000:00:15.0"
ATTRS{cấu hình}==""
ATTRS{removable}=="unknown"
ATTRS{bNumConfigurations}=="1"
ATTRS{idVendor}=="1d6b"
ATTRS{bmAttributes}=="e0"
ATTRS{bcdDevice}=="0511"
ATTRS{tx_lanes}=="1"
ATTRS{bDeviceSubClass}=="00"
ATTRS{interface_authorized_default}=="1"
nhìn vào thiết bị mẹ '/devices/pci0000:00/0000:00:15.0':
KERNELS=="0000:00:15.0"
HỆ THỐNG PHỤ =="pci"
TRÌNH ĐIỀU KHIỂN=="xhci_hcd"
ATTRS{revision}=="0x0d"
ATTRS{irq}=="126"
ATTRS{driver_override}=="(null)"
ATTRS{dma_mask_bits}=="64"
ATTRS{thiết bị}=="0x5aa8"
ATTRS{subsystem_vendor}=="0x8086"
ATTRS{enable}=="1"
ATTRS{consistent_dma_mask_bits}=="64"
ATTRS{vendor}=="0x8086"
ATTRS{subsystem_device}=="0x5aa8"
ATTRS{power_state}=="D0"
ATTRS{local_cpulist}=="0-3"
ATTRS{dbc}=="đã tắt"
ATTRS{class}=="0x0c0330"
ATTRS{ari_enabled}=="0"
ATTRS{local_cpus}=="f"
ATTRS{broken_parity_status}=="0"
ATTRS{numa_node}=="-1"
ATTRS{msi_bus}=="1"
ATTRS{d3cold_allowed}=="1"
nhìn vào thiết bị mẹ '/devices/pci0000:00':
KERNELS=="pci0000:00"
HỆ THỐNG PHỤ ==""
TRÌNH ĐIỀU KHIỂN ==""
Lúc đầu, tôi muốn tạo quy tắc cho thiết bị này mà không cần sử dụng nối tiếp
thuộc tính (xem bên dưới).
Trong /etc/udev/rules.d
Tôi đã tạo ra 10-cử chỉ.rules
với nội dung này:
SUBSYSTEM=="tty",SUBSYSTEMS=="usb",DRIVERS=="cdc_acm",ATTRS{idVendor}=="2341",ATTRS{idProduct}=="805a",SYMLINK+="gesture"
sau đó:
$ Sudo chmod 0644 10-cử chỉ.rules
$ điều khiển udevadm --reload-rules && udevadm kích hoạt
nhưng liên kết tượng trưng không được tạo. Tôi cũng đã cố gắng:
$ Sudo điều khiển udevadm --log-priority=debug
$ tạp chí -f
nhưng tôi thấy không có gì liên quan.
câu hỏi đầu tiên: Tôi chắc chắn đã làm điều gì đó sai trong quy tắc.Bạn có thể giúp tôi tìm hiểu những gì?
tôi không muốn sử dụng nối tiếp
thuộc tính vì tôi cần kết nối một số thiết bị này. Tôi sẽ không biết tên sê-ri của chúng (nhân tiện, thiết bị thực tế có thể thay đổi) vì vậy tôi sẽ dựa vào loại thiết bị (HỆ THỐNG PHỤ
, HỆ THỐNG PHỤ
, NGƯỜI LÁI XE
và idVendor
/idSản phẩm
thuộc tính).
Câu hỏi thứ hai: làm cách nào để tạo liên kết tượng trưng với số lũy tiến (tức là "cử chỉ1", "cử chỉ2") cho tất cả các thiết bị phù hợp với quy tắc? Thứ tự không quan trọng.
Ubuntu 20.04