【问题标题】:Persistant name in usb device which open several connections || connect USB to specific port [duplicate]打开多个连接的 USB 设备中的永久名称 ||将USB连接到特定端口[重复]
【发布时间】:2017-05-23 08:11:52
【问题描述】:

我正在尝试向 USB 设备连接添加一个持久名称,以便能够通过写入 /dev/multitech 而不是 /devttyACMx 来连接它。通过添加 udev 规则,我已经能够对其他设备执行此操作,例如:

SUBSYSTEM=="tty", ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021",ATTRS{serial}=="356136967675473", SYMLINK+="multitech"

问题是这个设备打开了 6 个连接,从 ttyACM0 到 ttyACM5(如果没有其他连接)但是要使用它,你必须使用 ttyACM0(意味着第一个连接)但是如果你写:

$ ls -l /dev/multitech

您可能会得到它打开的任何连接,可能是 ttyACM0 或可能是 ttyACM3... 问题是这对我来说没用,因为它有时有效,有时无效。对此我有什么办法吗?

非常感谢!!

【问题讨论】:

  • 好的,我的问题不是重复的,因为我们要求不同的东西,尽管他们提出的解决方案对我有用,所以我会接受它

标签: linux usb device-driver persistent udev


【解决方案1】:

通常,设备建立的每个连接都有自己的接口或 USB 树结构中的备用设置。在 udev 规则中,您可以使用其他几个属性(所有您可以使用 udevadm info --attribute-walk http://www.beyondlogic.org/usbnutshell/usb5.shtml#InterfaceDescriptors 显示)

使用udevadm info --attribute-walk + /sys/class/.../dev/... 路径为您的设备运行属性遍历,以查看它在其usb 结构中具有的几个usb 接口的标识符,并尝试将它们包含在udev 规则中,即使用以下属性:

ATTRS{bAlternateSetting}=="..."
ATTRS{bInterfaceClass}=="..."
ATTRS{bInterfaceNumber}=="..."
ATTRS{bInterfaceProtocol}=="..."
ATTRS{bInterfaceSubClass}=="..."

尝试为设备在其usb结构中的任何接口分配特定的/dev/ttyACMx,并尝试将usb结构中的顶级接口分配给/dev/ttyACM0 ...

http://weininger.net/how-to-write-udev-rules-for-usb-devices.html

【讨论】:

  • 我检查了 ttyACM0 到 ttyACM5 的属性,它们都是一样的。甚至没有一个 ATTRS 属性不同,所以我不知道如何为其编写 udev 规则。
【解决方案2】:

Change default names for USB virtual serial ports in Linux

这篇文章解决了我的问题,而不是使用 /devttyACMx y 更改为使用 /dev/serial/by-id/ 中的名称 到现在为止它运行良好,如果它停止这样做,我会发布它

【讨论】:

    猜你喜欢
    • 2013-08-06
    • 2017-12-14
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    相关资源
    最近更新 更多