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

时间:2014-03-31 10:20:04

标签: linux serial-port debian usbserial

给USB-to-Serial适配器设备提供udev规则存在很大问题,我有两个,它们具有相同的属性。有没有其他方法可以为每个人设置udev规则,还是我运气不好?他们有" bcm2708_usb"内核版本。 谢谢!

另外,我通过usb hub

使用它们

这就是最终的

  
      
  • 如下所述,我使用" lsusb -t"命令获取USB串行设备树

  •   
  • 创建了一个文件" /etc/udev/rules.d/99-input.rules"

  •   
  • 在该文件中,我写了这一行" SYMLINK + =" printer" ATTRS {DEVPATH} ==" 1.2.1"

  •   
  • 保存文件和这些命令以启用规则而无需重启 -    " sudo udevadm control --reload-rules"," sudo udevadm trigger"

  •   

为了测试它,我使用了" sudo minicom -s"并在"串口设置"选择我将设备设置为" / dev / printer"

1 个答案:

答案 0 :(得分:2)

过去我有两个相同的USB串行设备出现此问题。最后,我们用一个四端口USB串口设备替换它们,这是设备中唯一的USB串口设备,无论四端口在哪里,都可以更轻松地查找和检测各个串口USB已连接。

然而:

经验方法

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

命令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

在这种情况下,链路总线02,端口3 Dev1 - >端口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"

忽略开发号码,每次插入时它都会改变。 显然,用你的产品等替换产品等......