Merge pull request #121881 from berbiche/kinect-audio-setup-init

kinect-audio-setup: init at 0.5
This commit is contained in:
Timo Kaufmann 2021-07-12 22:36:03 +02:00 committed by GitHub
commit c29191d61b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 131 additions and 0 deletions

View File

@ -0,0 +1,91 @@
{ lib
, stdenv
, fetchgit
, requireFile
, pkg-config
, libusb1
, p7zip
}:
let
# The last known good firmware package to have been tested
# by the upstream projet.
# The firmware URL is hardcoded in the upstream project's installation script
firmwareUrl = "https://download.microsoft.com/download/F/9/9/F99791F2-D5BE-478A-B77A-830AD14950C3/KinectSDK-v1.0-beta2-x86.msi";
# The original URL "https://research.microsoft.com/en-us/um/legal/kinectsdk-tou_noncommercial.htm"
# redirects to the following url:
licenseUrl = "https://www.microsoft.com/en-us/legal/terms-of-use";
in
stdenv.mkDerivation rec {
pname = "kinect-audio-setup";
# On update: Make sure that the `firmwareURL` is still in sync with upstream.
# If the project structure hasn't changed you can find the URL in the
# `kinect_fetch_fw` file in the project source.
version = "0.5";
# This is an MSI or CAB file
FIRMWARE = requireFile rec {
name = "UACFirmware";
sha256 = "08a2vpgd061cmc6h3h8i6qj3sjvjr1fwcnwccwywqypz3icn8xw1";
message = ''
In order to install the Kinect Audio Firmware, you need to download the
non-redistributable firmware from Microsoft.
The firmware is available at ${firmwareUrl} and the license at ${licenseUrl} .
Save the file as UACFirmware and use "nix-prefetch-url file://\$PWD/UACFirmware" to
add it to the Nix store.
'';
};
src = fetchgit {
url = "git://git.ao2.it/kinect-audio-setup.git";
rev = "v${version}";
sha256 = "sha256-bFwmWh822KvFwP/0Gu097nF5K2uCwCLMB1RtP7k+Zt0=";
};
# These patches are not upstream because the project has seen no
# activity since 2016
patches = [
./libusb-1-import-path.patch
./udev-rules-extra-devices.patch
];
nativeBuildInputs = [ p7zip libusb1 pkg-config ];
makeFlags = [
"PREFIX=$(out)"
"DESTDIR=$(out)"
"FIRMWARE_PATH=$(out)/lib/firmware/UACFirmware"
"LOADER_PATH=$(out)/libexec/kinect_upload_fw"
];
buildPhase = ''
runHook preBuild
make -C kinect_upload_fw kinect_upload_fw $makeFlags "''${makeFlagsArray[@]}"
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/libexec/ $out/lib/firmware $out/lib/udev/rules.d
install -Dm755 kinect_upload_fw/kinect_upload_fw $out/libexec/
# 7z extract "assume yes on all queries" "only extract/keep files/directories matching UACFIRMWARE.* recursively"
7z e -y -r "${FIRMWARE}" "UACFirmware.*" >/dev/null
# The filename is bound to change with the Firmware SDK
mv UACFirmware.* $out/lib/firmware/UACFirmware
make install_udev_rules $makeFlags "''${makeFlagsArray[@]}"
runHook postInstall
'';
meta = with lib; {
description = "Tools to enable audio input from the Microsoft Kinect sensor device";
homepage = "https://git.ao2.it/kinect-audio-setup.git";
maintainers = with maintainers; [ berbiche ];
platforms = platforms.linux;
license = licenses.unfree;
};
}

View File

@ -0,0 +1,23 @@
commit 02fd6c4355809e1bff7c66d478e88f30bedde13b
Author: Nicolas Berbiche <nicolas@normie.dev>
Date: Wed May 5 23:14:56 2021 -0400
fix libusb include for Linux
diff --git a/kinect_upload_fw/kinect_upload_fw.c b/kinect_upload_fw/kinect_upload_fw.c
index 1bd4102..351c94f 100644
--- a/kinect_upload_fw/kinect_upload_fw.c
+++ b/kinect_upload_fw/kinect_upload_fw.c
@@ -35,7 +35,12 @@
#include <stdlib.h>
#include <string.h>
#include <errno.h>
+
+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(_WIN32)
#include <libusb.h>
+#else
+#include <libusb-1.0/libusb.h>
+#endif
#include "endian.h"

View File

@ -0,0 +1,15 @@
commit afaaa77b0a03811f86428cf264397b60dd795549
Author: Nicolas Berbiche <nicolas@normie.dev>
Date: Thu May 6 00:10:37 2021 -0400
Add support for other Kinect device in udev
diff --git a/contrib/55-kinect_audio.rules.in b/contrib/55-kinect_audio.rules.in
index 25ea713..9e1b69f 100644
--- a/contrib/55-kinect_audio.rules.in
+++ b/contrib/55-kinect_audio.rules.in
@@ -1,2 +1,4 @@
# Rule to load the Kinect UAC firmware on the "generic" usb device
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="045e", ATTRS{idProduct}=="02ad", RUN+="@LOADER_PATH@ @FIRMWARE_PATH@"
+# Rule to load the Kinect UAC firmware on another supported device
+ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="045e", ATTRS{idProduct}=="02bb", RUN+="@LOADER_PATH@ @FIRMWARE_PATH@"

View File

@ -20676,6 +20676,8 @@ in
kbdlight = callPackage ../os-specific/linux/kbdlight { };
kinect-audio-setup = callPackage ../os-specific/linux/kinect-audio-setup { };
kmscon = callPackage ../os-specific/linux/kmscon { };
kmscube = callPackage ../os-specific/linux/kmscube { };