我有一个笔记本电脑E5470,它只有一个USB控制器。我的usecase正在添加USB外部驱动器。到目前为止,我能够在一个控制器上支持32多个设备。
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 5000M
|__ Port 1: Dev 8, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 2: Dev 10, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 4: Dev 26, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 3: Dev 35, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 4: Dev 39, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 2: Dev 15, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 4: Dev 36, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 2: Dev 23, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 3: Dev 29, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 3: Dev 20, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 3: Dev 38, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 1: Dev 28, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 4: Dev 41, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 2: Dev 34, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 1: Dev 12, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 1: Dev 17, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 4: Dev 33, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 2: Dev 22, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 3: Dev 27, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 1: Dev 9, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 1: Dev 11, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 4: Dev 32, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 2: Dev 19, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 3: Dev 25, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 1: Dev 14, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 4: Dev 21, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 4: Dev 42, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 2: Dev 37, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 3: Dev 40, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 1: Dev 30, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 2: Dev 13, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 3: Dev 24, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 4: Dev 31, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 2: Dev 18, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 3: Dev 16, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 3: Dev 50, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 1: Dev 51, If 0, Class=Vendor Specific Class, Driver=r8152, 5000M
|__ Port 2: Dev 52, If 0, Class=Vendor Specific Class, Driver=r8152, 5000M
|__ Port 4: Dev 53, If 0, Class=Mass Storage, Driver=uas, 5000M现在,当我通过一个新的USB控制器(替换我的wifi卡,将一个m2插入到迷你PCI适配器,然后添加我自己的mini适配器)时,它被分配给总线4。
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 3: Dev 6, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 4: Dev 19, If 0, Class=Mass Storage, Driver=uas, 5000M
|__ Port 2: Dev 13, If 0, Class=Mass Storage, Driver=uas, 5000M
|__ Port 3: Dev 17, If 0, Class=Mass Storage, Driver=uas, 5000M
|__ Port 1: Dev 10, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 1: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 2: Dev 8, If 0, Class=Mass Storage, Driver=uas, 5000M
|__ Port 3: Dev 12, If 0, Class=Mass Storage, Driver=uas, 5000M
|__ Port 1: Dev 5, If 0, Class=Mass Storage, Driver=uas, 5000M
|__ Port 4: Dev 16, If 0, Class=Mass Storage, Driver=uas, 5000M
|__ Port 4: Dev 9, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 4: Dev 20, If 0, Class=Mass Storage, Driver=uas, 5000M
|__ Port 3: Dev 18, If 0, Class=Mass Storage, Driver=uas, 5000M
|__ Port 1: Dev 15, If 0, Class=Mass Storage, Driver=uas, 5000M
|__ Port 2: Dev 4, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 3: Dev 14, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 1: Dev 7, If 0, Class=Mass Storage, Driver=uas, 5000M
|__ Port 2: Dev 11, If 0, Class=Mass Storage, Driver=uas, 5000M
|__ Port 2: Dev 21, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 1: Dev 22, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 4: Dev 24, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 2: Dev 23, If 0, Class=Hub, Driver=hub/4p, 5000M现在,当我试图添加更多的USB设备到总线4,我得到了错误。我不明白..。我的总线2 USB控制器比我的4总线有更多的设备。然而,总线4抱怨它不能增加更多的设备?怎么会这样?
我希望4路总线能容纳与2总线相同数量的设备,但它正在出错
[ 733.095066] xhci_hcd 0000:01:00.0: Error while assigning device slot ID
[ 733.095081] xhci_hcd 0000:01:00.0: Max number of devices this xHCI host supports is 32.
[ 733.095092] usb 4-2.1-port3: couldn't allocate usb_device如何找出Unix不允许我向控制器添加更多设备的原因?lsusb不会给出更多的信息,比如特定控制器的限制。
发布于 2022-05-16 01:22:45
你的期望是错误的。并不是所有的USB控制器都是相同的,尽管它们都提供了一个相似的标准化编程接口。
在第5.3章中,从第380页开始,描述了主机控制器功能寄存器,它告诉驱动程序XHCI控制器的特定实现具有哪些功能。第5.3.3小节描述了一个只读结构参数1寄存器,它包含设备插槽、中断器和这个特定控制器可以处理的端口的最大数量。
总线4控制器与总线2有不同的XHCI硬件实现,因此它们显然有不同的最大设备数量。
命令
lspci -nnvd ::0c03应打印出足够的信息,以使您能够确定确切的XHCI控制器芯片使用。如果你不相信我的话,你可以搜索他们的数据表来确认他们的能力。
https://unix.stackexchange.com/questions/656670
复制相似问题