3 # kinect_fetch_fw -  Fetch and install the Microsoft Kinect UAC firmware
 
   5 # Copyright (C) 2011  Antonio Ospite <ospite@studenti.unina.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 # 7z from p7zip-full is needed, it can be installed with
 
  14 #   sudo aptitude install p7zip-full
 
  18 SDK_URL=${SDK_URL:-"http://download.microsoft.com/download/8/4/C/84C9EF40-EE49-42C2-AE26-C6E30921182F/KinectSDK32.msi"}
 
  20 [ $# -lt 1 ] && { echo "usage: $(basename "$0") <firmware destdir> [<path of kinect_upload_fw binary>]" 1>&2; exit 1; }
 
  21 FW_DESTDIR=$(readlink -f $1)
 
  22 LOADER_PATH=${2:-"/usr/local/sbin/kinect_upload_fw"}
 
  24 command -v wget >/dev/null 2>&1 || { echo "$(basename "$0"): command 'wget' is needed." 1>&2 ; exit 1; }
 
  25 command -v 7z >/dev/null 2>&1 || { echo "$(basename "$0"): command '7z' is needed." 1>&2; exit 1; }
 
  28 trap 'rm -rf "$TEMPDIR" >/dev/null 2>&1' 0
 
  29 trap "exit 2" 1 2 3 15
 
  32 ARCHIVE_NAME=$(basename "$SDK_URL")
 
  33 rm -f "$ARCHIVE_NAME" && wget "$SDK_URL" -O "$ARCHIVE_NAME"
 
  34 7z e -y -r "$ARCHIVE_NAME" "UACFirmware.*"
 
  36 FW_FILE=$(ls UACFirmware.* | cut -d ' ' -f 1)
 
  38 install -d "${DESTDIR}${FW_DESTDIR}"
 
  39 install -m 644 "$FW_FILE" "${DESTDIR}${FW_DESTDIR}"
 
  41 FIRMWARE_PATH=$FW_DESTDIR/$(basename "$FW_FILE")
 
  43 if [ -f "${DESTDIR}/lib/udev/rules.d/55-kinect_audio.rules" ];
 
  45   sed -e "s|@LOADER_PATH@|$LOADER_PATH|g" \
 
  46       -e "s|@FIRMWARE_PATH@|$FIRMWARE_PATH|g" \
 
  47       -i "${DESTDIR}/lib/udev/rules.d/55-kinect_audio.rules"