Linux kernel USB带宽/主机控制器问题-Linux

Linux kernel USB带宽/主机控制器问题-Linux,linux-kernel,linux-device-driver,Linux Kernel,Linux Device Driver,我有12个USB 2.0设备插入运行Ubuntu 14.04的Intel NUC D54250WYK 运行lshw-short显示两条不同的USB总线和两个主机控制器(xHCI和eHCI) 所有USB设备都出现在同一总线上,并使用xHCI,而不管它们插入的端口是什么。因此,我在dmsg中看到以下错误: Not enough host controller resources for new device state. Not enough bandwidth for altsetting 0.

我有12个USB 2.0设备插入运行Ubuntu 14.04的Intel NUC D54250WYK

运行
lshw-short
显示两条不同的USB总线和两个主机控制器(xHCI和eHCI)

所有USB设备都出现在同一总线上,并使用xHCI,而不管它们插入的端口是什么。因此,我在dmsg中看到以下错误:

Not enough host controller resources for new device state.
Not enough bandwidth for altsetting 0. 
有没有办法将设备强制连接到特定的总线


我还读到,Linux可能在xHCI方面存在问题。有没有办法在不重新编译内核的情况下强制eHCI?英特尔没有在BIOS中提供此选项。

上次我检查此选项时,您有点为难。似乎
xHCI
是编译到内核中的,而不是作为一个模块,如果您在
eHCI
/
aHCI
/
oHCI
中编译,而不是
xHCI
,那么USB作为一个整体会中断,这可能是由于某些MOBO上内置了对车载USB控制的蓝牙和WIFI设备的支持

此时,您最好的选择似乎是在BIOS中禁用
xHCI
。这可能会禁用所有USB3控制器,但允许USB2控制器在不受此问题影响的情况下工作


关于您描述的Intel设备,我在上面看不到很多USB端口,所以我假设您使用的是集线器。从中,看起来您必须访问内部标头才能访问USB2端口

对于其他面临这一问题的人来说是个好消息。英特尔发布了一个新的bios(v40),其中添加了禁用xHCI的选项。在我的例子中,我更新了bios,禁用了xHCI,一切正常

小心那些只有XHCI的平台(阿波罗湖、丹弗顿)。
如果您在那里禁用XHCI,您将构建您的硬件。

我可以在另一台机器上的BIOS中禁用XHCI,并成功启动所有12个设备。我的目标机器Intel NUC上没有此选项。我已经尝试了几个不同的BIOS版本,但该选项不存在。@chris_mac那么你可能会被****ed,对不起。许多人抱怨新的BIOS版本中禁用了该选项。您最好的选择似乎是尝试降级BIOS(如果支持的话),或者使用不同的设备,或者等待修复(遗憾的是,我甚至在kernel.org上找不到关于这个问题的错误报告)。如果这对你没有帮助,我鼓励你把这个问题留给未来的访客,他们可以提供更多帮助。我自己也尝试过处理同样的问题,但运气不佳。祝你好运:)