【问题标题】:How to make usb port static?如何使usb端口静态?
【发布时间】:2013-06-04 06:13:19
【问题描述】:

有什么方法可以修复 Debian linux 中的 USB 端口吗?例如,我将 USB 插入串行电缆(电缆 A),Debian 将其分配给 /dev/ttyUSB0。之后,我将另一个 USB 插入串行(电缆 B)并将其分配给 /dev/ttyUSB1。

我知道如果我希望电缆 A 始终分配给 /dev/ttyUSB0,我必须在插入电缆 B 之前将其插入。如果我希望电缆 A 始终分配给 /dev/,是否有其他选择ttyUSB0 和电缆 B 到 /dev/ttyUSB1,无论我先插入哪根电缆或插入任何 USB 端口?

我愿意接受有关如何执行此操作的任何建议,如果需要,我可以编写 c++ 来处理此问题。

【问题讨论】:

  • 我认为将哪条电缆或设备插入哪个端口并不重要。插入 USB 端口后,您应该查询它以确定插入的设备是什么
  • 好的,我可以试试,但是除了 idVendor 和 idProduct 之外,我可以从连接到它的设备上获得任何其他属性吗? (可能是设备的mac地址)。

标签: c++ linux shell usb debian


【解决方案1】:

udev 规则是为此任务设计的:
https://unix.stackexchange.com/questions/66901/how-to-bind-usb-device-under-a-static-name
http://www.reactivated.net/writing_udev_rules.html

我认为在 Debian 上,规则文件位于 /etc/udev/rules.d/ 编辑规则后,您通常可以运行 udevadm --trigger action=change 来运行新规则,但有时我看到需要重新启动才能使它们生效。

这样做的最常见原因是给特定设备一个唯一的名称而不是特定的端口,但通常可以给端口名称。我目前不知道确切的规则,但这应该会引导您朝着正确的方向前进。

【讨论】:

  • 是的,我已经读到我可以使用 udev 来做这件事。但是大多数示例中的问题是所有这些都使用 idVendor 和 idProduct 作为我认为在我的情况下不可能的属性。 idVendor 和 idProduct 是 USB 转串行电缆本身的 ID,而不是连接到该电缆的终端设备的 ID。因此,如果我使用来自同一制造商的两条相似电缆,我可能会遇到冲突。
  • 如果您的电缆有序列号,您可以使用 ATTRS{serial}。您或许可以使用udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0) 查看您设备的所有可用属性。
【解决方案2】:

您可以使用 sys/mount.h 中的 Mount/Umount/Remount 函数。 配合适当的参数。 http://www.gnu.org/software/libc/manual/html_node/Mount_002dUnmount_002dRemount.html

【讨论】:

    【解决方案3】:

    您可以使用 udev 执行此操作,您将在该页面上找到信息 http://wiki.debian.org/udev

    【讨论】:

      【解决方案4】:

      有时这取决于 usb2uart 控制器。其中一些没有序列号。所以从操作系统的角度来看,一台设备与另一台设备完全一样。

      在这种情况下,它们是无法区分的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-07-08
        • 1970-01-01
        • 2020-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多