Spi*_*ail 7 usb debian kernel linux-kernel dmesg
我有一个基于 debian mint 的系统,我在其中插入了 16 个 USB 设备。内核是: 3.11.0-12-generic 在大约 10 个左右的设备之后,我开始遇到连接新设备的问题。可以在 dmesgs 中找到一个这样的设备的错误,如下所示(最后两行不同)
[新更新:变通方法] 我发现此问题特定于 xhci。在我的 bios 中,我实际上能够禁用 xhci 并强制 linux 回退到 ehci(大概)。现在我所有的设备都运行良好!当然,这对我来说意味着没有 USB3 设备。幸运的是,我的即时申请不需要它们。我不知道这是英特尔问题还是 linux 问题。离开这个页面会很好,因为其他人很想找到它。
dmesg | grep -i 3-5.1
Run Code Online (Sandbox Code Playgroud)
工作装置:
[ 1.883505] hub 3-5:1.0: USB hub found
[ 1.883733] hub 3-5:1.0: 4 ports detected
[ 3.370272] usb 3-5.1: new full-speed USB device number 17 using xhci_hcd
[ 3.387126] usb 3-5.1: New USB device found, idVendor=03eb, idProduct=2045
[ 3.387129] usb 3-5.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 3.387908] usb-storage 3-5.1:1.0: USB Mass Storage device detected
[ 3.388006] scsi14 : usb-storage 3-5.1:1.0
[ 121.738568] usb 3-5.1: USB disconnect, device number 17
[ 121.942662] usb 3-5.1: new full-speed USB device number 28 using xhci_hcd
[ 121.961332] usb 3-5.1: New USB device found, idVendor=03eb, idProduct=204b
[ 121.961334] usb 3-5.1: New USB device strings: Mfr=1, Product=2, SerialNumber=220
[ 121.961336] usb 3-5.1: Product: LUFA USB-RS232 Adapter
[ 121.961337] usb 3-5.1: Manufacturer: Dean Camera
[ 121.961338] usb 3-5.1: SerialNumber: 741333532373518080C1
[ 121.961408] usb 3-5.1: ep 0x82 - rounding interval to 1024 microframes, ep desc says 2040 microframes
[ 121.962080] cdc_acm 3-5.1:1.0: ttyACM3: USB ACM device
[ 1281.513105] usb 3-5.1: USB disconnect, device number 28
dmesg | grep -i 3-5.1
Run Code Online (Sandbox Code Playgroud)
故障设备:
[ 3.638401] usb 3-5.4: new full-speed USB device number 20 using xhci_hcd
[ 3.655067] usb 3-5.4: New USB device found, idVendor=03eb, idProduct=2045
[ 3.655070] usb 3-5.4: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 3.655868] usb-storage 3-5.4:1.0: USB Mass Storage device detected
[ 3.655977] scsi17 : usb-storage 3-5.4:1.0
[ 118.793161] usb 3-5.4: USB disconnect, device number 20
[ 122.603119] usb 3-5.4: new full-speed USB device number 31 using xhci_hcd
[ 122.621653] usb 3-5.4: New USB device found, idVendor=03eb, idProduct=204b
[ 122.621655] usb 3-5.4: New USB device strings: Mfr=1, Product=2, SerialNumber=220
[ 122.621656] usb 3-5.4: Product: LUFA USB-RS232 Adapter
[ 122.621657] usb 3-5.4: Manufacturer: Dean Camera
[ 122.621658] usb 3-5.4: SerialNumber: 74133353237351808021
[ 122.621795] usb 3-5.4: ep 0x82 - rounding interval to 1024 microframes, ep desc says 2040 microframes
[ 122.622419] usb 3-5.4: Not enough host controller resources for new device state.
[ 122.622424] usb 3-5.4: can't set config #1, error -12
Run Code Online (Sandbox Code Playgroud)
我的硬件拓扑如下:PC -> 4 个有源 USB2 集线器 -> 每个有 4 个 USB(1) 设备。这些设备是“双启动”,您可以在上面看到它们作为大容量存储设备弹出并作为相同端口上的串行设备重新启动。
我直接从电源为 USB 集线器供电,我的每个设备都消耗大约 700mA 的电流,并且来自电源的 5V 线路下降到 4.69V。
我的机器上有许多 USB 区域,据我所知,这些区域连接到底层集线器或根集线器。移动外部集线器对结果没有影响。实验上:我认为将集线器放在集线器上会导致更大的问题,但结果是一样的。
当我将所有设备都插入电源(并汲取电流),但只有 3 个集线器插入 PC 时,一切都很好。当我插入第 4 个集线器时,我可以在 LSUSB 中看到所有设备都在那里,但是,最后一个集线器上的 4 个设备中只有 1 个出现。在这种情况下。3-5.1 很好,但 3-5.2 3-5.3 和 3-5.4 似乎没有加载驱动程序。
所有设备都是相同的,我已经测试了诸如交换设备、交换集线器等的东西。它总是最后一个进入的设备。如果最后一个设备是完全不同的东西,比如鼠标或无线加密狗,也会发生这种情况. 该设备将在 lsusb 中可见,但它不起作用。我认为这表明操作系统存在过度的 USB 限制,而不是特定于驱动程序的东西。
重新启动时,它仍然是绘制电流时的最后 3 个设备。然而。我还可以将这些设备置于没有电流消耗的状态,并且可以将它们启动。
我的结论是操作系统正在读取电流并对电源资源进行一些评估。可能他们是从集线器获取这些信息,甚至可能将这些值加在一起。很高兴知道我是否可以简单地拥有“更多主机控制器资源”
[更新] 我在这里找到了错误消息的源代码:我不喜欢“/* FIXME:我们可以为 HC 分配更多资源吗?*/”的外观也许这也意味着有一种方法从一开始就分配更多资源。
任何线索都会很棒大卫
小智 4
我也遇到了这个错误(在尝试连接十几个 USB 网络接口设备之后)。我很确定这不是设备的电流问题:它们都位于供电集线器上并且完全在电流限制范围内。我认为这是分配中断或其他资源的问题。
我尝试了在 BIOS 中禁用 USB 3.0 的解决方法,但我怀疑主板内部使用 USB 3.0(用于蓝牙和其他一些东西),它不起作用(lsusb -t 显示正在使用 xhci_hcd)。我必须重建内核(我使用的是 Ubuntu 14.04)以删除 xhci 支持,然后它就可以工作了。
注意:Ubuntu 默认情况下将 ehci 和 xhci 编译到内核中 - 它不会将它们作为模块加载。我尝试将它们重建为模块,以便我可以使用 modprobe 来使用它们,但失败了,因为:
如果 ehci 是一个模块,则它必须在 ohci 和 ahci 模块之前加载(请参阅 dmesg 中的警告),并且我尝试的每种方法都失败了(无论如何,我认为内核模块需要独立于加载顺序?) 。
xchi 模块最终总是被加载,即使被列入黑名单,大概是为了处理内部硬件。不过并没有调查这么多。
只有通过设置一个内核配置来编译 ehci 并编译出 xhci 才可以工作。我尚未测试过使用新的无 xhci 内核在 BIOS 中重新启用 USB 3.0。