OpenKinect / libfreenect

Drivers and libraries for the Xbox Kinect device on Windows, Linux, and OS X
http://openkinect.org
3.58k stars 1.15k forks source link

Connecting multiple devices #269

Closed orgicus closed 12 years ago

orgicus commented 12 years ago

Hello,

I've was wondering if it's possible to connect more than 2 devices using this driver. I'm not a C/C++ programmer so I've tried tinkering with multiple wrappers: Java/MaxMSP(jit.freenect)/Cinder(Kinect Block) and got the same behaviour with all of them: everything is perfect with 2 devices. If I have 3 or more devices, everything gets setup, there are no errors, but there is no new image data(depth/rgb/ir)

Any idea if it's possible to go past that limitation and how ?

Any tips would help!

Thank you for your time, George

zarvox commented 12 years ago

I'd guess you've probably run out of bandwidth on the USB bus. Each Kinect basically has to be on its own USB root hub, since each Kinect consumes 20MB/sec of isochronous bandwidth, which the USB spec mandates must be guaranteed in whole or not at all. If you can find out which physical USB ports map to which USB root hubs, try putting all the Kinects on separate root hubs.

You may need to add a PCI card with additional USB root hubs to be able to use additional Kinects.

This thread: http://groups.google.com/group/openkinect/browse_thread/thread/8690daad30dafeb7/053d5ae2320baa15 may offer more information.

I can't speak for the wrappers, but if you can run the C examples (glview, etc) with all three Kinects at once, then I'd expect everything to work in the wrappers as well.

orgicus commented 12 years ago

Thank you very much for this! This makes a lot of sense. I'll give the PCI card option a go. I'll get back to confirm as soon as I've tested.

orgicus commented 12 years ago

I can confirm that a separate PCI card powerd directly from the computer's CPU resolves the issue.