none
Multiple Kinects on an Intel USB 3.0 controller are failing

    Question

  • I am experiencing a failure in receiving more than one color stream when two Kinects are connected through the same USB 3.0 host controller. This problem does not occur when not on the same USB 3.0 controller. Given it is a USB 3.0 host controller, I would expect it to have capacity for many Kinects given it should be able to emulate multiple independent USB 2 controllers.

    Repro:
    write the needed C code, run it ;-)
    Connect one Kinect to a USB 3.0 port (via the usb 3.0 host controller)
    Connect one Kinect to a USB 2.0 port (via a separate usb 2 host controller)
    No errors are received (e.g. no E_NUI_INSUFFICIENTBANDWIDTH)
    nuiinitialize with depth and color streams on both kinects
    open the streams
    get frames

    result:
    When 2 Kinects are connected to the same USB 3.0 host controller, only one color stream provides frames. The 2nd stream returns E_NUI_FRAME_NO_DATA

    expected:
    two color streams each returning color frames

    Note:
    If I remove one of the Kinects from that same USB 3.0 host controller and move it to the separate USB 2.0 host controller and run the exact same repro steps, then there are no problems and it works as expected.

    Below I list the diagnostics I have seen requested in other posts. If you need more, please ask me. :-)

    Intel i7-3720QM CPU @ 2.60GHz, 4 Cores, 8 Logical Processors; 16GB ram
    Intel HM77 Mobile Express Chipset
    Windows 7 Ultimate sp1 x64 with all current windows updates
    Kinect SDK v1.6

    It has both the Intel USB 3.0 extensible host controller providing 3 USB 3.0 ports
    PCI\VEN_8086&DEV_1E31&SUBSYS_51051558&REV_04\3&11583659&0&A0
    Driver is official Intel drivers version 1.0.7.248  (12/4/2012)

    Also has an Intel 7 Series/C216 Chipset Family USB Enhanced Host Controller proving 1 USB 2.0 port
    PCI\VEN_8086&DEV_1E26&SUBSYS_51051558&REV_04\3&11583659&0&E8
    Driver is official Intel drivers version 9.3.0.1011  (8/26/2011)

    Open Device Manager, (Right Click My Computer -> Properties -> Device Manager (on the left)
    View -> Device By Connection
    Record all devices attached to the USB controller for the Kinect Device.

    Fails with the following connection:
    Intel USB 3 Extensible Host Controller
    -Intel USB 3.0 Root Hub
    --USB 2.0 Hub
    ---Kinect for Windows Camera
    ---Kinect for Windows Device
    ---USB Composite Device
    ----Kinect for Windows Audio Array Control
    ----Kinect for Windows Security Control
    ----Kinect USB Audio
    -Intel USB 3.0 Root Hub
    --USB 2.0 Hub
    ---Kinect for Windows Camera
    ---Kinect for Windows Device
    ---USB Composite Device
    ----Kinect for Windows Audio Array Control
    ----Kinect for Windows Security Control
    ----Kinect USB Audio

    Works:
    Intel 7 Series/C216 Chipset Family USB Enhanced Host Controller
    -USB Root Hub
    --Generic USB Hub
    ---Generic USB Hub
    ----Kinect for Windows Camera
    ----Kinect for Windows Device
    ----USB Composite Device
    -----Kinect for Windows Audio Array Control
    -----Kinect for Windows Security Control
    -----Kinect USB Audio
    Intel USB 3 Extensible Host Controller
    -Intel USB 3.0 Root Hub
    --USB 2.0 Hub
    ---Kinect for Windows Camera
    ---Kinect for Windows Device
    ---USB Composite Device
    ----Kinect for Windows Audio Array Control
    ----Kinect for Windows Security Control
    ----Kinect USB Audio

    --Dale

    Monday, January 21, 2013 10:51 PM

Answers

All replies

  • There are known issues with using Kinect with USB 3.0 on Windows 7. We recommend only using USB 2.0 host controllers.

    Anson

    Wednesday, January 23, 2013 2:48 AM
  • I heard your recommendation, however, that is challenging with computers made within the last 12 months. For example, my laptop has 3 USB 3.0 ports and only one USB 2.0 port. It is likely that advanced users like myself will not have old computers having only USB 2.0 ports.

    Intel has been good in releasing regular updates to their USB 3.0 drivers; 4 times in 2012 (March, May, Oct, Dec). Kinect team has also issued regular updates. I request that your team and Intel partner to address incompatibility issues with Kinect and the defacto USB 3.0 chipset.

    What is the possibility for this?


    --Dale

    Wednesday, January 23, 2013 11:25 AM
  • Anson, checking back in with you on his. Would the Kinect team take my request into consideration?

    --Dale

    Tuesday, February 19, 2013 8:11 PM
  • Again checking back in on this topic. Given that there are now millions of USB 3.0 based computers in use and you publish that you have support for Windows 7, I continue to request that you updated your drivers to support USB 3.0 controllers on Windows 7. Intel has been regular in their updates for USB 3.0 bugs. WOuld you please consider also updating your drivers to support USB 3.0?

    --Dale

    Friday, March 22, 2013 4:44 AM
  • Dale,

    I misread your initial question, and did not give you an answer specific to your problem. In your situation, you are running into bandwidth issues with multiple Kinects running on the same USB 3.0 controller.

    I believe you are expecting the USB 3.0 bandwidth (5 Gbit/s) to be divide up between multiple USB 2.0 devices so each device can get the full USB 2.0 bandwidth (480 Mbit/s). However that is not the case, the 2 Kinects are still sharing the same USB 2.0 bandwidth (480 Mbits/s). This explains why when you plug one of the Kinects separately into the USB 2.0 controller, the setup functions correctly. Each USB 2.0 controller can only support the bandwidth requirement of a single Kinect.

    The Kinect is a USB 2 device and relies on the USB 3.0 backwards compatibility to USB 2.0 to function. The Kinect driver is agnostic to specific USB host controllers or chipsets.

    Windows 7 does not have built in support for USB 3.0, each manufacturer has their own drivers, as such we have experienced compatibility issues with some controllers, therefore we recommend using only USB 2 controllers in Windows 7. You do not appear to be having issues with a single Kinect running on the Intel USB 3.0 host controller.

    Hopefully this is more helpful.

    Cheers,

    Anson

    Friday, March 22, 2013 8:36 AM
  • Given its all hardware and software, I would assume (ha-ha) that each was designed in a flexible manner. Here is what I would have desired, please tell me if this is not how Intel and Microsoft have designed and implemented the solution. I'll use simplified bandwidth numbers below:

    A USB 2 controller has max 480 Mbit/sec bandwidth and can have multiple physical USB plugs on it.
    A USB 3 controller has at least 5Gbit/sec bandwidth and can have multiple physical USB plugs on it. This bandwidth represents 10+ times the bandwidth capability of USB 2.
    If a USB 2 controller has multiple transaction translators, it allows that USB2 controller to use one transaction translator per port to create an isolated full/low-speed bus per port on its internal hub.

    So...are you educating me that a similar approach was not implemented in the hardware/software solution such that on a USB 3 controller is does/does not have the ability to create multiple isolated USB 2 bus's like what a USB2 controller can do?

    --Dale

    Friday, March 22, 2013 5:18 PM
  • At this time, the Kinect driver does not support multiple sensors on the same root hub.
    Sunday, March 24, 2013 12:53 AM
  • With the current v1.6 SDK, does the same limitation of only one Kinect v1 per USB 2 or USB 3 root hub exist on Windows 8?

    Perhaps...is this is related to what I might be learning...that a USB 3 controller is actually two-in-one. A USB 3 controller with separate isolated pins and a 2nd USB 2.0 controller. And that all USB 2.0 traffic goes to this dedicated USB 2.0 controller and its normal 480 Mb/sec bandwdith max?


    --Dale

    Sunday, March 24, 2013 11:08 AM
  • yes, it is platform agnostic. You do bring up a good question about the USB 3 split, but there is some logic to differentiate sensors based on unique Root Hubs. If you have a specific scenario that you are looking at, we can try to investigate.
    Sunday, March 24, 2013 11:14 PM
  • The specific scenario is...I have only 1 USB 2.0 port; the other 3 are USB 3.0. Thankfully, that single 2.0 port is on a separate controller/root hub.

    This limits my computer to 2 Kinects even though I have the processing power for more. I would like to have 3 Kinects so I can get a merged view of a 3d space in memory in C++; all with a single computer rather than 2+ computers and shuffling whole depthmaps/pointclouds over ethernet and loading them back into memory.

    This may be an impossible software solution. If the USB 3 hardware was spec/designed to have all USB 2 traffic (even if it is via tree'd hubs) put on to a single integrated USB 2.0 controller/root hub...well...that's just...limiting. And I would acknowledge it's out of control of the Kinect team. Its seems this could really be true...the USB 1.0/2.0 traffic goes on the traditional 4 pins while USB 3.0 traffic goes over a set of 5 new physically independent pins. :-(

    If that scenario is true, then a future iteration of USB hardware may be needed to solve this. Or computer manufacturers put multiple USB 3 controllers on the motherboard (which is costly). Or some creative 3rd party making hubs/cables to somehow emulate a USB 2.0 controller/root hub and send/tunnel the data on USB 3.0 pipe. All hardware stuff. Or...just never solve it.

    Comments?


    --Dale

    Thursday, March 28, 2013 10:16 PM
  • Thumb up for Dale !
    I`m facing same problem here - luckily I have three controllers.

    B.
    Saturday, August 31, 2013 7:27 PM