A little background: To interface with the Kinect, I’m using libfreenect2. This library uses libusb-1.0 to interface against the kernel driver. libusb-1.0 did not work properly against the LT4 19.3 release, but did against 21.2 back in January. I was able to get libfreenect2 to work off of either the built in port or the mPCIe card. @xlz reported that he was able to get the on board port working just fine when he published his work. Unfortunately this changed at some point, my guess would be that either the libfreenect2 to libusb interface or libusb changed enough that there is some issue that causes the on board port to stop working with libfreenect2. Either way, I’m pretty sure it’s upstream from the kernel driver itself.
Early adaptors on Linux were reporting that only NEC/Renasas USB chipsets were working with the Kinect V2, that was the reason I bought the mPCIe card. The current libusb-1.0 required changes to get the mPCIe card to work. Here’s the blog entry: Install Kinect V2 using libfreenect2 on NVIDIA Jetson TK1 - JetsonHacks , but the summary is that MAX_ISO_BUFFER_LENGTH in usbfs.h caused issues. In the published version, the size is 49152 * 128, the mPCIe card/Jetson didn’t like that, but works when the size is 49152. A little bit like building on quicksand, but not unusual when the project is not the mainstream solution.
To answer some of your questions:
Previously, the micro usb port was occupied, I forgot to take it out after flashing. The Kinect V2 has a microphone array which accounts for the audio streams you noticed.
With that said, I find it interesting that when only a USB 3.0 hub is connected with keyboard and mouse; No mPCIe, No microusb:
ubuntu@tegra-ubuntu:~$ lsusb
Bus 002 Device 003: ID 2109:0812
Bus 002 Device 002: ID 2109:0812
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 05ac:021d Apple, Inc. Aluminum Mini Keyboard (ANSI)
Bus 001 Device 005: ID 05ac:1005 Apple, Inc.
Bus 001 Device 004: ID 046d:c018 Logitech, Inc. Optical Wheel Mouse
Bus 001 Device 003: ID 2109:2812
Bus 001 Device 002: ID 2109:2812
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
ubuntu@tegra-ubuntu:~$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xhci/2p, 5000M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 4: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xhci/6p, 480M
|__ Port 3: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 4: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 3: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 4: Dev 5, If 0, Class=Hub, Driver=hub/3p, 480M
|__ Port 2: Dev 6, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 2: Dev 6, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
Then plug in the Kinect:
ubuntu@tegra-ubuntu:~$ lsusb
Bus 002 Device 003: ID 2109:0812
Bus 002 Device 005: ID 045e:02d8 Microsoft Corp.
Bus 002 Device 004: ID 045e:02d9 Microsoft Corp.
Bus 002 Device 002: ID 2109:0812
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 05ac:021d Apple, Inc. Aluminum Mini Keyboard (ANSI)
Bus 001 Device 005: ID 05ac:1005 Apple, Inc.
Bus 001 Device 004: ID 046d:c018 Logitech, Inc. Optical Wheel Mouse
Bus 001 Device 003: ID 2109:2812
Bus 001 Device 007: ID 045e:02d9 Microsoft Corp.
Bus 001 Device 002: ID 2109:2812
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
ubuntu@tegra-ubuntu:~$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xhci/2p, 5000M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 1: Dev 4, If 0, Class=Hub, Driver=hub/1p, 5000M
|__ Port 1: Dev 5, If 0, Class=Vendor Specific Class, Driver=, 5000M
|__ Port 1: Dev 5, If 1, Class=Vendor Specific Class, Driver=, 5000M
|__ Port 1: Dev 5, If 2, Class=Audio, Driver=snd-usb-audio, 5000M
|__ Port 1: Dev 5, If 3, Class=Audio, Driver=snd-usb-audio, 5000M
|__ Port 4: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xhci/6p, 480M
|__ Port 3: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 7, If 0, Class=Hub, Driver=hub/1p, 480M
|__ Port 4: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 3: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 4: Dev 5, If 0, Class=Hub, Driver=hub/3p, 480M
|__ Port 2: Dev 6, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 2: Dev 6, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
Then when you add the mPCIe back (USB 3.0 hub with mouse and keyboard connected, no Kinect):
ubuntu@tegra-ubuntu:~$ lsusb
Bus 004 Device 003: ID 2109:0812
Bus 004 Device 002: ID 2109:0812
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 006: ID 05ac:021d Apple, Inc. Aluminum Mini Keyboard (ANSI)
Bus 003 Device 005: ID 05ac:1005 Apple, Inc.
Bus 003 Device 004: ID 046d:c018 Logitech, Inc. Optical Wheel Mouse
Bus 003 Device 003: ID 2109:2812
Bus 003 Device 002: ID 2109:2812
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
ubuntu@tegra-ubuntu:~$ lsusb -t
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=tegra-xhci/2p, 5000M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 4: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=tegra-xhci/6p, 480M
|__ Port 3: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 4: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 3: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 4: Dev 5, If 0, Class=Hub, Driver=hub/3p, 480M
|__ Port 2: Dev 6, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 2: Dev 6, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
My guess would be that the mPCIe card is capable of running both of it’s hubs at 3.0 speeds, but the kernel driver configures it similarly to the built in ports.