我想知道 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 地址字段长度为七位。
因此,通过软件无法增加它。也许您可以尝试使用多个主机控制器接口,或者通过减少集线器数量来更改拓扑(从而增加系统看到的磁盘数量)。