parent
aedc67d64f
commit
100a01c272
@ -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; |
||||
}; |
||||
} |
@ -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"
|
||||
|
@ -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@"
|
Loading…
Reference in new issue