3 # kinect_fetch_fw - Fetch and install the Microsoft Kinect UAC firmware
 
   5 # Copyright (C) 2011-2016  Antonio Ospite <ao2@ao2.it>
 
   7 # This program is free software. It comes without any warranty, to
 
   8 # the extent permitted by applicable law. You can redistribute it
 
   9 # and/or modify it under the terms of the Do What The Fuck You Want
 
  10 # To Public License, Version 2, as published by Sam Hocevar. See
 
  11 # http://sam.zoy.org/wtfpl/COPYING for more details.
 
  13 # wget and 7z from p7zip-full are needed, they can be installed with
 
  14 #   sudo aptitude install wget p7zip-full
 
  16 # NOTE: p7zip-full >= 9.20 is required in order to extract .msi files
 
  21 SDK_URL=${SDK_URL:-"http://download.microsoft.com/download/F/9/9/F99791F2-D5BE-478A-B77A-830AD14950C3/KinectSDK-v1.0-beta2-x86.msi"}
 
  22 SDK_MD5="40764fe9e00911bda5095e5be777e311"
 
  24 [ $# -lt 1 ] && { echo "usage: $(basename "$0") <firmware destdir>" 1>&2; exit 1; }
 
  25 FW_DESTDIR=$(readlink -m $1)
 
  27 command -v wget >/dev/null 2>&1 || { echo "$(basename "$0"): command 'wget' is needed." 1>&2 ; exit 1; }
 
  28 command -v 7z >/dev/null 2>&1 || { echo "$(basename "$0"): command '7z' is needed." 1>&2; exit 1; }
 
  31 trap 'rm -rf "$TEMPDIR" >/dev/null 2>&1' 0
 
  32 trap "exit 2" 1 2 3 15
 
  36 This script is going to download the UAC Firmware for the Microsoft 
 
  37 Kinect Sensor device from the Microsoft Kinect for Windows SDK:
 
  38 http://kinectforwindows.org/
 
  40 The full license of the SDK can be found at:
 
  41 http://research.microsoft.com/en-us/um/legal/kinectsdk-tou_noncommercial.htm
 
  46 ARCHIVE_NAME=$(basename "$SDK_URL")
 
  47 rm -f "$ARCHIVE_NAME" && wget "$SDK_URL" -O "$ARCHIVE_NAME"
 
  49 ARCHIVE_MD5=$(md5sum "$ARCHIVE_NAME" | grep --only-matching -m 1 '^[0-9a-f]*')
 
  50 if [ "$ARCHIVE_MD5" != "$SDK_MD5" ];
 
  52   echo "$(basename "$0"): Invalid hash for file '$ARCHIVE_NAME'." 1>&2
 
  56 echo -n "Extracting the UAC firmware..."
 
  57 7z e -y -r "$ARCHIVE_NAME" "UACFirmware.*" > /dev/null
 
  60 FW_FILE=$(ls UACFirmware.* | cut -d ' ' -f 1)
 
  61 FIRMWARE_PATH="${FW_DESTDIR}/UACFirmware"
 
  63 install -d "$FW_DESTDIR"
 
  64 install -m 644 "$FW_FILE" "$FIRMWARE_PATH"