在 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 中。