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

Dan*_*our 7 usb kernel hub usb-storage usb-flash-drive

我想知道 Linux 内核可以管理的 USB 设备的最大数量是多少?这是否也取决于根集线器或其他什么?

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

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

有 1 台计算机运行 Ubuntu Linux,3 个(活动)集线器连接到这台机器的 3 个 USB 端口。这三个 HUB 都是 7 端口 HUB。这 7 个端口中的 6 个连接了更多 HUB。这给了我“第二”层中 3 * 6 = 18 个 HUB 的数量。这些 HUB 中的每一个也是一个活动的 7 端口 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
Run Code Online (Sandbox Code Playgroud)

3排摇杆(一排对应第二层的一个HUB)的LED灯也不亮。

我如何让所有这些棒子工作?(或者可能更多?)

Dav*_*sta 4

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

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

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

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

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

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