Kinect on old machines

324 views
Skip to first unread message

lamaranu

unread,
Feb 3, 2011, 5:23:50 AM2/3/11
to OpenKinect
Hi there!

I have installed openkinect on an old machine (700 MHz but with usb
2.0 ports).
The problem is that I get this output:
Failed to submit isochronous transfer 0: -1
....
...
Failed to submit isochronous transfer 10: -1
...

etc.

I have heard that is a problem related to the usb bandwidth.

Is not possible to reduce the framerate or anyway, the kinect output
(at least in theory)?
I know that is about 30Mb/s.

Could this error be due to the fact that I have an old version of
libusb?

Thanks,

Lamaranu

Marcos Slomp

unread,
Feb 3, 2011, 7:00:29 AM2/3/11
to openk...@googlegroups.com
Hello,

USB 2.0 can accommodate the Kinect streaming requirements (theoretical max of 480Mbits/s, effective 320Mbits/s).
Very few computers are equipped with USB 3.0, I believe.

Which platform are you using?
And which version of libusb?

lamaranu

unread,
Feb 3, 2011, 7:44:56 AM2/3/11
to OpenKinect
Hi,

Thanks for the interest.

I'm using Debian. For me is enought also a very very low framerate. I
think that I have problems with the isochronous mode, it's like if the
framerate is too high.
I was experimenting with the opencv example (the one that used the c++
wrapper) and I tried to modify some parameters but I got anyway those
errors (Failed to submit isochronous transfer). Do you know where (if
is possible..) can I tune the kinect framerate?

Lamaranu

Marcos Slomp

unread,
Feb 3, 2011, 8:33:26 AM2/3/11
to openk...@googlegroups.com
> it's like if the framerate is too high.

Well, isochronous stands for equal (spaced) time, so the streaming frequency should be constant.
It seems that your problem is related to libusb and not to libfreenect.
Can you verify which version of libusb-1.0 you have installed?

Do you know where (if is possible..) can I tune the kinect framerate?

The easiest way to tune the framerate would be to perform frame-skip yourself.
When you receive the video or depth callback, ignore processing a number x of frames.

void my_video_callback(freenect_device *dev, void *rgb, uint32_t timestamp)
{
  static video_frames (0);
  ++video_frames;
  if (video_frames % 5 == 0)  // skip 5 frames
    process(dev, rgb, timestamp);
  else
    return;

Marcos Slomp

unread,
Feb 3, 2011, 8:56:05 AM2/3/11
to openk...@googlegroups.com
just complementing:

Do you know where (if is possible..) can I tune the kinect framerate?

I believe it is possible to set the isochronous frequency through control commands or by writing some specific data into some device register.
The libfreenect does this during streaming initialization.
However, I am not sure if you could tailor to any particular frequency.
I would guess that for each streaming resolution available there is a small, specific set of streaming frequencies available.
Not sure if this information is documented in the website, though...

Maybe some of the hardware experts around here could clarify this matter.
Anyone?

lamaranu

unread,
Feb 3, 2011, 9:34:49 AM2/3/11
to OpenKinect
My libusb version is: libusb-1.0-0_1.0.6-1~bpo50+1

I compiled from the sourcecode.

It is very possible that the problem is related to it..

About the framerate tuning, I was thinking also to use the c_sync
wrapper but your solution maybe it's better
(the opencv example works in a different way.. anyway hopefully I'll
figure it out).

lamaranu

unread,
Feb 3, 2011, 9:37:06 AM2/3/11
to OpenKinect
Interesting...

It could be useful for me also to reduce the resolution.. My goal is
(at least for now) to make the kinect work.

Marcos Slomp

unread,
Feb 3, 2011, 9:45:26 AM2/3/11
to openk...@googlegroups.com
My libusb version is: libusb-1.0-0_1.0.6-1~bpo50+1

If possible, try libusb-1.0 version 1.0.8. Source code in this link:
http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.8/

And by the way, try connecting Kinect to different USB ports in your computer.
Preferably, do not connect any other USB device while testing the Kinect.

It could be useful for me also to reduce the resolution...

Unfortunately I can't help you with that, but hopefully some of the hardware gurus may join the discussion =)

lamaranu

unread,
Feb 3, 2011, 9:51:44 AM2/3/11
to OpenKinect


On Feb 3, 2:45 pm, Marcos Slomp <msl...@gmail.com> wrote:
> > My libusb version is: libusb-1.0-0_1.0.6-1~bpo50+1
>
> If possible, try libusb-1.0 version 1.0.8. Source code in this link:http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.8/
>
> And by the way, try connecting Kinect to different USB ports in your
> computer.
> Preferably, do not connect any other USB device while testing the Kinect.

Thx for the hint. I will try it right now

>
> > It could be useful for me also to reduce the resolution...
>
> Unfortunately I can't help you with that, but hopefully some of the hardware
> gurus may join the discussion =)
>

I hope so but you too are very helpful :)

lamaranu

unread,
Feb 3, 2011, 10:18:16 AM2/3/11
to OpenKinect
Just tried the libusb 1.0.8 but I get the same errors..

lamaranu

unread,
Feb 3, 2011, 11:51:57 AM2/3/11
to OpenKinect
Ah, another thing that could be useful:

during the building of kinect I get also these warnings:

Clock skew detected. Your building may be incomplete

File `wrappers/c_sync/CMakfeFIles/freenect_sync_static.dir/flags.make'
has modification time 6.3e+07 s in the future


Could this be the cause?

Cameron

unread,
Feb 3, 2011, 6:07:27 PM2/3/11
to openk...@googlegroups.com
Hi,

I dealt with a similar issue trying to get the Kinect hooked up to an embedded Linux system (a wireless router, probably significantly less powerful than the computer you are trying to use).

At least in my experience, the problem with just skipping frames on the callback is that, even if you don't post-process them, the packets are still coming in over the USB bus and it was impossible to resynchronize with the stream once you fall behind.  It might be possible to tweak the synchronization code to come up with a better solution, but I ended up having to start and stop the camera stream each time I wanted to capture a frame— however, this really kills your maximum frame-rate and also seemed to affect the quality of the images (it looked like the camera exposure or something didn't adjust as it normally would because it kept being reset).

Register 0x0e (http://openkinect.org/wiki/Protocol_Documentation), which is set in src/cameras.c, apparently controls the RGB stream framerate (30Hz or 15Hz) but I don't remember it working as I expected (it only let me do 15Hz in UYUV mode, maybe?)— and 15Hz is still pretty fast anyways.

All that said, I was using an older version of the library when I did that experiment, so it might be easier to get everything working now; I'd be interested to hear if you figure out a good solution.  Good luck!

Best,
Cameron

lamaranu

unread,
Feb 5, 2011, 7:48:59 AM2/5/11
to OpenKinect
Hi Cameron,

Thanks for the advices.

Did you get the " Failed to submit isochronous transfer" too?

I saw that the errors I get, comes from the freenect_start_depth and
freenect_start_video functions, so maybe is an initialization problem
(maybe due to libusb ?? ).

I will try to set the 15Hz but I think it is still very fast..

Cheers

lamaranu

unread,
Feb 8, 2011, 9:39:46 AM2/8/11
to OpenKinect

Debugging I found out that this problem is not due to the framerate
because the fnusb_start_iso function is called before the framerate
settings.

I have also tried to use the 15Hz framerate but same results.. those
errors during the initialization process and the callbacks that are
never called.
There is the red light in the kinect when I execute the program but
there is no output...
Reply all
Reply to author
Forward
0 new messages