Hello All,
I also got the problem with USB3 and the Kinect. I tried with the an onboard NEC controler and with an ASMedia pcie expansion card. I also got the "USB3: ERROR no room on ep ring" error.
The basic problem is, that the bulk-ep-ring is limited to 1, and this will not work with cameras with large data sizes, as the kinect.
The exact description can be found there:
http://www.spinics.net/lists/linux-usb/msg49736.html
and
http://www.spinics.net/lists/linux-usb/msg52072.html
You will also find a Patch there, wich will work around the problem by enlarging the ep-ring, you will have to recompile your kernel, but this is still better than having not the posibility to use the kinect on USB3 ports.
I simply changed the following lines, without a module parameter, as propost in the kernel patch:
drivers/usb/host/xhci-mem.c:
if (usb_endpoint_xfer_isoc(&ep->desc))
virt_dev->eps[ep_index].new_ring =
xhci_ring_alloc(xhci, 8, true, mem_flags);
+ else if (usb_endpoint_xfer_bulk(&ep->desc))
+ virt_dev->eps[ep_index].new_ring =
+ xhci_ring_alloc(xhci, 8,
+ true, mem_flags);
else
virt_dev->eps[ep_index].new_ring =
xhci_ring_alloc(xhci, 1, true, mem_flags);
drivers/usb/host/xhci.h:
- #define TRPS_PER_SEGMENT 64
+ #define TRPS_PER_SEGMENT 256
I need this change for my multi-kinect setup. I'm using a HighPoint RocketU 1144A to attach 4 Kinects to my pc :)
Just testet the setup, 4Kinects working on one PC all connected to one RocketU card. working like a charm with ROS
greetings
Michael