#!/bin/sh # # kinect_fetch_fw - Fetch and install the Microsoft Kinect UAC firmware # # Copyright (C) 2011 Antonio Ospite # # 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"} SDK_MD5="a043c40f35bf14a5139dfbf6cb14f687" [ $# -lt 1 ] && { echo "usage: $(basename "$0") []" 1>&2; exit 1; } FW_DESTDIR=$(readlink -f $1) LOADER_PATH=${2:-"/usr/local/sbin/kinect_upload_fw"} command -v wget >/dev/null 2>&1 || { echo "$(basename "$0"): command 'wget' is needed." 1>&2 ; exit 1; } command -v 7z >/dev/null 2>&1 || { echo "$(basename "$0"): command '7z' is needed." 1>&2; 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" ARCHIVE_MD5=$(md5sum "$ARCHIVE_NAME" | grep --only-matching -m 1 '^[0-9a-f]*') if [ "$ARCHIVE_MD5" != "$SDK_MD5" ]; then echo "$(basename "$0"): Invalid hash for file '$ARCHIVE_NAME'." 1>&2 exit 1 fi 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