Initial import of the other pieces of knect_audio_setup
authorAntonio Ospite <ospite@studenti.unina.it>
Sun, 11 Sep 2011 18:42:39 +0000 (20:42 +0200)
committerAntonio Ospite <ospite@studenti.unina.it>
Thu, 29 Sep 2011 21:39:44 +0000 (23:39 +0200)
Makefile [new file with mode: 0644]
README [new file with mode: 0644]
contrib/55-kinect_audio.rules.in [new file with mode: 0644]
kinect_fetch_fw [new file with mode: 0755]

diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..57deaf8
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,14 @@
+all:
+       make -C kinect_upload_fw 
+
+install:
+       make -C kinect_upload_fw install
+       install -d $(DESTDIR)/lib/udev/rules.d
+       install -m 644 contrib/55-kinect_audio.rules.in $(DESTDIR)/lib/udev/rules.d/55-kinect_audio.rules
+       
+       # We prare the firmware location, but it should be downloaded at
+       # package installation time
+       install -d $(DESTDIR)/lib/firmware/kinect
+
+clean: 
+       make -C kinect_upload_fw clean
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..8cc103b
--- /dev/null
+++ b/README
@@ -0,0 +1,7 @@
+Install kinect_upload_fw first:
+
+  $ make install
+
+Then run the firmware download script:
+
+  $ ./kinect_fetch_fw /lib/firmware/kinect
diff --git a/contrib/55-kinect_audio.rules.in b/contrib/55-kinect_audio.rules.in
new file mode 100644 (file)
index 0000000..25ea713
--- /dev/null
@@ -0,0 +1,2 @@
+# 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@"
diff --git a/kinect_fetch_fw b/kinect_fetch_fw
new file mode 100755 (executable)
index 0000000..cde470c
--- /dev/null
@@ -0,0 +1,48 @@
+#!/bin/sh
+#
+# Fetch and install the firmware to get the kinect Audio working on linux
+#
+# Copyright (C) 2011  Antonio Ospite <ospite@studenti.unina.it>
+#
+# This program is free software. It comes without any warranty, to
+# the extent permitted by applicable law. You can redistribute it
+# and/or modify it under the terms of the Do What The Fuck You Want
+# To Public License, Version 2, as published by Sam Hocevar. See
+# http://sam.zoy.org/wtfpl/COPYING for more details.
+#
+# 7z from p7zip-full is needed, it can be installed with
+#   sudo aptitude install p7zip-full
+
+set -e
+
+SDK_URL=${SDK_URL:-"http://download.microsoft.com/download/8/4/C/84C9EF40-EE49-42C2-AE26-C6E30921182F/KinectSDK32.msi"}
+
+[ $# -lt 1 ] && { echo "usage: $(basename "$0") <firmware destdir> [<path of kinect_upload_fw binary>]"; exit 1; }
+FW_DESTDIR=$1
+LOADER_PATH=${2:-"/usr/local/sbin/kinect_upload_fw"}
+
+command -v wget >/dev/null 2>&1 || { echo "$(basename "$0"): command 'wget' is needed." ; exit 1; }
+command -v 7z >/dev/null 2>&1 || { echo "$(basename "$0"): command '7z' is needed." ; exit 1; }
+
+TEMPDIR="$(mktemp -d)"
+trap 'rm -rf "$TEMPDIR" >/dev/null 2>&1' 0
+trap "exit 2" 1 2 3 15
+
+cd "$TEMPDIR"
+ARCHIVE_NAME=$(basename "$SDK_URL")
+rm -f "$ARCHIVE_NAME" && wget "$SDK_URL" -O "$ARCHIVE_NAME"
+7z e -y -r "$ARCHIVE_NAME" "UACFirmware.*"
+
+FW_FILE=$(ls UACFirmware.* | cut -d ' ' -f 1)
+
+install -d "$DESTDIR/$FW_DESTDIR"
+install -m 644 "$FW_FILE" "$DESTDIR/$FW_DESTDIR"
+
+FIRMWARE_PATH=$FW_DESTDIR/$(basename "$FW_FILE")
+
+if [ -f "${DESTDIR}/lib/udev/rules.d/55-kinect_audio.rules" ];
+then
+  sed -e "s|@LOADER_PATH@|$LOADER_PATH|g" \
+      -e "s|@FIRMWARE_PATH@|$FIRMWARE_PATH|g" \
+      -i "${DESTDIR}/lib/udev/rules.d/55-kinect_audio.rules"
+fi