Name: libfreenect2
Owner: pr2-debs
Description: Open source drivers for the Kinect for Windows v2 device
Created: 2015-11-16 23:17:47.0
Updated: 2015-11-16 23:17:48.0
Pushed: 2015-11-16 18:45:43.0
Homepage: null
Size: 6398
Language: C++
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
Driver for Kinect for Windows v2 (K4W2) devices (release and developer preview).
Note: libfreenect2 does not do anything for either Kinect for Windows v1 or Kinect for Xbox 360 sensors. Use libfreenect1 for those sensors.
This driver supports:
Missing features:
Watch the OpenKinect wiki at www.openkinect.org and the mailing list at https://groups.google.com/forum/#!forum/openkinect for the latest developments and more information about the K4W2 USB protocol.
Supported operating systems:
Virtual machines likely do not work, because USB 3.0 isochronous transfer is quite delicate.
The following minimum requirements must be met in order to enable the optional features:
No. It's a pure USB3 device due to the high bandwidth requirements.
Either your device is connected to an USB2-only port (see above), or you don't have permissions to access the device. On Linux, try running Protonect as root (e.g. using sudo
). If that fixes things, place rules/90-kinect2.rules
into /etc/udev/rules.d/
and re-plug the device.
On Linux, also check dmesg
. If there are warnings like usb 4-1.1: Not enough bandwidth for new device state.
it means the hardware does not have the capacity for USB3 even if it claims so, or its capacity is not well supported.
On Mac OS X, open “System Information” from Spotlight, go to the USB section, and verify “Xbox NUI Sensor” is under “USB 3.0 SuperSpeed Bus” not “High-Speed Bus”. If this is not the case, try unplugging the Kinect from power source with the USB cable connected, and plug the power again, then verify.
USB3 as a whole is a flaky thing. If you're running Linux, try upgrading to a recent kernel (>= 3.16) first. If that doesn't work, try a different USB3 controller. The following ones are known to work on a 3.16 kernel:
Probably not working:
Messages in dmesg
like this means bugs in the USB driver. Updating kernel might help.
09.238571] xhci_hcd 0000:03:00.0: xHCI host not responding to stop endpoint command.
09.238580] xhci_hcd 0000:03:00.0: Assuming host is dying, halting host.
Windows 7 does not have great USB 3.0 drivers. In our testing the above known working devices will stop working after running for a while. However, the official Kinect v2 SDK does not support Windows 7 at all, so there is still hope for Windows 7 users. Windows 8.1 and 10 have improved USB 3.0 drivers.
Disabling USB selective suspend/autosuspend might be helpful to ameliorate transfer problems.
When you report USB issues, please attach relevant debug log from running the program with environment variable LIBUSB_DEBUG=4
, and relevant log from dmesg
.
The depth packet processor runs on OpenGL by default. You can try alternatives, such as OpenCL (by running Protonect cl
) or CPU (Protonect cpu
). At least the CPU DPP should always produce some output, although slow.
For OpenCL on Intel/Linux, you can also try to set /sys/module/i915/parameters/enable_cmd_parser
to 0.
Yes - in fact, this has been reported to work for up to 5 devices on a high-end PC using multiple separate PCI Express USB3 expansion cards (with NEC controller chip).
If you're using Linux, you may have to increase USBFS memory buffers by appending usbcore.usbfs_memory_mb=64
to your kernel commandline. Depending on the number of Kinects, you may need to use an even larger buffer size.
If you're using an expansion card, make sure it's not plugged into an PCI-E x1 slot. A single lane doesn't have enough bandwidth. x8 or x16 slots usually work.
This project uses the libusb-1.0 drivers and API. Setting things up varies by platform.
You don't need the Kinect for Windows v2 SDK to build and install libfreenect2, though it doesn't hurt to have it too. You don't need to uninstall the SDK or the driver before doing this procedure.
Install the libusbK backend driver for libusb. Please follow the steps exactly:
To uninstall the libusbK driver (and get back the official SDK driver, if installed):
If you already had the official SDK driver installed and you want to use it:
This will enumerate the Kinect sensor again and it will pick up the K4W2 SDK driver, and you should be ready to run KinectService.exe again immediately.
You can go back and forth between the SDK driver and the libusbK driver very quickly and easily with these steps.
epends/
stall_libusb_vs2013.cmd
Or install_libusb_vs2015.cmd
. If you see some errors, you can always open the cmd files and follow the git commands, and maybe build libusb_201x.sln
with Visual Studio by hand. Building with “Win32” is not recommended as it results in lower performance.c:\libjpeg-turbo64
), or as depends/libjpeg-turbo64
, or anywhere as long as the environment variable TurboJPEG_ROOT
is set to installed path.depends/glfw
(rename glfw-3.x.x.bin.WIN64
to glfw), or anywhere as long as the environment variable GLFW_ROOT
is set to the installed path.intel_sdk_for_ocl_applications_2014_x64_setup.msi
from http://www.softpedia.com/get/Programming/SDK-DDK/Intel-SDK-for-OpenCL-Applications.shtml (SDK official download is replaced by $$$ and no longer available) and install it. Then verify INTELOCLSDKROOT
is set as an environment variable. You may need to download and install additional OpenCL runtime.r build && cd build
e .. -G "Visual Studio 12 2013 Win64"
e --build . --config RelWithDebInfo --target install
Or -G "Visual Studio 14 2015 Win64"
. Then you can run the program with .\install\bin\Protonect.exe
, or start debugging in Visual Studio. RelWithDebInfo
provides debug symbols with release performance. The default installation path is install
, you may change it by editing CMAKE_INSTALL_PREFIX
.
Use your favorite package managers (brew, ports, etc.) to install most if not all dependencies:
cd
into a directory where you want to keep libfreenect2 stuff in
Make sure these build tools are available: wget, git, cmake, pkg-config. Xcode may provide some of them. Install the rest via package managers.
Install dependencies: libusb, TurboJPEG, GLFW.
update
install libusb
tap homebrew/science
install jpeg-turbo
tap homebrew/versions
install glfw3
It is now recommended to install libusb from package managers instead of building from source locally. Previously it was not recommended but that is no longer the case.
It is not recommended to build TurboJPEG from source, which may produce corrupted results on Mac OSX according to user reports. Install TurboJPEG binary only from package managers.
Download the libfreenect2 repository
clone https://github.com/OpenKinect/libfreenect2.git
ibfreenect2
Build the actual protonect executable
r build && cd build
e ..
install
Run the program
n/Protonect
Install libfreenect2
clone https://github.com/OpenKinect/libfreenect2.git
Install build tools, TurboJPEG, and OpenGL dependencies
apt-get install build-essential cmake pkg-config libturbojpeg libjpeg-turbo8-dev mesa-common-dev freeglut3-dev libxrandr-dev libxi-dev
do apt-get install libturbojpeg0-dev (Debian)
Install libusb. sudo apt-get install libusb-1.0-0-dev
. The version must be >=1.0.20. You may use sudo apt-add-repository ppa:floe/libusb
if version 1.0.20 is not available.
Install GLFW3. If sudo apt-get install libglfw3-dev
is not available (e.g. Ubuntu trusty 14.04), you can download and install deb files from later Ubuntu releases:
ibfreenect2/depends
nstall_ubuntu.sh
dpkg -i libglfw3*_3.0.4-1_*.deb
If you have Intel GPU, there is a serious GLSL bug with libgl1-mesa-dri
. You are recommended but not required to update it to >=10.3 or newest using later releases or xorg-edgers ppa.
OpenCL dependency
OpenCL ICD loader: if you have ocl-icd-libopencl1
(provides libOpenCL.so) installed, you are recommended but not required to update it to 2.2.4+ using later releases. Early versions have a deadlock bug that may cause hanging.
AMD GPU: Install the latest version of the AMD Catalyst drivers from https://support.amd.com and apt-get install opencl-headers
.
Nvidia GPU: Install the latest version of the Nvidia drivers, for example nvidia-346 from ppa:xorg-edgers
and apt-get install opencl-headers
. Make sure that dpkg -S libOpenCL.so
shows ocl-icd-libopencl1
instead of nvidia opencl packages which are incompatible with opencl-headers
. CUDA toolkit is not required for OpenCL.
Intel GPU (kernel 3.16+ recommended): Install beignet-dev 1.0+, apt-get install beignet-dev
. If not available, use this ppa sudo apt-add-repository ppa:pmjdebruijn/beignet-testing
. Do not install beignet
which has version 0.3.
Build the actual protonect executable
r build && cd build
e ..
make install # without sudo if cmake -DCMAKE_INSTALL_PREFIX=$HOME/...
Run the program
n/Protonect
I'm not sure, but look for libusbx installation instructions for your OS. Figure out how to attach the driver to the Xbox NUI Sensor composite parent device, VID 045E PID 02C4, then contribute your procedure.