X-Git-Url: https://git.ao2.it/kinect-audio-setup.git/blobdiff_plain/818710a3e7595fbd09bfd43959c0d14515e1d4d6..4358ca108cb3393958f38b9366c70cf6b2aa1d0e:/kinect_fetch_fw?ds=inline diff --git a/kinect_fetch_fw b/kinect_fetch_fw index cde470c..3459dca 100755 --- a/kinect_fetch_fw +++ b/kinect_fetch_fw @@ -1,8 +1,8 @@ #!/bin/sh # -# Fetch and install the firmware to get the kinect Audio working on linux +# kinect_fetch_fw - Fetch and install the Microsoft Kinect UAC firmware # -# Copyright (C) 2011 Antonio Ospite +# Copyright (C) 2011-2016 Antonio Ospite # # This program is free software. It comes without any warranty, to # the extent permitted by applicable law. You can redistribute it @@ -10,39 +10,55 @@ # 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 +# wget and 7z from p7zip-full are needed, they can be installed with +# sudo aptitude install wget p7zip-full +# +# NOTE: p7zip-full >= 9.20 is required in order to extract .msi files +# correctly set -e -SDK_URL=${SDK_URL:-"http://download.microsoft.com/download/8/4/C/84C9EF40-EE49-42C2-AE26-C6E30921182F/KinectSDK32.msi"} +SDK_URL=${SDK_URL:-"http://download.microsoft.com/download/F/9/9/F99791F2-D5BE-478A-B77A-830AD14950C3/KinectSDK-v1.0-beta2-x86.msi"} +SDK_MD5="40764fe9e00911bda5095e5be777e311" -[ $# -lt 1 ] && { echo "usage: $(basename "$0") []"; exit 1; } -FW_DESTDIR=$1 -LOADER_PATH=${2:-"/usr/local/sbin/kinect_upload_fw"} +[ $# -lt 1 ] && { echo "usage: $(basename "$0") " 1>&2; exit 1; } +FW_DESTDIR=$(readlink -m $1) -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; } +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)" +TEMPDIR=$(mktemp -d) trap 'rm -rf "$TEMPDIR" >/dev/null 2>&1' 0 trap "exit 2" 1 2 3 15 +cat << EOM + +This script is going to download the UAC Firmware for the Microsoft +Kinect Sensor device from the Microsoft Kinect for Windows SDK: +http://kinectforwindows.org/ + +The full license of the SDK can be found at: +http://research.microsoft.com/en-us/um/legal/kinectsdk-tou_noncommercial.htm + +EOM + 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) +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 -install -d "$DESTDIR/$FW_DESTDIR" -install -m 644 "$FW_FILE" "$DESTDIR/$FW_DESTDIR" +echo -n "Extracting the UAC firmware..." +7z e -y -r "$ARCHIVE_NAME" "UACFirmware.*" > /dev/null +echo " done." -FIRMWARE_PATH=$FW_DESTDIR/$(basename "$FW_FILE") +FW_FILE=$(ls UACFirmware.* | cut -d ' ' -f 1) +FIRMWARE_PATH="${FW_DESTDIR}/UACFirmware" -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 +install -d "$FW_DESTDIR" +install -m 644 "$FW_FILE" "$FIRMWARE_PATH"