#
# 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_MD5="40764fe9e00911bda5095e5be777e311"
[ $# -lt 1 ] && { echo "usage: $(basename "$0") <firmware destdir> [<path of kinect_upload_fw binary>]" 1>&2; exit 1; }
-FW_DESTDIR=$(readlink -f $1)
+FW_DESTDIR=$(readlink -m $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; }
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"
exit 1
fi
-7z e -y -r "$ARCHIVE_NAME" "UACFirmware.*"
+echo -n "Extracting the UAC firmware..."
+7z e -y -r "$ARCHIVE_NAME" "UACFirmware.*" > /dev/null
+echo " done."
FW_FILE=$(ls UACFirmware.* | cut -d ' ' -f 1)
-install -d "${DESTDIR}${FW_DESTDIR}"
-install -m 644 "$FW_FILE" "${DESTDIR}${FW_DESTDIR}"
+install -d "${FW_DESTDIR}"
+install -m 644 "$FW_FILE" "${FW_DESTDIR}"
FIRMWARE_PATH=$FW_DESTDIR/$(basename "$FW_FILE")
-if [ -f "${DESTDIR}/lib/udev/rules.d/55-kinect_audio.rules" ];
+if [ -f "/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"
+ -i "/lib/udev/rules.d/55-kinect_audio.rules"
fi