Điểm:1

quy tắc udev cho các thiết bị tương tự

lá cờ ve

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 XEidVendor/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

Điểm:1
lá cờ ng
  • 10-cử chỉ.rules 10 là rất sớm đối với các thiết bị như vậy và quy tắc này chỉ để tạo liên kết sim.

    Chỉ thử sử dụng số cao 90~99 nếu bạn biết các quy tắc mà bạn muốn ghi đè (toàn bộ hoặc một phần) hoặc tác động đến hành động của nó sau này)

  • udev hỗ trợ thay thế biến, vì vậy bạn có thể sử dụng một số thuộc tính trong tên liên kết tượng trưng. Nếu không, hãy tạo một tập lệnh xác minh các liên kết tượng trưng trước đó (hoặc lưu trữ số cuối cùng trong một tệp), tăng dần và sử dụng tập lệnh đó với CHẠY + = "" hoạt động.

lá cờ ve
Tôi sẽ thử gợi ý của bạn và sau đó tôi quay lại với phản hồi. Tôi đặt nó thành `10-` vì thư mục `/etc/udev/rules.d` trống, vì vậy tôi cho rằng không có quy tắc nào trước đó...
user.dz avatar
lá cờ ng
@Mark, bạn cần lưu ý rằng có nhiều vị trí quy tắc và chúng được udev quét cùng nhau, xem https://unix.stackexchange.com/a/205738/12209. Nên giữ các quy tắc tùy chỉnh của bạn trong `/etc/udev/rules.d` và coi chừng số và tên tương tự trong các thư mục khác, để bạn biết thứ tự và tránh ghi đè ngoài ý muốn. Ngoài ra, bạn có thể kiểm tra bằng cách sử dụng `udevadm test...` để xem tất cả các quy tắc được tải và hành động nào được kích hoạt.
lá cờ ve
Hiểu rồi, cảm ơn! Nhưng thật không may, ngay cả việc chuyển các quy tắc sang `99-` cũng không hoạt động. Tôi đã thay đổi quy tắc thành `KERNEL=="ttyACM*", SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", SYMLINK+="ttyGesture%n", GROUP="dialout ", MODE="0666"` và theo cách này, nó được kích hoạt. Nhưng tôi không chắc liệu đó có phải là cách tiếp cận đúng hay không.
user.dz avatar
lá cờ ng
@Mark Tốt, cách tiếp cận của bạn tốt miễn là bạn không có thiết bị tương tự có thể gây nhiễu. Mặc dù nó nghiêm ngặt hơn so với trước đó, nhưng có thể liên kết tượng trưng đó đang được viết lại nhiều lần trong thiết lập trước đó!
lá cờ ve
Có cách nào để hiển thị những viết lại? Nó sẽ hữu ích cho việc gỡ lỗi
user.dz avatar
lá cờ ng
@Mark một cách là thêm tập lệnh ghi nhật ký bằng `RUN+=""` cách khác là sử dụng `udevadm trigger ...` và `udevadm monitor -u` . Tôi đã tiếp tục một lần các gợi ý như vậy trong https://unix.stackexchange.com/a/207712/12209 , tôi đã từng `echo` một dòng vào tệp nhật ký mỗi khi quy tắc được kích hoạt và ghi lại tên nút và hoặc đường dẫn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.