打印
[学习资料]

多个 USB 设备识别混乱的问题。

[复制链接]
85|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
烟雨蒙蒙520|  楼主 | 2025-3-24 16:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
USB, ev, AN, LAN, ID
在 Linux 下使用 udev 规则 绑定 EVB-LAN8670-USB 设备,并确保多个设备不会发生识别冲突,可以按照以下步骤进行:

1. 识别设备信息
首先,插入 EVB-LAN8670-USB 设备,并使用以下命令查找设备的详细信息:

bash
复制
编辑
udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0)
或者查看 dmesg 输出:

bash
复制
编辑
dmesg | grep -i usb
或者:

bash
复制
编辑
lsusb -v | grep -i "EVB-LAN8670"
查找以下关键属性:

idVendor(厂商 ID)

idProduct(产品 ID)

serial(设备序列号,保证唯一性)

devpath 或 busnum(用于定位设备)

例如:

pgsql
复制
编辑
  ATTRS{idVendor}=="0424"
  ATTRS{idProduct}=="274e"
  ATTRS{serial}=="000123456789"
2. 创建 udev 规则
在 /etc/udev/rules.d/ 目录下创建一个新规则文件,例如 99-lan8670.rules:

bash
复制
编辑
sudo nano /etc/udev/rules.d/99-lan8670.rules
添加如下内容:

bash
复制
编辑
SUBSYSTEM=="usb", ATTRS{idVendor}=="0424", ATTRS{idProduct}=="274e", ATTRS{serial}=="000123456789", SYMLINK+="evb-lan8670-1"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0424", ATTRS{idProduct}=="274e", ATTRS{serial}=="000987654321", SYMLINK+="evb-lan8670-2"
解释:

SUBSYSTEM=="usb" → 仅匹配 USB 设备

ATTRS{idVendor}=="0424" → 设备厂商 ID

ATTRS{idProduct}=="274e" → 设备产品 ID

ATTRS{serial}=="000123456789" → 通过唯一序列号区分设备

SYMLINK+="evb-lan8670-1" → 设备将映射到 /dev/evb-lan8670-1

如果是 USB 串口设备(如 /dev/ttyUSBx),则可以使用:

bash
复制
编辑
SUBSYSTEM=="tty", ATTRS{idVendor}=="0424", ATTRS{idProduct}=="274e", ATTRS{serial}=="000123456789", SYMLINK+="ttyLAN8670_1"
3. 重新加载 udev 规则
执行以下命令,使新规则生效:

bash
复制
编辑
sudo udevadm control --reload-rules
sudo udevadm trigger
然后拔掉 USB 设备,再次插入,检查 /dev/ 目录:

bash
复制
编辑
ls -l /dev/evb-lan8670-*
如果一切正常,应该看到:

bash
复制
编辑
lrwxrwxrwx 1 root root 10 Mar 24 12:00 /dev/evb-lan8670-1 -> /dev/ttyUSB0
lrwxrwxrwx 1 root root 10 Mar 24 12:00 /dev/evb-lan8670-2 -> /dev/ttyUSB1
4. 确保规则在启动时生效
有时设备会在系统启动时被动态分配不同的 /dev/ttyUSBx,可以通过 systemd 确保规则加载:

bash
复制
编辑
sudo systemctl restart udev
5. 额外建议
如果设备没有唯一序列号,可以用 KERNELS 或 DEVPATH 进行匹配:

bash
复制
编辑
KERNELS=="1-1.3", SUBSYSTEM=="usb", SYMLINK+="evb-lan8670-1"
可以在 /var/log/syslog 或 journalctl -xe 查看 udev 规则是否生效。

结论
通过 udev 规则,我们可以确保 EVB-LAN8670-USB 设备不会因多个设备插入而发生名称混乱。现在,即使多次插拔,它们都会保持固定的 /dev/evb-lan8670-* 设备节点名称。

可以试试看,如果有问题可以提供 udevadm info 的输出

使用特权

评论回复
沙发
21mengnan| | 2025-3-24 16:19 | 只看该作者
要给每个设备不同的ID

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

668

帖子

0

粉丝