我有一个 Debian 9 盒子,如果我插入其中一个设备,它的 UART 会同时显示在 和lsusb
的输出中ls /sys/bus/usb-serial/devices/
。
当我附加 2 个时,第二个总是出现。
但对于大于 2 的数字,lsusb
或中不会出现新条目usb-serial/devices/
。它似乎也是随机的:有时第三个设备会出现,有时不会。
此行为在 3 个不同品牌的 USB 集线器中是相同的。我还尝试在 MacOS 上连接这些设备,并得到了类似的行为。
目前我的lsusb
看起来像这样(为了清楚起见,省略了其他集线器和设备):
... snip
Bus 001 Device 042: ID 0403:6014 Future Technology Devices International, Ltd FT232H Single HS USB-UART/FIFO IC
Bus 001 Device 040: ID 0403:6014 Future Technology Devices International, Ltd FT232H Single HS USB-UART/FIFO IC
Bus 001 Device 036: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 039: ID 10c4:ea71 Cygnal Integrated Products, Inc.
Bus 001 Device 037: ID 0403:6014 Future Technology Devices International, Ltd FT232H Single HS USB-UART/FIFO IC
... snip
是否有某些系统设置阻止显示其他设备?
答案1
是的
这是主板上使用的 Intel xHCI 芯片组的限制。
具体来说,这些芯片中的大多数将“设备”的数量限制为 32 个。但是像相机这样的单个物理事物可能对 USB 控制器芯片来说表现为多个“设备”。另外,每个集线器至少算作 1 个“设备”,因此您可以比预期更早地轻松遇到此限制。
就我而言,我相信每个 FTDI 芯片显示为 4 个设备,加上出于某种原因,xHCI 芯片最多有 16 个设备,因此在用电缆插入大约第二个或第三个物理设备后,我就用完了。
从 可以看出dmesg
:
[4173630.423513] usb 1-1.2.3-port3: couldn't allocate usb_device
[4173630.430741] xhci_hcd 0000:00:0f.0: Error while assigning device slot ID
[4173630.437521] xhci_hcd 0000:00:0f.0: Max number of devices this xHCI host supports is 16.
到目前为止我找到的解决方案基本上可以归结为:
- 添加专用 PCI USB 控制器更多详细信息请参见此处
- 如果可能的话,降级到
ehci
强制 USB 2.0,因此限制为 128 个设备正如这里所解释的
就我而言,不可能将精美的新服务器降级为ehci
,因此我们将尝试使用旧服务器中的 USB 2.0 端口作为我们的 USB 接口。我发现非常令人沮丧的是,所谓的“更好”的 USB 3.0 却有这个限制。