什么是以及如何增加 USB 设备的最大数量?

什么是以及如何增加 USB 设备的最大数量?

我想知道 Linux 内核可以管理的最大 USB 设备数量是多少?这是否也取决于 root-Hub 或其他东西?

有没有办法可以增加这个最大数量?

我需要这样做,因为我在尝试写入大量 USB 时遇到了问题。为此,我进行了如下设置:

有一台运行 Ubuntu Linux 的计算机,该机器的 3 个 USB 端口上连接了 3 个(活动)HUB。这三个 HUB 都是 7 端口 HUB。其中 6 个端口上连接了更多 HUB。这给了我“第二”层中的 3 * 6 = 18 个 HUB。每个 HUB 也是一个活动的 7 端口 HUB。这些第二层 HUB 的每个端口上都连接了一个 USB 棒。总共有 126 个 USB 棒连接到计算机。

我有一个脚本,用于搜索所有 USB 磁盘设备(通过列出 /dev/disk/by-path/ )。然后,首先对每个 USB 磁盘设备进行分区,使用 cp 进行写入,然后使用 syslinux 使其可启动。这不是并行完成的!

问题: 我只得到 105 个 USB 磁盘设备

ls -la /dev/disk/by-path | grep usb | grep -v part | wc -l

三排(每排对应第二层的一个HUB)灯条的LED也不亮。

我怎样才能让所有这些棒子工作起来?(或者可能更多?)

答案1

这是按照标准进行的,如下所述:https://en.wikipedia.org/wiki/USB_device#System_design

不能将超过 127 个设备(包括集线器)连接到单个主控制器。

现在:主机控制器+3 个集线器(第 1 层)+18 个集线器(第 2 层)= 22 个不作为磁盘设备的设备。

127 减去这 22 个 USB 设备 = 105 个可以被内核作为磁盘管理的设备。

127 个设备是 USB 协议的硬性限制(参见此处:http://www.beyondlogic.org/usbnutshell/usb3.shtml#USBProtocols) 因为 ADDR 地址字段长度为七位。

因此,通过软件无法增加它。也许您可以尝试使用多个主机控制器接口,或者通过减少集线器数量来更改拓扑(从而增加系统看到的磁盘数量)。

相关内容