linux - 具有相同序列号的 USB 到串行设备之间的持久性

标签 linux serial-port debian usbserial

在为 USB 转串口适配器设备提供 udev 规则时遇到了一个大问题,我有两个,它们具有相同的属性。有没有其他方法可以为它们中的每一个设置 udev 规则,还是我运气不好?他们有“bcm2708_usb”内核版本。 谢谢!

此外,我通过 USB 集线器使用它们

这就是结果

  • like mentioned below, I used "lsusb -t" command to get the USB serial device tree

  • created a file "/etc/udev/rules.d/99-input.rules"

  • In that file I wrote this line "SYMLINK+="printer" ATTRS{devpath}=="1.2.1"

  • Saved the file and these commands to enable the rules without the need of reboot - "sudo udevadm control --reload-rules", "sudo udevadm trigger"

为了测试它,我使用了“sudo minicom -s”,在“serial setup”选项中我将设备设置为“/dev/printer”

最佳答案

我过去在使用两个相同的 USB 串行设备时遇到过这个问题。最后,我们通过将它们替换为系统中唯一的 USB 串行设备的四端口 USB 串行设备来长期解决这个问题,无论四端口在哪里,都可以更轻松地查找和检测各个串行端口USB 已连接。

但是:

实证方法

您可以通过一些经验观察来做到这一点,如果您可以物理识别和维护它所连接的 USB 端口,并且如果 USB 子系统不改变(比如,感谢移除/添加其他 PCI 卡或 USB 集线器、BIOS 更新等 - 这是一个很大的“如果”,我知道......)并且如果你只有一个你关心的系统......

命令 lsusb -t 将为您提供 USB 设备和端口树。您可以使用它来查找您的设备。选择一个然后将其取下并将其插入不同的 USB 端口以确认您拥有所需的设备。给它贴上标签,并贴上要使用它的物理端口的标签,并记下当时的总线、端口、设备、地址等。如果PCI总线没有改变等,那么USB总线、设备、端口应该保持与那个USB串口设备对应的那个。

示例输出:

/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/5p, 480M
    |__ Port 3: Dev 2, If 0, Class=hub, Driver=hub/4p, 480M
        |__ Port 1: Dev 7, If 0, Class=vend., Driver=pl2303, 12M

在这种情况下,链 Bus 02, Port 3 Dev1 --> Port 1 Dev 7

然后您可以在 udev 规则中使用该信息来区分特定的 USB 串行设备,类似于:

ATTRS{devpath}=="3.1",ATTRS{idVendor}=="0557", ATTRPICS{idProduct}=="2008"

这里,3.1对应最下面的端口3、端口1

这是一个未插入集线器的示例:

/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=vend., Driver=pl2303, 12M

ATTRS{devpath}=="1",ATTRS{idVendor}=="0557", ATTRS{idProduct}=="2008"

忽略 Dev 编号,每次插入时它都会更改。 很明显,把productId等换成你的……

关于linux - 具有相同序列号的 USB 到串行设备之间的持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22759063/

相关文章:

linux - 如何在配置中打印 C 宏的值

linux - `/path/to/dir/` 和 `/path/to/dir` 有什么区别

keyboard - LXDE (Debian) 中的按键绑定(bind)

python - 如何防止系统挂起/锁定(Python/C/Bash)

linux - bash 中信号之间的最短时间

Python 对串行/以太网无动于衷

c - HAL_UART_Transmit_IT 如何在 STM32F091VB 上管理串行发送数据

Android如何使用rs232端口接收rs485数据?

linux - 你可以用输入 whiptail sudo 吗?

mysql - 使用 phpMyAdmin 访问多个远程服务器