首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在连接到大型USB集线器时,并非所有USB设备都能识别。

在连接到大型USB集线器时,并非所有USB设备都能识别。
EN

Ask Ubuntu用户
提问于 2018-09-07 10:16:55
回答 2查看 2.7K关注 0票数 0

为了开发,我买了一个带有28个USB集线器的USB集线器:曼哈顿MondoHub II。该设备由外部电源供电,足以满足我的用例要求。

在USB集线器上,连接了15个开发板(STMicro核心板)。基本上,一旦您在USB端口中插入开发板,ST-Link v2芯片就会将底层微控制器的闪存公开为USB驱动器,您可以在该驱动器上拖放固件文件。然后,板上会闪现出该固件。我需要自动闪过它们。因此,我将每个板连接到集线器,并运行一个显示所有内容的脚本。

问题是,并不是所有的15个连接的设备都被识别。其中只有11人是。dmesg抛出有关USB主机控制器没有足够资源的错误。

在内部,USB集线器似乎由多个USB集线器组成。

dmesg当我插入USB集线器时,没有设备连接:

代码语言:javascript
复制
[269831.218406] usb 2-3: new high-speed USB device number 91 using xhci_hcd
[269831.369806] usb 2-3: New USB device found, idVendor=2109, idProduct=2811
[269831.369813] usb 2-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[269831.369817] usb 2-3: Product: USB2.0 Hub             
[269831.369821] usb 2-3: Manufacturer: VIA Labs, Inc.         
[269831.370918] hub 2-3:1.0: USB hub found
[269831.371195] hub 2-3:1.0: 4 ports detected
[269831.678404] usb 2-3.1: new high-speed USB device number 92 using xhci_hcd
[269831.790645] usb 2-3.1: New USB device found, idVendor=1a40, idProduct=0201
[269831.790650] usb 2-3.1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[269831.790654] usb 2-3.1: Product: USB 2.0 Hub [MTT]
[269831.791150] hub 2-3.1:1.0: USB hub found
[269831.791177] hub 2-3.1:1.0: 7 ports detected
[269831.886375] usb 2-3.2: new high-speed USB device number 93 using xhci_hcd
[269831.998500] usb 2-3.2: New USB device found, idVendor=1a40, idProduct=0201
[269831.998504] usb 2-3.2: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[269831.998506] usb 2-3.2: Product: USB 2.0 Hub [MTT]
[269831.998942] hub 2-3.2:1.0: USB hub found
[269831.998964] hub 2-3.2:1.0: 7 ports detected
[269832.090378] usb 2-3.3: new high-speed USB device number 94 using xhci_hcd
[269832.202654] usb 2-3.3: New USB device found, idVendor=1a40, idProduct=0201
[269832.202658] usb 2-3.3: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[269832.202660] usb 2-3.3: Product: USB 2.0 Hub [MTT]
[269832.203232] hub 2-3.3:1.0: USB hub found
[269832.203258] hub 2-3.3:1.0: 7 ports detected
[269832.294400] usb 2-3.4: new high-speed USB device number 95 using xhci_hcd
[269832.415440] usb 2-3.4: New USB device found, idVendor=14cd, idProduct=8601
[269832.415449] usb 2-3.4: New USB device strings: Mfr=1, Product=3, SerialNumber=0
[269832.415454] usb 2-3.4: Product: USB 2.0 Hub            
[269832.415458] usb 2-3.4: Manufacturer: USB Device  
[269832.416721] hub 2-3.4:1.0: USB hub found
[269832.416838] hub 2-3.4:1.0: 4 ports detected

断开时:

代码语言:javascript
复制
[269873.242343] usb 2-3: USB disconnect, device number 91
[269873.242349] usb 2-3.1: USB disconnect, device number 92
[269873.243596] usb 2-3.2: USB disconnect, device number 93
[269873.244672] usb 2-3.3: USB disconnect, device number 94
[269873.245725] usb 2-3.4: USB disconnect, device number 95

然后我接一个又一个板。板1到11被识别并导致这种类型的消息:

代码语言:javascript
复制
[269950.734094] usb 2-3.2.1: new full-speed USB device number 103 using xhci_hcd
[269950.856137] usb 2-3.2.1: New USB device found, idVendor=0483, idProduct=374b
[269950.856140] usb 2-3.2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[269950.856142] usb 2-3.2.1: Product: STM32 STLink
[269950.856144] usb 2-3.2.1: Manufacturer: STMicroelectronics
[269950.856146] usb 2-3.2.1: SerialNumber: 0671FF323532543457250836
[269950.911199] usb-storage 2-3.2.1:1.1: USB Mass Storage device detected
[269950.911377] scsi host5: usb-storage 2-3.2.1:1.1
[269950.911809] cdc_acm 2-3.2.1:1.2: ttyACM2: USB ACM device
[269951.942405] scsi 5:0:0:0: Direct-Access     MBED     microcontroller  1.0  PQ: 0 ANSI: 2
[269951.942686] sd 5:0:0:0: Attached scsi generic sg4 type 0
[269951.942980] sd 5:0:0:0: [sdd] 2080 512-byte logical blocks: (1.06 MB/1.02 MiB)
[269951.943876] sd 5:0:0:0: [sdd] Write Protect is off
[269951.943887] sd 5:0:0:0: [sdd] Mode Sense: 03 00 00 00
[269951.944137] sd 5:0:0:0: [sdd] No Caching mode page found
[269951.944143] sd 5:0:0:0: [sdd] Assuming drive cache: write through
[269951.963779] sd 5:0:0:0: [sdd] Attached SCSI removable disk

当我连接第12块板时,它就不被识别了。日志:

代码语言:javascript
复制
[270155.277574] usb 2-3.2.6: new full-speed USB device number 112 using xhci_hcd
[270155.407457] usb 2-3.2.6: New USB device found, idVendor=0483, idProduct=374b
[270155.407464] usb 2-3.2.6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[270155.407468] usb 2-3.2.6: Product: STM32 STLink
[270155.407472] usb 2-3.2.6: Manufacturer: STMicroelectronics
[270155.407476] usb 2-3.2.6: SerialNumber: 066DFF323532543457074843
[270155.408451] usb 2-3.2.6: Not enough host controller resources for new device state.
[270155.408681] usb 2-3.2.6: can't set config #1, error -12

这里发生了什么事?我是否受到USB协议、集线器或内核/驱动程序的限制?

在联想ThinkPad E550上运行Ubuntu‘18.04.1LTS(仿生海狸)。

如果需要的话会获取更多的日志。完整日志文件:https://pastebin.com/BarBHwnc

EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2018-09-20 12:51:42

这似乎是我的不同笔记本电脑/他们的USB芯片组的一个问题。我换了一台桌面电脑,它的主板有很多USB连接。

在那里,Windows 10和Linux (Debian 9)都能识别出100个设备中的每一个(4个MondoHub II,每个设备有25个devs ),没有弹出“没有足够的主机控制器资源”消息。

票数 0
EN

Ask Ubuntu用户

发布于 2019-02-27 20:57:17

我在我的Windows机器上遇到了同样的问题,我相信问题的根本原因在于USB体系结构和你的电脑上有和连接到的USB主机控制器的数量。这个国家仪器知识库文章是我为这个问题找到的最简洁的解释。

USB规范对其通信协议有固定的标准。关于与USB设备的枚举和通信,所允许的USB地址和端点的数目是由USB令牌包的结构给出的,如下所示:{参阅图像链接}地址字段用于表示物理USB设备。由于它是7位长,一个单一的USB主机控制器可以允许多达127个(27-1主机控制器)连接设备。连接的USB集线器算作USB设备地址,连接到它的每一个设备都会达到该主机控制器允许的最大地址。类似地,端点字段用于在USB总线上路由特定类型的数据,它们类似于TCP/IP通信协议中的端口。其字段长度为4位,允许16 (24)个可寻址端点。但是,由于端点是单向的(无论是在USB设备中还是在USB设备之外),一个USB设备最多可以分配32个端点。所允许的USB端点总数取决于USB主机控制器及其固件,但是对于某些控制器来说,这个数目可能小于100个允许的USB端点。因此,如果USB设备试图添加到主机控制器,并且会导致超过地址或端点数,则会引发上述Windows资源错误。由于某些设备每个设备最多可以使用32个端点,因此在将NI设备与USB集线器连接时,可以超过允许的端点数。此外,一些计算机自己的内部USB端口和其他内部设备(如无线网卡、音频、摄像机等)都绑定到一个USB主机控制器,这可能导致超过USB资源相当快。

话虽如此,此链接解释了在您的PC上查看USB设备和控制器数量的许多不同方法。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1073040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档