Browse by type
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.
If you are using libfreenect2 in an academic context, please cite our work using the following DOI:
If you use the KDE depth unwrapping algorithm implemented in the library, please also cite this ECCV 2016 paper.
This driver supports: * RGB image transfer * IR and depth image transfer * registration of RGB and depth images
Missing features: * firmware updates (see issue #460 for WiP)
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.
The API reference documentation is provided here https://openkinect.github.io/libfreenect2/.
Intel and NEC USB 3.0 host controllers are known to work. ASMedia controllers are known to not work.
Virtual machines likely do not work, because USB 3.0 isochronous transfer is quite delicate.
It 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. 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.
First, check https://github.com/OpenKinect/libfreenect2/wiki/Troubleshooting for known issues.
When you report USB issues, please attach relevant debug log from running the program with environment variable LIBUSB_DEBUG=3, and relevant log from dmesg. Also include relevant hardware information lspci and lsusb -t.
Install UsbDk driver
This doesn't interfere with the Microsoft SDK. Do not install both UsbDK and libusbK drivers * (Alternatively) Install libusbK driver
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.
Install libusb
Download the latest build (.7z file) from https://github.com/libusb/libusb/releases, and extract as depends/libusb (rename folder libusb-1.x.y to libusb if any).
* Install TurboJPEG
Download the -vc64.exe installer from http://sourceforge.net/projects/libjpeg-turbo/files, extract it to c:\libjpeg-turbo64 (the installer's default) or depends/libjpeg-turbo64, or anywhere as specified by the environment variable TurboJPEG_ROOT.
* Install GLFW
Download from http://www.glfw.org/download.html (64-bit), extract as depends/glfw (rename glfw-3.x.x.bin.WIN64 to glfw), or anywhere as specified by the environment variable GLFW_ROOT.
* Install OpenCL (optional)
1. Intel GPU: Download "Intel® SDK for OpenCL™ Applications 2016" from https://software.intel.com/en-us/intel-opencl (requires free registration) and install it.
* Install CUDA (optional, Nvidia only)
1. Download CUDA Toolkit and install it. You MUST install the samples too.
* Install OpenNI2 (optional)
Download OpenNI 2.2.0.33 (x64) from http://structure.io/openni, install it to default locations (C:\Program Files...).
* Build
The default installation path is install, you may change it by editing CMAKE_INSTALL_PREFIX.
mkdir build && cd build
cmake .. -G "Visual Studio 12 2013 Win64"
cmake --build . --config RelWithDebInfo --target install
Or -G "Visual Studio 14 2015 Win64".
Or -G "Visual Studio 16 2019".
* Run the test program: .\install\bin\Protonect.exe, or start debugging in Visual Studio.
* Test OpenNI2 (optional)
Copy freenect2-openni2.dll, and other dll files (libusb-1.0.dll, glfw.dll, etc.) in install\bin to C:\Program Files\OpenNI2\Tools\OpenNI2\Drivers. Then run C:\Program Files\OpenNI\Tools\NiViewer.exe. Environment variable LIBFREENECT2_PIPELINE can be set to cl, cuda, etc to specify the pipeline.
You can download and install libfreenect2 using the vcpkg dependency manager:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./vcpkg integrate install
vcpkg install libfreenect2
The libfreenect2 port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please create an issue or pull request on the vcpkg repository.
Use your favorite package managers (brew, ports, etc.) to install most if not all dependencies:
git clone https://github.com/OpenKinect/libfreenect2.git
cd libfreenect2brew update
brew install libusb
brew install glfw3brew install jpeg-turbobrew tap brewsci/science
brew install openni2
export OPENNI2_REDIST=/usr/local/lib/ni2
export OPENNI2_INCLUDE=/usr/local/include/ni2mkdir build && cd build
cmake ..
make
make install./bin/Protonectmake install-openni2 (may need sudo), then run NiViewer. Environment variable LIBFREENECT2_PIPELINE can be set to cl, cuda, etc to specify the pipeline.Note: Ubuntu 12.04 is too old to support. Debian jessie may also be too old, and Debian stretch is implied in the following.
git clone https://github.com/OpenKinect/libfreenect2.git
cd libfreenect2cd depends; ./download_debs_trusty.shsudo apt-get install build-essential cmake pkg-configsudo dpkg -i debs/libusb*debsudo apt-get install libusb-1.0-0-devsudo apt-get install libturbojpeg libjpeg-turbo8-devsudo apt-get install libturbojpeg0-devsudo dpkg -i debs/libglfw3*deb; sudo apt-get install -fcmake -DENABLE_OPENGL=OFF later.sudo apt-get install libglfw3-devsudo apt-add-repository ppa:floe/beignet; sudo apt-get update; sudo apt-get install beignet-dev; sudo dpkg -i debs/ocl-icd*debsudo apt-get install beignet-dev# echo 0 >/sys/module/i915/parameters/enable_cmd_parser is needed. See more known issues at https://www.freedesktop.org/wiki/Software/Beignet/.apt-get install opencl-headers.mkdir -p /etc/OpenCL/vendors; echo /usr/lib/arm-linux-gnueabihf/mali-egl/libmali.so >/etc/OpenCL/vendors/mali.icd; apt-get install opencl-headers.clinfo to verify if you have correctly set up the OpenCL stack.cuda-repo-ubuntu1404...*.deb ("deb (network)") from Nvidia website, follow their installation instructions, including apt-get install cuda which installs Nvidia graphics driver.apt-get install cuda, use sudo prime-select intel to use Intel GPU for desktop.sudo dpkg -i debs/{libva,i965}*deb; sudo apt-get install -fsudo apt-get install libva-dev libjpeg-devsudo apt-add-repository ppa:deb-rob/ros-trusty && sudo apt-get update (You don't need this if you have ROS repos), then sudo apt-get install libopenni2-devsudo apt-get install libopenni2-devcd depends previously, cd .. back to the libfreenect2 root directory first.)
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2
make
make install
You need to specify cmake -Dfreenect2_DIR=$HOME/freenect2/lib/cmake/freenect2 for CMake based third-party application to find libfreenect2.sudo cp ../platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/, then replug the Kinect../bin/Protonectsudo apt-get install openni2-utils && sudo make install-openni2 && NiViewer2. Environment variable LIBFREENECT2_PIPELINE can be set to cl, cuda, etc to specify the pipeline.$ claude mcp add libfreenect2 \
-- python -m otcore.mcp_server <graph>