小编isi*_*or3的帖子

创建符号链接时 udev 重新编号

我将 USB 蜂窝调制解调器连接到运行 voyage linux(基于 Debian Squeeze)的 ALIX 3d2 板。调制解调器将自己注册为 TTY 设备,因此默认情况下,udev 将在/dev. 但是,可能还连接了其他 USB 转串口设备,我想知道有关调制解调器的参考。所以,我写了一个简单的 udev 规则来建立从调制解调器到的链接,/dev/ttyModem{0-3}但是我能找到的自动处理编号的唯一方法是通过%nudev 中的变量,/dev/ttyModem{4-7}如果一个四端口 USB-to-在调制解调器之前枚举串行适配器。我%e在旧的 udev 文档中找到了一些对变量的引用,它们可以满足我的需要,

幸运的是,每个 tty 设备都有一个可以从设备引用的端口号,所以我应该能够手动处理编号。我可以根据端口号创建链接,但是每当我尝试同时使用端口号和 USB vendorID+productID 时,就不再应用该规则。我怀疑我可能在某处违反了“单一父设备”规则,因为根据 ,这些属性在不同的设备中被识别udevadm info,但据我所知,所有属性都应该来自一个设备及其父设备。

以下是我应用的规则:

这个规则是有效的,也是我开始使用的规则,但它生成的数字可能不是从 0 开始的。

SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{idVendor}=="1199", ATTRS{idProduct}=="0028", SYMLINK+="ttyUSBID%n"
Run Code Online (Sandbox Code Playgroud)

所以我尝试使用四个规则来指定端口号,但是,这失败了,我认为这是因为它违反了“一个单一的父设备”规则。

SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{port_number}=="0", ATTRS{idVendor}=="1199", ATTRS{idProduct}=="0028", SYMLINK+="ttyFailingPort0"
Run Code Online (Sandbox Code Playgroud)

此规则的每个条件都应来自同一个节点,因此此规则(按您的预期工作)应该能够引用父节点。

SUBSYSTEMS=="usb-serial", KERNELS=="ttyUSB*", ATTRS{port_number}=="0", SYMLINK+="ttyPortNumberChild0"
Run Code Online (Sandbox Code Playgroud)

但是,这条规则失败了,我不知道为什么。

SUBSYSTEMS=="usb-serial", KERNELS=="ttyUSB*", ATTRS{idVendor}=="1199" ATTRS{port_number}=="0", SYMLINK+="ttyFailingPortNumber0
Run Code Online (Sandbox Code Playgroud)

这里是输出udevadm info --attribute-walk端口0端口1端口2, …

udev tty serial-port

5
推荐指数
1
解决办法
8792
查看次数

标签 统计

serial-port ×1

tty ×1

udev ×1