jpers wrote:
Now, the posible showstoppers & speculation:
- 1. Kinect V2 needs isochronous USB transfers. This means predefined latency, and the libraries definitely check for this. The question is whether the *device* checks for the latency? If it does via some kind of mandatory initialization routine, then the game ends here.
2. If it does not, then the issue is perhaps only how to start and stop the transfer quickly enough for the USB connection to not get
Ok, checked this. Under Linux (centos 7), while the OS on USB2 port detects Kinect being plugged in, it does not report all the USB devices that the Kinect hardware provides (only the Kinect adapter box). Tested on same computer, first with USB3 enabled, then with USB3 disabled.
While it still may be possible to change this behaviour, it would certainly require kernel hacking at USB level (I am not sure whether negotiation takes place on the Kinect-OS level or somewhere deeper).
Anyway, here are relevant dmesg logs:
First, USB3 enabled:
Code: Select all
[ 78.019568] usb 2-2: new high-speed USB device number 7 using xhci_hcd
[ 78.186034] usb 2-2: New USB device found, idVendor=045e, idProduct=02d9
[ 78.186038] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 78.186040] usb 2-2: Product: NuiSensor Adaptor
[ 78.186045] usb 2-2: Manufacturer: Microsoft Corporation
[ 78.187040] hub 2-2:1.0: USB hub found
[ 78.187265] hub 2-2:1.0: 1 port detected
[ 78.619805] usb 3-2: new SuperSpeed USB device number 4 using xhci_hcd
[ 81.594166] usb 3-2: New USB device found, idVendor=045e, idProduct=02d9
[ 81.594170] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 81.594172] usb 3-2: Product: NuiSensor Adaptor
[ 81.594173] usb 3-2: Manufacturer: Microsoft Corporation
[ 81.596634] hub 3-2:1.0: USB hub found
[ 81.596766] hub 3-2:1.0: 1 port detected
[ 82.054914] usb 3-2.1: new SuperSpeed USB device number 5 using xhci_hcd
[ 82.066690] usb 3-2.1: New USB device found, idVendor=045e, idProduct=02c4
[ 82.066694] usb 3-2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=4
[ 82.066696] usb 3-2.1: Product: Xbox NUI Sensor
[ 82.066697] usb 3-2.1: Manufacturer: Microsoft
[ 82.066698] usb 3-2.1: SerialNumber: 005863664147
And with USB3 disabled:
Code: Select all
[ 336.057228] usb 1-1.2: new high-speed USB device number 12 using ehci-pci
[ 336.145106] usb 1-1.2: New USB device found, idVendor=045e, idProduct=02d9
[ 336.145110] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 336.145112] usb 1-1.2: Product: NuiSensor Adaptor
[ 336.145114] usb 1-1.2: Manufacturer: Microsoft Corporation
[ 336.145879] hub 1-1.2:1.0: USB hub found
[ 336.146800] hub 1-1.2:1.0: 1 port detected
EDIT: USB 1.x and USB2 negotiate the version/speed deeply at physical level (sending/receiving pulses, chirps, and then switching to higher speed). I cannot find details of USB2 - USB3 negotiation, but if we assume that the same method is used as with USB1 vs USB2
then it is pretty darn game over for Kinect v2 on raspberry pi, since no amount of SW hacking can convince the USB port to pretend that it is USB3 (assuming that kinect v2 insists on USB3, which now looks sure).