Skip to content
Lingzhu Xiang edited this page Feb 14, 2016 · 18 revisions

Windows

Try upgrading USB 3 controller driver

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"

Might be helpful to ameliorate transfer problems.

LIBUSB_ERROR_NOTSUPPORTED

The libusb is not correctly built with libusbK backend. Use some prebuilt binary from https://github.com/OpenKinect/libfreenect2/releases/tag/v0.1.0

Mac OS X

Verify Kinect is indeed connected to a USB 3 port.

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.

Abort trap: 6 on Macs with Nvidia GPUs using OpenGL

Use gdb or lldb to obtain a stack trace. Users report it happens in gldCreateDevice() in GeForceGLDriver.

This is a known bug in Nvidia OpenGL driver without resolution. You can use the workarounds: use the OpenCL depth processor, or use https://gfx.io/ to force OpenGL to use the Intel GPU.

Linux

Things not to do:

  • Do not run Protonect with sudo. If you do this, we don't accept your bug reports. If you have permission problem, set up the udev rules as instructed.
  • Do not use scripts under depends/ directory to build things unless instructed or you know what you are doing. If you have done so, remove any generated files under depends/ directory.

Hardware issues

Verify Kinect is indeed connected to a USB 3 port.

lsusb -t

Example:

Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M            <-- USB 3 controller driver
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/1p, 5000M                   <-- Kinect adaptor
    |__ Port 1: Dev 8, If 0, Class=Vendor Specific Class, Driver=, 5000M   <-- Kinect sensor, first interface
    |__ Port 1: Dev 8, If 1, Class=Vendor Specific Class, Driver=, 5000M
    |__ Port 1: Dev 8, If 2, Class=Audio, Driver=snd-usb-audio, 5000M
    |__ Port 1: Dev 8, If 3, Class=Audio, Driver=snd-usb-audio, 5000M
Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/9p, 480M
|__ Port 1: Dev 3, If 0, Class=Hub, Driver=hub/1p, 480M
|__ Port 8: Dev 2, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 8: Dev 2, If 1, Class=Video, Driver=uvcvideo, 480M
Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
    |__ Port 5: Dev 12, If 0, Class=Human Interface Device, Driver=usbhid, 12M

We have seen people trying to connect Kinect to USB 2 ports.

Check the connectors on the Kinect adaptor

The connector on the Kinect adaptor is easy to come loose.

Try replugging.

Sometimes the Kinect is not detected by the OS if plugged before or during boot.

Check the USB 3 controller support status

lspci | grep USB

Likely working:

  • Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI
  • Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI
  • NEC Corporation uPD720200 USB 3.0 Host Controller

Probably not working:

  • ASMedia Technology Inc. Device 1142
  • ASMedia Technology Inc. ASM1042

OS and kernel issues

You must have access to the USB device.

sudo cp platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/ and replug if not done yet.

Try upgrading the kernel

For Ubuntu 14.04, sudo apt-get install linux-image-generic-lts-wily (4.2) or linux-image-generic-lts-vivid (3.19). (Or linux-image-generic-lts-xenial when it becomes available.)

Caveat: May interfere with Nvidia graphics driver.

Some user reports upgrading to 4.2 solves bulk transfer failed: LIBUSB_ERROR_TIMEOUT on NEC Corporation uPD720200.

Check dmesg after running Protonect.
  • Not enough bandwidth for new device state: Your hardware does not have required bandwidth for the Kinect, even if it supports USB 3.
  • ERROR Transfer event TRB DMA ptr not part of current TD. xHCI host not responding to stop endpoint command. Assuming host is dying, halting host: Major bugs in the XHCI driver, your USB 3 controller is not well supported by the OS. (May appear as LIBUSB_ERROR_NO_DEVICE)
  • WARN Event TRB for slot x ep y with no TDs queued?: Harmless warning.
  • xHCI xhci_drop_endpoint called with disabled ep: Useless warning removed after kernel 4.0.
  • page allocation failure: order:7 in proc_do_submiturb: USB buffer allocation fails due to memory fragmentation. Reserve memory sudo sysctl -w vm.min_free_kbytes=65536 or more (but always less than 5% of total memory) to mitigate this.
Try disabling USB autosuspend

# for i in /sys/bus/usb/devices/*/power/autosuspend; do echo -1 >$i; done. Then verify in grep . /sys/bus/usb/devices/*/power/autosuspend everything is -1.

Sometimes the USB power management can cause some issues. Do not keep doing this if this doesn't improve things.

(Intel OpenCL only) Check known issues at https://www.freedesktop.org/wiki/Software/Beignet/

Some 3.x kernels need # echo 0 > /sys/module/i915/parameters/enable_cmd_parser. If it works by default, don't use this.

(Multiple Kinects) Try increasing USBFS buffer size

# echo 64 > /sys/module/usbcore/parameters/usbfs_memory_mb, or maybe 128. Don't set it too large.

Library and driver issues

Enable libusb debug logging

LIBUSB_DEBUG=3 ./Protonect

This outputs INFO and ERROR level messages from libusb to the console.

(OpenGL only) Check driver version

glxinfo | grep OpenGL

Either the "OpenGL core profile version string" or the "OpenGL version string" must be greater than 3.1. If not, you don't have required graphics driver or you have not installed one correctly. Also, you should not see llvmpipe which is a software OpenGL renderer.

Insufficient version may appear as GLFW error 65543 The requested client API version is unavailable.

(OpenCL only) Smoke test OpenCL driver

clinfo should show the OpenCL setup information.

Clone this wiki locally