为什么外部 USB 集线器显示的 USB 总线/端口号与插入同一端口的其他设备不同?

为什么外部 USB 集线器显示的 USB 总线/端口号与插入同一端口的其他设备不同?

我正在设置一个系统,希望某些设备在插入某些端口时始终以相同的方式命名。我最初设置了一个 udev 规则文件,其中设备直接插入计算机。所以我有这样的规则:

ACTION=="add", KERNEL=="<namePattern>", KERNELS=="7-3", SYMLINK+="<newName>"

其中指定了计算机 PCI 卡上的特定 USB 端口(我使用或7-3找出了每个端口的编号)。dmesgudevadm info -q path -n <deviceName>

但是,我现在需要将设备插入 USB 集线器,以便它们远离计算机。当我将 USB 集线器插入同一端口时,它会显示在数字下,4-5而不是7-3,这让我很困惑。因此,插入集线器的设备最终显示在数字下,4-5.2而不是7-3.2我预期的那样。

据我了解,破折号前的第一个数字表示设备位于哪个 USB 总线上,而破折号后的数字串表示设备插入的每个连续集线器的端口号。因此,我无法理解为什么这些数字会突然改变,而我插入该端口的其他所有设备4-5都是这样7-3。我希望之前的数字保持不变,但在末尾附加一个额外的端口号,以表明它正在通过另一个 USB 集线器。

鉴于第一个集线器编号为4-5,当我以菊花链方式连接第二个集线器时,编号确实符合我的预期。我最终得到编号为4-5.2.x或 的设备4-5.3.x,具体取决于我将第二个集线器插入第一个集线器的哪个端口。因此,部件4-5保持不变,而第一个和第二个集线器上的端口号被附加上去。

我想知道为什么第一个集线器会显示数字,4-5而不是7-3像插入该端口的其他所有设备一样?显然,我对不同情况下编号的工作方式缺乏部分理解。

更新:我又对系统进行了一些调整,结果发现,奇怪的重新编号只发生在我将 USB 集线器插入PCI 卡。当我将它插入主板上的端口(或计算机前面的端口,反正只是连接到主板)时,它会保留与我预期相同的数字。我仍然不明白为什么即使使用 PCI 卡也会发生这种情况,但至少重新编号似乎是一致的。所以,我仍然可以设置有效的规则。如果有人对发生的事情有任何好的直觉,我仍然很好奇想知道发生了什么。

相关内容