Microsoft Kinect with Jetson tk1

Yes indeed, i’m trying it right now. First tests with the new kinect v2 for windows (K4W2) are done on a notebook (Ubuntu 14.04) though, to make sure it is possible. If that works, i’ll try to flash L4T 19.3 onto the Jetson and enable USB 3.0 (remember, it is set to OFF by default, and for now one can say the K4W2 definitely needs USB 3.0).

Check the OpenKinect GoogleGroup : https://groups.google.com/forum/#!topic/openkinect/2D-wk1QDww8

Hi, i followed al the necessary steps to install libfreenect, even copiling my own version of libusb, but every time I try to use an example like freenect-glview i get:

Kinect camera test
Number of devices found: 0

I got the kinect along with mouse and keyboard attached to a 4 port hub to the usb3.0, but I also tried just to attach only the kinect, getting the same result. I must say that when the board shipped the gui was not working so I had to flash it reinstalling Tegra_Linux_Sample-Root-Filesystem_R19.3.0_armhf.tbz2.

Any idea? Could the problem come from the new ubuntu version? I also fixed the autosuspend problem and the kinect light always blinks
Thanks

Hi, i followed al the necessary steps to install libfreenect, even copiling my own version of libusb, but every time I try to use an example like freenect-glview i get:

Kinect camera test
Number of devices found: 0

I got the kinect along with mouse and keyboard attached to a 4 port hub to the usb3.0, but I also tried just to attach only the kinect, getting the same result. I must say that when the board shipped the gui was not working so I had to flash it reinstalling Tegra_Linux_Sample-Root-Filesystem_R19.3.0_armhf.tbz2.

Any idea? Could the problem come from the new ubuntu version? I also fixed the autosuspend problem and the kinect light always blinks
Thanks

Before starting freenect-glview, is the device listed under lsusb? Likewise is there dmesg output when the kinect is plugged in.

Dear. HellMood,

After modified jetson-tk1.conf to enable USB3.0, Does your system boot up normally??

My system doesn’t boot up, if I enabled USB3.0, it stopped at after output following line,

tegra-xhci tegra-xhci: failed to init firmware from filesystem: tegra_xusb_firmware

I’m not sure following sources are related to this problem, but seems xhci_hcd (USB 3.0) kernel driver causes this problem.

About USB 3…look at the R19.3 “Tegra Linux Driver Package” release notes. The first part of section 2.7 says “USB device mode is not supported”. The physical connector is a micro-A/B, which means it changes function depending on whether a “B” cable is inserted (Jetson comes with this), or if an “A” cable is inserted (this would require purchasing one separately).

The “B” cable is for device mode…when it says device mode is not supported, it is kind of misleading. The Jetson “B” port in normal operation does not use this…when in recovery mode, a.k.a. flashing, this port does work as a device (just not the kind of device people would expect, e.g., it doesn’t appear as an external USB hard drive). The rest of the time this port functions as a host, and accepts normal mouse/keyboard type devices (which requires a micro-A cable) with USB 2 standards.

What seems to be missing when enabling the ODMDATA for USB 3 is firmware…that firmware comes in the form of a dtb “data tree blob” file…the blob provides firmware. Changing ODMDATA simply tells it to use the hardware, but of course USB will fail if no driver is provided in the dtb. In the jetson-tk1.conf, the DTB_FILE is listed as tegra124-pm375.dtb. In order to succeed at using this new ODMDATA one must first provide a new dtb file which includes the current content of the dtb, plus adds the content of the USB driver. For dtb reference, see:

I have not used any of the dtb building tools, but it does appear that at least for u-boot some form of tools were provided (or can be downloaded under u-boot), and a new dtb generated. If there happens to be an existing dtb for just the USB 3, there is a strong chance (I say “chance” because I have not researched it nor experimented) that the existing dtb and what USB 3 dtb could be combined and a merge made to tegra124-pm375.dtb. Then and only then would the USB 3 succeed.

Does anyone know of a dtb for the USB 3 firmware? Take a look at the dtb files in /boot/, including the tegra124-pm375.dtb.

Food for thought…fastboot requires the kernel in a particular partition, and thus the kernel is flashed with the -k 6 option. U-boot requires the kernel in /boot/, and command line is placed in extlinux.conf (which is how you would boot multiple kernels similar to grub), and also names the dtb file. It might be possible to experiment with alternate boot configurations with different dtb’s simply by using u-boot, placing the new dtb in /boot/, and adding a new entry to extlinux.conf.

Thank you for your comment Mr.linuxdev,

I found a file “rootfs/lib/firmware/tegra_xusb_firmware”, so there is a firmware on the system,
but according to following output, L4T somehow can’t find this firmware during boot process.

tegra-xhci tegra-xhci: failed to init firmware from filesystem: tegra_xusb_firmware

Do you have any idea how to configure boot process to load this firmware??

Ummm,
https://lkml.org/lkml/2014/5/14/764

I think it depends on your boot loader. If you use the default fastboot, very likely it must be included in the dtb file during flash; with u-boot it might [probably will] work to be in /boot, but I do not see the dtb format xusb file there. The /lib/firmware files without “.dtb” extension leave me wondering if they are already dtb files, or something entirely different. I have not had to dig into these files before.

I’m uncertain as to how the dtb files are arranged, but it seems most hardware which is not required to boot can be initialized after boot (perhaps still needing a dtb file for proprietary drivers, just not at boot time)…by modifying ODMDATA to enable USB 3 at boot time, the requirement becomes immediate.

Note that in u-boot’s config of /boot/extlinux.conf that only tegra124-pm375.dtb is named (FDT key word). What is in pm375? I don’t know…potentially this is a combination of all things the default Jetson needs to boot so far as firmware goes. All those extra dtb files can be read after boot.

Personally, if I had to get this working, I’d be sure I’m using u-boot and not fastboot, and then I’d research tools for combining or editing or building dtb files. U-boot itself likely has such tools. What it won’t have is the actual firmware used on Jetson. Add a second kernel entry in extlinux.conf pointing at the same kernel, but have FDT tag point at the test dtb.

Thank you very much for your help, Mr. linuxdev.

This seems too much effort just to use USB3.0 device.
Since I don’t have to get this working,I’ll wait for official update.

Thank you again.

After having done step by step all the procedure described above, I still cannot run my Kinect. This is what the terminal outputs:

Kinect camera test
Number of devices found: 1
Could not open audio: -4
Failed to open motor subdevice or it is not disabled. Failed to open audio subdevice or it is not disabled. Could not open device.

Anyone knows why this happens and how to fix it? Thanks!

Solved. Find solution below:

Replace:
freenect_select_subdevices(f_ctx, (freenect_device_flags)(FREENECT_DEVICE_CAMERA | FREENECT_DEVICE_CAMERA));
by
freenect_select_subdevices(f_ctx, (freenect_device_flags)(FREENECT_DEVICE_CAMERA));
in glview.c.

Hi all,

When I connect the Asus Xtion Pro to the TK1 I get the following output on dmesg:

[  550.731215] usb 2-1.4: USB disconnect, device number 8
[  558.587595] usb 2-1.4: new high-speed USB device number 9 using tegra-ehci
[  558.605839] usb 2-1.4: New USB device found, idVendor=1d27, idProduct=0601
[  558.605845] usb 2-1.4: New USB device strings: Mfr=5, Product=4, SerialNumber=0
[  558.605849] usb 2-1.4: Product: PrimeSense Device
[  558.605853] usb 2-1.4: Manufacturer: PrimeSense
[  558.846591] usb_audio: Warning! Unlikely big volume range (=4181), cval->res is probably wrong.
[  558.846598] usb_audio: [3] FU [Mic Capture Volume] ch = 2, val = 0/12544/3usb_audio: Warning! Unlikely big volume range (=4181), cval->res is probably wrong.
[  558.849968] usb_audio: [3] FU [Mic Capture Volume] ch = 1, val = 0/12544/3<7>[  558.850627] of_get_named_gpio_flags exited with status 63
[  558.850674] avdd-hdmi-pll: 3300 mV 
[  558.850713] reg-fixed-sync-voltage 5.regulator: Failed to find supply vin
[  558.864502] reg-fixed-sync-voltage 5.regulator: Failed to register regulator: -517
[  558.909269] platform 5.regulator: Driver reg-fixed-sync-voltage requests probe deferral
[  558.909530] reg-fixed-sync-voltage c.regulator: Consumer c7 does not have device name
[  558.909539] reg-fixed-sync-voltage c.regulator: Consumer c8 does not have device name
[  558.909564] of_get_named_gpio_flags exited with status -517
[  558.909574] platform c.regulator: Driver reg-fixed-sync-voltage requests probe deferral
[  558.909690] reg-fixed-sync-voltage d.regulator: Consumer c1 does not have device name
[  558.909699] of_get_named_gpio_flags exited with status -517
[  558.909707] platform d.regulator: Driver reg-fixed-sync-voltage requests probe deferral

The device is not working. Any idea what is going wrong?

I see that you had a fix for this by changing some source and recompiling.

However, I was experiencing the same problem (device shows in lsusb, but can’t run the freenect-glview example in build/bin). I have it working, even without the recompile. In fact, the source code in what I had in examples/glview.c was different: it didn’t have a DEVICE_CAMERA duplication, but had DEVICE_MOTOR and DEVICE_CAMERA).

For my system (Grinch 21.3.4, Kinect Xbox360) the key step was around permissions. There are three items to make sure are completed (the full documentation is on the linked page):

In this section - Getting Started - OpenKinect

  1. Create /etc/udev/rules.d/51-kinect.rules

In this section - Getting Started - OpenKinect

  1. Create /etc/udev/rules.d/66-kinect.rules <---- a different file than above!
  2. sudo usermod -a -G video $USER
  3. be sure to log out and login!

best,
Corey

Hello Guys,

when i connected my Microsoft Kinnect camera to TK1 board. It shows that device not found and showing following instruction on terminal:

ubuntu@tegra-ubuntu:~$ cd libfreenect/build/bin
ubuntu@tegra-ubuntu:~/libfreenect/build/bin$ sudo ./freenect-glview
[sudo] password for ubuntu:
Kinect camera test
Number of devices found: 0

How can i detect my device after connection of kinnect camera to TK1 board?

Thanks in advance!

Hello Guys,

when i connected my Microsoft Kinnect camera to TK1 board. It shows that device not found and showing following instruction on terminal:

ubuntu@tegra-ubuntu:~$ cd libfreenect/build/bin
ubuntu@tegra-ubuntu:~/libfreenect/build/bin$ sudo ./freenect-glview
[sudo] password for ubuntu:
Kinect camera test
Number of devices found: 0

How can i detect my device after connection of kinnect camera to TK1 board?

Thanks in advance