Azure Kinect DK

I tried Azure Kinect DK 2 years ago, and rencently I’d love to some fun with it again.

0. My Working Environment

1
2
3
4
5
6
7
8
9
$ lsb_release -a             
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04 LTS
Release: 24.04
Codename: noble

$ uname -r
6.8.0-36-generic

1. Azure Kinect DK

1.1 Overview

Azure Kinect Sensor

1.2 Hardware Specification

Refer to Azure Kinect DK hardware specifications.

2. lsusb and Demonstration

[!NOTE:]
Azure Kinect DK is quite picky at USB cables.

2.1 Nothing Detected

For some USB cables, lsusb shows nothing related to Azure Kinect DK.

1
$ lsusb | grep Azure

Please also refer to: cannot connect via Thunderbolt 3.

2.2 Detected

For other USB cables, both lsusb and AzureKinectFirmwareTool are able to detect Azure Kinect DK.

1
2
3
4
5
6
7
8
9
10
$ AzureKinectFirmwareTool -q
== Azure Kinect DK Firmware Tool ==
Device Serial Number: 000593414512
Current Firmware Versions:
RGB camera firmware: 1.6.110
Depth camera firmware: 1.6.80
Depth config file: 6109.7
Audio firmware: 1.6.14
Build Config: Production
Certificate Type: Microsoft

2.2.1 k4aviewer No Available Devices

However, when we run k4aviewer, it still shows No Available Devices.

1
2
3
4
5
$ lsusb | grep Azure
Bus 009 Device 007: ID 045e:097b Microsoft Corp. Generic Hub [Azure Kinect]
Bus 009 Device 008: ID 045e:097d Microsoft Corp. Azure Kinect 4K Camera
Bus 009 Device 009: ID 045e:097c Microsoft Corp. Azure Kinect Depth Camera
Bus 009 Device 010: ID 045e:097e Microsoft Corp. Azure Kinect Microphone Array
No Available Devices No Available Devices, Errors
K4A Viewer No Available Devices K4A Viewer No Available Devices, Errors

2.2.2 Detect Okay And Run Successfully

Fortunately, I got one cable working partially perperly, but lsusb failed to detect Azure Kinect DK's Microphone Array.

1
2
3
4
$ lsusb | grep -i Azure 
Bus 010 Device 002: ID 045e:097a Microsoft Corp. Generic Superspeed Hub [Azure Kinect]
Bus 010 Device 003: ID 045e:097c Microsoft Corp. Azure Kinect Depth Camera
Bus 010 Device 004: ID 045e:097d Microsoft Corp. Azure Kinect 4K Camera

K4A Viewer

2.3 I Believe and I Found It

Luckily, I found a cable, which is able to detect ALL of the following:

1
2
3
4
5
6
$ lsusb | grep Azure   
Bus 001 Device 010: ID 045e:097b Microsoft Corp. Generic Hub [Azure Kinect]
Bus 001 Device 011: ID 045e:097e Microsoft Corp. Azure Kinect Microphone Array
Bus 002 Device 014: ID 045e:097a Microsoft Corp. Generic Superspeed Hub [Azure Kinect]
Bus 002 Device 015: ID 045e:097c Microsoft Corp. Azure Kinect Depth Camera
Bus 002 Device 016: ID 045e:097d Microsoft Corp. Azure Kinect 4K Camera

2.4 4K Camera Is Working Fine Like An Independent UVC Camera

1
2
3
4
5
6
7
8
$ v4l2-ctl --list-devices

Azure Kinect 4K Camera (usb-0000:05:00.3-2.1):
/dev/video1
/dev/video2
/dev/media0

Cannot open device /dev/video0, exiting.

It can be simpilied decmonstrated that GUVCView is able to successfully detect Bus 002 Device 016: ID 045e:097d Microsoft Corp. Azure Kinect 4K Camera as a UVC Camera and carry out the real-time streaming.

3. libdepthengine.so

Currently, Azure Kinect DK supports Ubuntu 18.04 ONLY. However, the libdepthengine.so.2.0 is working fine under my Ubuntu 24.04, which can be extracted directly from the package libk4a1.4_1.4.2_amd64.deb. Save libdepthengine.so.2.0 under any $PATH, and create a symbolic link if you want to.

4. Build Azure-Kinect-Sensor-SDK Longer Vision From Source

Don’t use the original Azure-Kinect-Sensor-SDK. Use Azure-Kinect-Sensor-SDK Longer Vision instead.

5. Python Wrappers for Azure-Kinect-Sensor-SDK

Wrappers Description
k4a Python wrapper the official Python Wrapper with Azure-Kinect-Sensor-SDK
pyk4a a third-party Python Wrapper

6. The Bug: replace_sample(). capturesync_drop, releasing capture early due to full queue TS

Please refer to the following 2 Github issues: