pax_global_header00006660000000000000000000000064122503776640014526gustar00rootroot0000000000000052 comment=d1e5053b659a5ec31e577443f2b44b91009f691a kinect-audio-setup-0.3/000077500000000000000000000000001225037766400151025ustar00rootroot00000000000000kinect-audio-setup-0.3/.gitignore000066400000000000000000000001471225037766400170740ustar00rootroot00000000000000kinect_upload_fw/kinect_upload_fw kinect_upload_fw/endian kinect_upload_fw/endian.h *.exe *.o *~ *.swp kinect-audio-setup-0.3/ChangeLog000066400000000000000000000145771225037766400166720ustar00rootroot000000000000002013-12-06 17:46:39 +0100 Antonio Ospite * ChangeLog: refresh for v0.3 (HEAD, tag: v0.3, master) 2013-12-06 17:45:36 +0100 Antonio Ospite * Makefile: remove a trailing space 2013-12-06 17:43:22 +0100 Antonio Ospite * Makefile: don't create the empty dir /lib/firmware/kinect 2013-12-06 17:42:43 +0100 Antonio Ospite * kinect_upload_fw/Makefile: fix double spacing 2013-12-06 17:36:12 +0100 Antonio Ospite * kinect_upload_fw/endian.c: fix warning and rename a function 2013-11-19 16:16:18 +0100 Antonio Ospite * README: reword and re-indent some paragraphs (origin/master, origin/HEAD) 2013-11-19 16:02:39 +0100 Antonio Ospite * Makefile: misc fixes 2012-02-23 22:48:22 +0100 Antonio Ospite * kinect_upload_fw: initialize 'transferred' before USB transfers 2012-02-03 13:12:01 +0100 Antonio Ospite * README: acknowledge Steven Toth's sponsorship 2011-12-28 12:17:52 +0100 Antonio Ospite * kinect_fetch_fw: mention that p7zip-full >= 9.20 is needed 2011-12-28 12:14:06 +0100 Antonio Ospite * README: mention reloading udev rules 2011-11-27 12:16:20 +0100 Antonio Ospite * Add ChangeLog for v0.2 (tag: v0.2) 2011-11-27 10:23:30 +0100 Antonio Ospite * kinect_fetch_fw: tell where we are getting the firmware from 2011-11-27 10:11:51 +0100 Antonio Ospite * README: tell where we are getting the actual firmware from 2011-11-27 10:10:28 +0100 Antonio Ospite * README: fix a typo and add some clarifications 2011-11-27 09:59:04 +0100 Antonio Ospite * kinect_fetch_fw: make the script less verbose when invoking 7z 2011-11-27 09:46:38 +0100 Antonio Ospite * kinect_fetch_fw: download the latest KinectSDK-v1.0-beta2-x86.msi 2011-11-27 09:45:54 +0100 Antonio Ospite * kinect_fetch_fw: mention wget in the internal documentation 2011-11-27 00:34:57 +0100 Antonio Ospite * kinect_upload_fw: specify libraries after objects in the linking command 2011-11-05 00:10:30 +0100 Antonio Ospite * Add info about building kinect_upload_fw for MS Windows 2011-11-04 23:59:19 +0100 Antonio Ospite * Update .gitignore 2011-10-21 22:19:37 +0200 Antonio Ospite * kinect_upload_fw: fix reading the firmware file on Windows 2011-10-14 21:57:12 +0200 Antonio Ospite * kinect_upload_fw: fix a mingw32 compilation error 2011-10-13 23:35:10 +0200 Antonio Ospite * kinect_upload_fw: fix generating endian.h before compiling kinect_upload_fw 2011-10-13 23:31:11 +0200 Antonio Ospite * kinect_upload_fw: disable some compiler flags 2011-10-12 12:13:34 +0200 Antonio Ospite * Add ChangeLog for v0.1 (tag: v0.1) 2011-10-06 14:49:01 +0200 Antonio Ospite * kinect_upload_fw: fix a couple of minor warnings from 'sparse' 2011-10-03 16:22:36 +0200 Antonio Ospite * kinect_upload_fw: support architectures that are not little-endian 2011-10-03 15:55:28 +0200 Antonio Ospite * kinect_fetch_fw: add a mechanism to check the integrity of the downloaded file 2011-10-03 15:47:53 +0200 Antonio Ospite * kinect_fetch_fw: print error messages on stderr 2011-09-30 23:00:42 +0200 Antonio Ospite * kinect_upload_fw: really fix -Wformat warnings about sizeof() 2011-09-30 13:59:17 +0200 Antonio Ospite * kinect_upload_fw: fix issues shown by valgrind --leak-check=full --show-reachable=yes 2011-09-30 13:43:52 +0200 Antonio Ospite * kinect_upload_fw: cosmetic changes 2011-09-30 13:38:42 +0200 Antonio Ospite * kinect_upload_fw: print more meaningful error message on failure 2011-09-30 13:26:48 +0200 Antonio Ospite * kinect_fetch_fw: return value from $() does not need to be quoted 2011-09-30 13:21:06 +0200 Antonio Ospite * kinect_fetch_fw: make FW_DESTDIR an absolute path 2011-09-30 12:54:46 +0200 Antonio Ospite * Change description of kinect_fetch_fw 2011-09-30 11:31:01 +0200 Antonio Ospite * Add more info in the README file 2011-09-29 23:20:26 +0200 Antonio Ospite * kinect_upload_fw: fix a -Wstrict-aliasing warning 2011-09-29 23:13:09 +0200 Antonio Ospite * kinect_upload_fw: fix assigning a string literal to a 'char *' 2011-09-29 23:11:21 +0200 Antonio Ospite * kinect_upload_fw: fix -Wsign-compare and -Wpointer-sign 2011-09-29 23:09:48 +0200 Antonio Ospite * kinect_upload_fw: fix -Wformat warnings 2011-09-29 23:05:58 +0200 Antonio Ospite * kinect_upload_fw: fix -Wmissing-prototypes warning 2011-09-29 23:04:24 +0200 Antonio Ospite * kinect_upload_fw: fix -Wold-style-definition warnings 2011-09-29 22:06:26 +0200 Antonio Ospite * kinect_upload_fw: fix spacing in Makefile, use simple expansion to set bindir 2011-09-29 22:05:35 +0200 Antonio Ospite * kinect_upload_fw: enable more warnings in Makefile 2011-09-17 21:46:55 +0200 Antonio Ospite * kinect_upload_fw: remove some trailing spaces 2011-09-29 18:19:23 +0200 Antonio Ospite * Makefile: Add a rule to generate a GNU style Changelog 2011-09-12 00:49:16 +0200 Antonio Ospite * Add a .gitignore file 2011-09-11 20:42:39 +0200 Antonio Ospite * Initial import of the other pieces of knect_audio_setup 2011-09-11 20:35:19 +0200 Drew Fisher * Initial import of kinect_upload_fw kinect-audio-setup-0.3/Makefile000066400000000000000000000005331225037766400165430ustar00rootroot00000000000000all: $(MAKE) -C kinect_upload_fw install: $(MAKE) -C kinect_upload_fw install install -d $(DESTDIR)/lib/udev/rules.d install -m 644 contrib/55-kinect_audio.rules.in $(DESTDIR)/lib/udev/rules.d/55-kinect_audio.rules clean: $(MAKE) -C kinect_upload_fw clean changelog: git log --pretty="format:%ai %aN <%aE>%n%n%x09* %s%d%n" > ChangeLog kinect-audio-setup-0.3/README000066400000000000000000000036611225037766400157700ustar00rootroot00000000000000kinect-audio-setup makes audio input from the Microsoft Kinect Sensor device work on GNU/Linux systems. When the Kinect is first plugged in the USB port it shows up as a generic USB device with a bulk endpoint; after uploading a certain firmware a reenumeration takes place and a USB Audio Class (UAC) device becomes available. kinect-audio-setup provides tools to download the firmware off the net at installation time —since the firmware is not redistributable—, and it sets up udev rules to call the firmware loader when the device is plugged in to finally get the USB Audio Class device. Note that for all the magic to happen automatically pulseaudio >= 1.0 is needed, as it contains the kinect-audio.conf profile which fixes audio device detection: https://bugs.freedesktop.org/show_bug.cgi?id=39664 kinect-audio-setup provides: - kinect_fetch_fw which downloads and extracts the firmware from the Microsoft Kinect SDK; - kinect_upload_fw which loads the firmware to the generic USB device in order to get the USB Audio Class device to show up; - udev rules to call kinect_upload_fw when the device is plugged in. To install kinect-audio-setup from the source distribution follow the steps below with superuser rights: Install kinect_upload_fw first: # make install it will be copied to /usr/local/sbin by default, assign the PREFIX variable on the command line to install it to another location. Then run the firmware fetcher script (remember this is only needed once): # ./kinect_fetch_fw /lib/firmware/kinect # udevadm control --reload-rules The UAC firmware is downloaded from the Microsoft Kinect SDK at http://www.kinectforwindows.org, the license of the SDK can be found at http://www.kinectforwindows.org/download/EULA.htm === Acknowledgements A special thanks goes to Steven Toth from http://kernellabs.com, who kindly sponsored a Kinect to Antonio Ospite and made kinect-audio-setup possible in its current form. kinect-audio-setup-0.3/contrib/000077500000000000000000000000001225037766400165425ustar00rootroot00000000000000kinect-audio-setup-0.3/contrib/55-kinect_audio.rules.in000066400000000000000000000002751225037766400231140ustar00rootroot00000000000000# Rule to load the Kinect UAC firmware on the "generic" usb device ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="045e", ATTRS{idProduct}=="02ad", RUN+="@LOADER_PATH@ @FIRMWARE_PATH@" kinect-audio-setup-0.3/kinect_fetch_fw000077500000000000000000000046501225037766400201570ustar00rootroot00000000000000#!/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. # # 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/F/9/9/F99791F2-D5BE-478A-B77A-830AD14950C3/KinectSDK-v1.0-beta2-x86.msi"} SDK_MD5="40764fe9e00911bda5095e5be777e311" [ $# -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 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://www.kinectforwindows.org/download/EULA.htm EOM 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 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}" 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 kinect-audio-setup-0.3/kinect_upload_fw/000077500000000000000000000000001225037766400204175ustar00rootroot00000000000000kinect-audio-setup-0.3/kinect_upload_fw/Makefile000066400000000000000000000022751225037766400220650ustar00rootroot00000000000000CFLAGS ?= -std=c99 -pedantic -Wall -Wextra -O2 # Don't make pedantic checks errors, # as vanilla libusb-1.0.8 can't live with that #CFLAGS += -pedantic-errors # GCC >= 4.6 #CFLAGS += -Wunused-but-set-variable CFLAGS += -fno-common \ -Wall \ -Wextra \ -Wformat=2 \ -Winit-self \ -Winline \ -Wpacked \ -Wp,-D_FORTIFY_SOURCE=2 \ -Wpointer-arith \ -Wlarger-than-65500 \ -Wmissing-declarations \ -Wmissing-format-attribute \ -Wmissing-noreturn \ -Wmissing-prototypes \ -Wnested-externs \ -Wold-style-definition \ -Wredundant-decls \ -Wsign-compare \ -Wstrict-aliasing=2 \ -Wstrict-prototypes \ -Wswitch-enum \ -Wundef \ -Wunreachable-code \ -Wunsafe-loop-optimizations \ -Wwrite-strings CFLAGS += $(shell pkg-config --cflags libusb-1.0) LDLIBS += $(shell pkg-config --libs libusb-1.0) PREFIX ?= /usr/local bindir := $(PREFIX)/sbin all: kinect_upload_fw endian: endian.o endian.h: endian rm -f endian.h ./endian > endian.h kinect_upload_fw.o: endian.h kinect_upload_fw: kinect_upload_fw.o install: kinect_upload_fw install -d $(DESTDIR)$(bindir) install -m 755 kinect_upload_fw $(DESTDIR)$(bindir) clean: rm -rf *~ *.o kinect_upload_fw endian endian.h kinect-audio-setup-0.3/kinect_upload_fw/endian.c000066400000000000000000000007271225037766400220270ustar00rootroot00000000000000#include #include static int little_endian(void) { int i = 0; ((char *) (&i))[0] = 1; return (i == 1); } int main(void) { printf("#ifndef __ENDIAN_H\n"); printf("#define __ENDIAN_H\n"); printf("\n"); printf("#define __LITTLE_ENDIAN 1234\n"); printf("#define __BIG_ENDIAN 4321\n"); printf("#define __BYTE_ORDER __%s_ENDIAN\n", little_endian() ? "LITTLE" : "BIG"); printf("\n"); printf("#endif /* __ENDIAN_H */\n"); exit(0); } kinect-audio-setup-0.3/kinect_upload_fw/kinect_upload_fw.c000066400000000000000000000157141225037766400241100ustar00rootroot00000000000000/* * Copyright 2011 Drew Fisher . All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL DREW FISHER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * The views and conclusions contained in the software and documentation are * those of the authors and should not be interpreted as representing official * policies, either expressed or implied, of Drew Fisher. */ #include #include #include #include #include #include #include "endian.h" static libusb_device_handle *dev; static unsigned int seq; typedef struct { uint32_t magic; uint32_t seq; uint32_t bytes; uint32_t cmd; uint32_t write_addr; uint32_t unk; } bootloader_command; typedef struct { uint32_t magic; uint32_t seq; uint32_t status; } status_code; #define LOG(...) printf(__VA_ARGS__) #if __BYTE_ORDER == __BIG_ENDIAN static inline uint32_t fn_le32(uint32_t d) { return (d<<24) | ((d<<8)&0xFF0000) | ((d>>8)&0xFF00) | (d>>24); } #else #define fn_le32(x) (x) #endif static void dump_bl_cmd(bootloader_command cmd) { int i; for (i = 0; i < 24; i++) LOG("%02X ", ((unsigned char*)(&cmd))[i]); LOG("\n"); } static int get_first_reply(void) { unsigned char buffer[512]; int res; int transferred = 0; res = libusb_bulk_transfer(dev, 0x81, buffer, 512, &transferred, 0); if (res != 0 ) { LOG("Error reading first reply: %d\ttransferred: %d (expected %d)\n", res, transferred, 0x60); return res; } LOG("Reading first reply: "); int i; for (i = 0; i < transferred; ++i) { LOG("%02X ", buffer[i]); } LOG("\n"); return res; } static int get_reply(void) { union { status_code buffer; /* The following is needed because libusb_bulk_transfer might * fail when working on a buffer smaller than 512 bytes. */ unsigned char dump[512]; } reply; int res; int transferred = 0; res = libusb_bulk_transfer(dev, 0x81, reply.dump, 512, &transferred, 0); if (res != 0 || transferred != sizeof(status_code)) { LOG("Error reading reply: %d\ttransferred: %d (expected %zu)\n", res, transferred, sizeof(status_code)); return res; } if (fn_le32(reply.buffer.magic) != 0x0a6fe000) { LOG("Error reading reply: invalid magic %08X\n", reply.buffer.magic); return -1; } if (fn_le32(reply.buffer.seq) != seq) { LOG("Error reading reply: non-matching sequence number %08X (expected %08X)\n", reply.buffer.seq, seq); return -1; } if (fn_le32(reply.buffer.status) != 0) { LOG("Notice reading reply: last uint32_t was nonzero: %d\n", reply.buffer.status); } LOG("Reading reply: "); int i; for (i = 0; i < transferred; ++i) { LOG("%02X ", reply.dump[i]); } LOG("\n"); return res; } int main(int argc, char** argv) { char default_filename[] = "firmware.bin"; char* filename = default_filename; int res = 0; if (argc == 2) { filename = argv[1]; } FILE* fw = fopen(filename, "rb"); if (fw == NULL) { fprintf(stderr, "Failed to open %s: %s\n", filename, strerror(errno)); return errno; } libusb_init(NULL); libusb_set_debug(NULL, 3); dev = libusb_open_device_with_vid_pid(NULL, 0x045e, 0x02ad); if (dev == NULL) { fprintf(stderr, "Couldn't open device.\n"); res = -ENODEV; goto fail_libusb_open; } libusb_set_configuration(dev, 1); libusb_claim_interface(dev, 0); seq = 1; bootloader_command cmd; cmd.magic = fn_le32(0x06022009); cmd.seq = fn_le32(seq); cmd.bytes = fn_le32(0x60); cmd.cmd = fn_le32(0); cmd.write_addr = fn_le32(0x15); cmd.unk = fn_le32(0); LOG("About to send: "); dump_bl_cmd(cmd); int transferred = 0; res = libusb_bulk_transfer(dev, 1, (unsigned char*)&cmd, sizeof(cmd), &transferred, 0); if (res != 0 || transferred != sizeof(cmd)) { LOG("Error: res: %d\ttransferred: %d (expected %zu)\n", res, transferred, sizeof(cmd)); goto cleanup; } res = get_first_reply(); // This first one doesn't have the usual magic bytes at the beginning, and is 96 bytes long - much longer than the usual 12-byte replies. res = get_reply(); // I'm not sure why we do this twice here, but maybe it'll make sense later. seq++; // Split addr declaration and assignment in order to compile as C++, // otherwise this would give "jump to label '...' crosses initialization" // errors. uint32_t addr; addr = 0x00080000; unsigned char page[0x4000]; int read; do { read = fread(page, 1, 0x4000, fw); if (read <= 0) { break; } //LOG(""); cmd.seq = fn_le32(seq); cmd.bytes = fn_le32(read); cmd.cmd = fn_le32(0x03); cmd.write_addr = fn_le32(addr); LOG("About to send: "); dump_bl_cmd(cmd); // Send it off! transferred = 0; res = libusb_bulk_transfer(dev, 1, (unsigned char*)&cmd, sizeof(cmd), &transferred, 0); if (res != 0 || transferred != sizeof(cmd)) { LOG("Error: res: %d\ttransferred: %d (expected %zu)\n", res, transferred, sizeof(cmd)); goto cleanup; } int bytes_sent = 0; while (bytes_sent < read) { int to_send = (read - bytes_sent > 512 ? 512 : read - bytes_sent); transferred = 0; res = libusb_bulk_transfer(dev, 1, &page[bytes_sent], to_send, &transferred, 0); if (res != 0 || transferred != to_send) { LOG("Error: res: %d\ttransferred: %d (expected %d)\n", res, transferred, to_send); goto cleanup; } bytes_sent += to_send; } res = get_reply(); addr += (uint32_t)read; seq++; } while (read > 0); cmd.seq = fn_le32(seq); cmd.bytes = fn_le32(0); cmd.cmd = fn_le32(0x04); cmd.write_addr = fn_le32(0x00080030); dump_bl_cmd(cmd); transferred = 0; res = libusb_bulk_transfer(dev, 1, (unsigned char*)&cmd, sizeof(cmd), &transferred, 0); if (res != 0 || transferred != sizeof(cmd)) { LOG("Error: res: %d\ttransferred: %d (expected %zu)\n", res, transferred, sizeof(cmd)); goto cleanup; } res = get_reply(); seq++; // Now the device reenumerates. cleanup: libusb_close(dev); fail_libusb_open: libusb_exit(NULL); fclose(fw); return res; } kinect-audio-setup-0.3/windows/000077500000000000000000000000001225037766400165745ustar00rootroot00000000000000kinect-audio-setup-0.3/windows/README.asciidoc000066400000000000000000000041311225037766400212300ustar00rootroot00000000000000Cross-compiling kinect_upload_fw for Windows under Linux ======================================================== Adapted from http://www.tinc-vpn.org/examples/cross-compiling-windows-binary/ Installing the prerequisites for cross-compilation -------------------------------------------------- sudo apt-get install mingw32 wine git-core Setting up the build directory and getting the dependencies: mkdir $HOME/mingw cd $HOME/mingw wget http://kinect.dashhacks.com/sites/kinect-hacks.com/files/libusb-win32-bin-1.2.2.0.zip unzip libusb-win32-bin-1.2.2.0.zip git clone git://github.com/OpenKinect/libfreenect.git --branch unstable Compiling kinect_upload_fw -------------------------- cd $HOME/mingw git clone git://git.ao2.it/kinect-audio-setup.git cd kinect-audio-setup/kinect_upload_fw CC=i586-mingw32msvc-gcc make endian LDFLAGS= wine ./endian > endian.h i586-mingw32msvc-g++ kinect_upload_fw.c -o kinect_upload_fw.exe \ $HOME/mingw/libfreenect/platform/windows/libusb10emu/libusb-1.0/failguard.cpp \ $HOME/mingw/libfreenect/platform/windows/libusb10emu/libusb-1.0/libusbemu.cpp \ -I$HOME/mingw/libfreenect/platform/windows/libusb10emu/libusb-1.0 \ -I$HOME/mingw/libfreenect/platform/windows/libusb10emu \ -I$HOME/mingw/libusb-win32-bin-1.2.2.0/include \ -I$HOME/mingw/libfreenect/include \ -I$HOME/mingw/libfreenect/src \ $HOME/mingw/libusb-win32-bin-1.2.2.0/lib/gcc/libusb.a Using kinect_upload_fw.exe on Windows ------------------------------------- First of all, make sure the drivers from ''libfreenect'' are installed, they are under ''platform/windows/inf''. Download the MSR Kinect SDK from: http://download.microsoft.com/download/8/4/C/84C9EF40-EE49-42C2-AE26-C6E30921182F/KinectSDK32.msi Explore ''KinectSDK32.msi'' using 7-zip from http://www.7-zip.org, extract the ''media1.cab'' file in it and extract the firmware file from ''media1.cab'', the firmware file is named ''UACFirmware.*''. Put ''kinect_upload_fw.exe'', the firmware file and ''kinect_upload_fw.bat'' file in the same directory and double_click on the ''kinect_upload_fw.bat'' file. kinect-audio-setup-0.3/windows/kinect_upload_fw.bat000066400000000000000000000013741225037766400226060ustar00rootroot00000000000000REM First of all, make sure the drivers from ''libfreenect'' are installed, REM they are in ''platform/windows/inf'' in the libfreenect code base.. REM REM Download the MSR Kinect SDK from: REM http://download.microsoft.com/download/8/4/C/84C9EF40-EE49-42C2-AE26-C6E30921182F/KinectSDK32.msi REM REM Explore ''KinectSDK32.msi'' using 7-zip from http://www.7-zip.org, extract the REM ''media1.cab'' file in it and get the firmware file, named ''UACFirmware.*'' REM REM Put ''kinect_upload_fw.exe'', the firmware file and ''kinect_upload_fw.bat'' REM file in the same directory and double_click on the ''kinect_upload_fw.bat'' REM file. Set FIRMWARE="UACFirmware.C9C6E852_35A3_41DC_A57D_BDDEB43DFD04" kinect_upload_fw.exe %FIRMWARE% @PAUSE