用于重命名 USB 设备的 Udev 规则似乎不起作用

用于重命名 USB 设备的 Udev 规则似乎不起作用

在 aarch64 上运行 Ubuntu 20.04 的 Raspberry Pi 4 上,我有一个 USB ZWave 设备,我想以特定名称公开该设备,因此我编写了一个简单的udev规则来执行此操作,但它似乎不起作用。

供应商:产品 ID 是0658:0200

我的规则是

ATTRS{idVendor}=="0658", ATTRS{idProduct}=="0200", NAME="ttyZWAVE0"

但该设备继续显示为ttyACM0

如果我使用以下具有相同匹配条件的规则来创建符号链接,则符号链接确实会正确显示:

ATTRS{idVendor}=="0658", ATTRS{idProduct}=="0200", SYMLINK+="ttyZWAVE0"

这是udevadm --name=/dev/ttyACM0 --attribute-walk创建规则之前我的输出:

  looking at parent device '/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1':
    KERNELS=="1-1.1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{bcdDevice}=="0000"
    ATTRS{version}==" 2.00"
    ATTRS{rx_lanes}=="1"
    ATTRS{devpath}=="1.1"
    ATTRS{removable}=="unknown"
    ATTRS{authorized}=="1"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bMaxPower}=="100mA"
    ATTRS{idVendor}=="0658"
    ATTRS{bmAttributes}=="80"
    ATTRS{ltm_capable}=="no"
    ATTRS{bNumInterfaces}==" 2"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{idProduct}=="0200"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{busnum}=="1"
    ATTRS{urbnum}=="12"
    ATTRS{configuration}==""
    ATTRS{speed}=="12"
    ATTRS{tx_lanes}=="1"
    ATTRS{maxchild}=="0"
    ATTRS{devspec}=="(null)"
    ATTRS{devnum}=="3"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{quirks}=="0x0"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bDeviceClass}=="02"

为什么直接重命名它的规则不起作用,无论是系统udev trigger重新启动还是整个系统重新启动,但添加符号链接的规则却不起作用工作?我错过了一些简单的事情吗?

我在journalctl中看不到任何有用的东西(实际上什至没有提到它,没有错误,什么也没有)。

编辑添加:

在我的笔记本电脑上,这似乎也以同样的方式失败,在 amd64 上运行 Ubuntu 20.04,结果完全相同(显然具有不同的父设备路径)。

udevadm test /sys/path/to/device对于为什么它没有达到我的预期,也没有给出明显的答案。它确实显示它正在阅读我的规则并且没有错误......

答案1

根据 udev 文档,这是根本不允许的。正如我发布此问题后发现的其他几个问题所示,手册页中提到了它。直到我以一种使其最后运行的方式命名我的规则,触发一个错误,从而为udevadm test我指明了正确的方向,我才发现这个警告。

它记录在官方网站和 udev.7 中。

https://www.freedesktop.org/software/systemd/man/udev.html

相关内容