diff -ruN libfreenect-0.5.7/CMakeLists.txt libfreenect-0.5.7-windows/CMakeLists.txt
--- libfreenect-0.5.7/CMakeLists.txt	2017-10-26 08:03:11.000000000 +0900
+++ libfreenect-0.5.7-windows/CMakeLists.txt	2019-02-13 15:15:20.389478600 +0900
@@ -128,7 +128,11 @@
 
 if(WIN32)
   include_directories("${CMAKE_CURRENT_SOURCE_DIR}/platform/windows")
-endif()
+  include_directories("${CMAKE_CURRENT_SOURCE_DIR}/platform/windows/libusb10emu")
+  include_directories("${CMAKE_CURRENT_SOURCE_DIR}/platform/windows/libusb10emu/libusb-1.0")
+endif(WIN32)
+
+add_definitions(-D_TIMESPEC_DEFINED)
 
 # Add library project
 add_subdirectory (src)
diff -ruN libfreenect-0.5.7/platform/windows/unistd.h libfreenect-0.5.7-windows/platform/windows/unistd.h
--- libfreenect-0.5.7/platform/windows/unistd.h	2017-10-26 08:03:11.000000000 +0900
+++ libfreenect-0.5.7-windows/platform/windows/unistd.h	2019-02-13 15:15:20.389478600 +0900
@@ -41,15 +41,3 @@
 #endif
 #endif // _SSIZE_T_DEFINED
 
-
-static void usleep(__int64 usec)
-{
-	// Convert to 100 nanosecond interval, negative for relative time.
-	LARGE_INTEGER ft;
-	ft.QuadPart = -(10 * usec);
-
-	HANDLE timer = CreateWaitableTimer(NULL, TRUE, NULL);
-	SetWaitableTimer(timer, &ft, 0, NULL, NULL, 0);
-	WaitForSingleObject(timer, INFINITE);
-	CloseHandle(timer);
-}
diff -ruN libfreenect-0.5.7/src/cameras.c libfreenect-0.5.7-windows/src/cameras.c
--- libfreenect-0.5.7/src/cameras.c	2017-10-26 08:03:11.000000000 +0900
+++ libfreenect-0.5.7-windows/src/cameras.c	2019-02-13 15:15:20.389478600 +0900
@@ -868,12 +868,7 @@
 			return -1;
 	}
 
-	const unsigned char depth_endpoint = 0x82;
-	int packet_size = fnusb_get_max_iso_packet_size(&dev->usb_cam, depth_endpoint, DEPTH_PKTBUF);
-
-	FN_INFO("[Stream 70] Negotiated packet size %d\n", packet_size);
-
-	int res = fnusb_start_iso(&dev->usb_cam, &dev->depth_isoc, depth_process, depth_endpoint, NUM_XFERS, PKTS_PER_XFER, packet_size);
+	int res = fnusb_start_iso(&dev->usb_cam, &dev->depth_isoc, depth_process, 0x82, NUM_XFERS, PKTS_PER_XFER, DEPTH_PKTBUF);
 	if (res < 0)
 		return res;
 
@@ -1018,12 +1013,7 @@
 			break;
 	}
 
-	const unsigned char video_endpoint = 0x81;
-	int packet_size = fnusb_get_max_iso_packet_size(&dev->usb_cam, video_endpoint, VIDEO_PKTBUF);
-
-	FN_INFO("[Stream 80] Negotiated packet size %d\n", packet_size);
-
-	int res = fnusb_start_iso(&dev->usb_cam, &dev->video_isoc, video_process, video_endpoint, NUM_XFERS, PKTS_PER_XFER, packet_size);
+	int res = fnusb_start_iso(&dev->usb_cam, &dev->video_isoc, video_process, 0x81, NUM_XFERS, PKTS_PER_XFER, VIDEO_PKTBUF);
 	if (res < 0)
 		return res;
 
diff -ruN libfreenect-0.5.7/src/CMakeLists.txt libfreenect-0.5.7-windows/src/CMakeLists.txt
--- libfreenect-0.5.7/src/CMakeLists.txt	2017-10-26 08:03:11.000000000 +0900
+++ libfreenect-0.5.7-windows/src/CMakeLists.txt	2019-02-13 15:15:20.389478600 +0900
@@ -5,21 +5,10 @@
 include_directories(${CMAKE_CURRENT_SOURCE_DIR})
 include_directories(${LIBUSB_1_INCLUDE_DIRS})
 
-# Audio Firmware
-include(FindPythonInterp)
-IF(BUILD_REDIST_PACKAGE)
-  # If this build is intended for a redistributable package, we can't include audios.bin, so we should include fwfetcher.py
-  # and the package should run "python fwfetcher.py $INSTALL_PREFIX/share" as a postinst hook
-  install (FILES "fwfetcher.py" DESTINATION "${CMAKE_INSTALL_PREFIX}/share")
-ELSE(BUILD_REDIST_PACKAGE)
-  # If the install is local only, we can just run fwfetcher.py and install the audios.bin firmware to the system folder
-  add_custom_target(firmware ALL
-      COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/fwfetcher.py" "../audios.bin"
-      DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/fwfetcher.py")
-  install (FILES "${CMAKE_CURRENT_BINARY_DIR}/../audios.bin" DESTINATION "${CMAKE_INSTALL_PREFIX}/share/libfreenect")
-ENDIF()
-
-LIST(APPEND SRC core.c tilt.c cameras.c flags.c usb_libusb10.c registration.c audio.c loader.c)
+LIST(APPEND SRC core.c tilt.c cameras.c flags.c usb_libusb10.c registration.c ../platform/windows/libusb10emu/libusb-1.0/failguard.cpp ../platform/windows/libusb10emu/libusb-1.0/libusbemu.cpp)
+ IF(WIN32)
+   set_source_files_properties(${SRC} PROPERTIES LANGUAGE CXX)
+ ENDIF(WIN32)
 
 add_library (freenect SHARED ${SRC})
 set_target_properties ( freenect PROPERTIES
@@ -28,16 +17,16 @@
 install (TARGETS freenect
   DESTINATION "${PROJECT_LIBRARY_INSTALL_DIR}")
 
-add_library (freenectstatic STATIC ${SRC})
-set_target_properties (freenectstatic PROPERTIES OUTPUT_NAME freenect)
-IF(UNIX AND NOT APPLE)
-  SET_TARGET_PROPERTIES (freenectstatic PROPERTIES COMPILE_FLAGS "-fPIC")
-ENDIF()
-install (TARGETS freenectstatic
-  DESTINATION "${PROJECT_LIBRARY_INSTALL_DIR}")
+# add_library (freenectstatic STATIC ${SRC})
+# set_target_properties (freenectstatic PROPERTIES OUTPUT_NAME freenect)
+# IF(UNIX AND NOT APPLE)
+#  SET_TARGET_PROPERTIES (freenectstatic PROPERTIES COMPILE_FLAGS "-fPIC")
+#ENDIF()
+#install (TARGETS freenectstatic
+#  DESTINATION "${PROJECT_LIBRARY_INSTALL_DIR}")
 
 target_link_libraries (freenect ${LIBUSB_1_LIBRARIES})
-target_link_libraries (freenectstatic ${LIBUSB_1_LIBRARIES})
+#target_link_libraries (freenectstatic ${LIBUSB_1_LIBRARIES})
 
 # Install the header files
 install (FILES "../include/libfreenect.h" "../include/libfreenect_registration.h" "../include/libfreenect_audio.h"
diff -ruN libfreenect-0.5.7/src/core.c libfreenect-0.5.7-windows/src/core.c
--- libfreenect-0.5.7/src/core.c	2017-10-26 08:03:11.000000000 +0900
+++ libfreenect-0.5.7-windows/src/core.c	2019-02-13 15:15:20.389478600 +0900
@@ -89,11 +89,6 @@
 			freenect_stop_video(dev);
 			freenect_stop_depth(dev);
 		}
-		if (dev->usb_audio.device_dead) {
-			FN_ERROR("USB audio marked dead, stopping streams\n");
-			res = -1; // Or something else to tell the user that the device just vanished.
-			freenect_stop_audio(dev);
-		}
 		dev = dev->next;
 	}
 	return res;
diff -ruN libfreenect-0.5.7/src/flags.c libfreenect-0.5.7-windows/src/flags.c
--- libfreenect-0.5.7/src/flags.c	2017-10-26 08:03:11.000000000 +0900
+++ libfreenect-0.5.7-windows/src/flags.c	2019-02-13 15:18:38.523742700 +0900
@@ -60,7 +60,7 @@
 			int ret = write_register(dev, 0x0015, 0x0007);
 			if (ret < 0)
 				return ret;
-			usleep(100000);
+			Sleep(10);
 			return write_register(dev, 0x02EF, 0x0000);
 		}
 		else
@@ -68,7 +68,7 @@
 			int ret = write_register(dev, 0x0015, 0x001E);
 			if (ret < 0)
 				return ret;
-			usleep(100000);
+			Sleep(10);
 			return write_register(dev, 0x02EF, 0x0190);
 		}
 	}
@@ -168,7 +168,7 @@
 	do {
 		actual_len = fnusb_control(&dev->usb_cam, 0xc0, 0, 0, 0, ibuf, 0x200);
 		FN_FLOOD("send_cmd: actual length = %d\n", actual_len);
-		usleep(1);
+		Sleep(1);
 	} while ((actual_len == 0) || (actual_len == 0x200));
 	FN_SPEW("Control reply: %d\n", res);
 	if (actual_len < (int)sizeof(*rhdr)) {
diff -ruN libfreenect-0.5.7/src/usb_libusb10.c libfreenect-0.5.7-windows/src/usb_libusb10.c
--- libfreenect-0.5.7/src/usb_libusb10.c	2017-10-26 08:03:11.000000000 +0900
+++ libfreenect-0.5.7-windows/src/usb_libusb10.c	2019-02-13 15:21:11.438755000 +0900
@@ -91,66 +91,6 @@
 	     || desc.idProduct == PID_K4W_AUDIO ||  desc.idProduct == PID_K4W_AUDIO_ALT_1 || desc.idProduct == PID_K4W_AUDIO_ALT_2);
 }
 
-FN_INTERNAL libusb_device * fnusb_find_sibling_device(freenect_context* ctx, libusb_device* camera,
-                                                      libusb_device** deviceList, int count,
-                                                      short (*predicate)(struct libusb_device_descriptor))
-{
-	if (count <= 0) return NULL;
-
-	const int cameraBusNo = libusb_get_bus_number(camera);
-	if (cameraBusNo < 0) return NULL;
-	const libusb_device * cameraParent = libusb_get_parent(camera);
-
-	int siblingCount_Total = 0;
-	int siblingCount_SameBus = 0;
-	libusb_device* siblingMatch_Single = NULL;
-	libusb_device* siblingMatch_SameBus = NULL;
-
-	int i = 0;
-	for (i = 0; i < count; i++)
-	{
-		libusb_device* currentDevice = deviceList[i];
-
-		struct libusb_device_descriptor desc;
-		int res = libusb_get_device_descriptor(currentDevice, &desc);
-		if (res < 0) {
-			continue;
-		}
-
-		if (!(*predicate)(desc)) {
-			continue;
-		}
-
-		siblingCount_Total++;
-		siblingMatch_Single = (siblingCount_Total == 1) ? currentDevice : NULL;
-
-		if (cameraBusNo != libusb_get_bus_number(currentDevice)){
-			continue;
-		}
-
-		siblingCount_SameBus++;
-		siblingMatch_SameBus = (siblingCount_SameBus == 1) ? currentDevice : NULL;
-
-		if (cameraParent == NULL || cameraParent != libusb_get_parent(currentDevice)) {
-			continue;
-		}
-
-		FN_DEBUG("Found sibling device [same parent]\n");
-		return currentDevice;
-	}
-
-	if (siblingMatch_SameBus != NULL) {
-		FN_DEBUG("Found sibling device [single on same bus]\n");
-		return siblingMatch_SameBus;
-	}
-	if (siblingMatch_Single != NULL) {
-		FN_DEBUG("Found sibling device [single on system]\n");
-		return siblingMatch_Single;
-	}
-
-	return NULL;
-}
-
 FN_INTERNAL int fnusb_list_device_attributes(freenect_context *ctx, struct freenect_device_attributes** attribute_list)
 {
 	*attribute_list = NULL; // initialize some return value in case the user is careless.
@@ -203,40 +143,6 @@
 				continue;
 			}
 
-			// K4W and 1473 don't provide a camera serial; use audio serial instead.
-			const char* const K4W_1473_SERIAL = "0000000000000000";
-			if (strncmp((const char*)serial, K4W_1473_SERIAL, 16) == 0)
-			{
-				libusb_device* audio_device = fnusb_find_sibling_device(ctx, camera_device, devs, count, &fnusb_is_audio);
-				if (audio_device != NULL)
-				{
-					struct libusb_device_descriptor audio_desc;
-					res = libusb_get_device_descriptor(audio_device, &audio_desc);
-					if (res != 0)
-					{
-						FN_WARNING("Failed to get audio serial descriptors of K4W or 1473 device: %d\n", res);
-					}
-					else
-					{
-						libusb_device_handle * audio_handle = NULL;
-						res = libusb_open(audio_device, &audio_handle);
-						if (res != 0)
-						{
-							FN_WARNING("Failed to open audio device for serial of K4W or 1473 device: %d\n", res);
-						}
-						else
-						{
-							res = libusb_get_string_descriptor_ascii(audio_handle, audio_desc.iSerialNumber, serial, 256);
-							libusb_close(audio_handle);
-							if (res != 0)
-							{
-								FN_WARNING("Failed to get audio serial of K4W or 1473 device: %d\n", res);
-							}
-						}
-					}
-				}
-			}
-
 			// Add item to linked list.
 			struct freenect_device_attributes* current_attr = (struct freenect_device_attributes*)malloc(sizeof(struct freenect_device_attributes));
 			memset(current_attr, 0, sizeof(*current_attr));
@@ -307,7 +213,7 @@
 		ret = libusb_detach_kernel_driver(dev->usb_cam.dev, 0);
 		if (ret < 0)
 		{
-			FN_ERROR("Failed to detach camera kernel driver: %s\n", libusb_error_name(ret));
+			FN_ERROR("Failed to detach camera kernel driver: %d\n", ret);
 			libusb_close(dev->usb_cam.dev);
 			dev->usb_cam.dev = NULL;
 			return ret;
@@ -318,7 +224,7 @@
 	ret = libusb_claim_interface(dev->usb_cam.dev, 0);
 	if (ret < 0)
 	{
-		FN_ERROR("Failed to claim camera interface: %s\n", libusb_error_name(ret));
+		FN_ERROR("Failed to claim camera interface: %d\n", ret);
 		libusb_close(dev->usb_cam.dev);
 		dev->usb_cam.dev = NULL;
 		return ret;
@@ -329,7 +235,7 @@
 		ret = libusb_set_interface_alt_setting(dev->usb_cam.dev, 0, 1);
 		if (ret != 0)
 		{
-			FN_ERROR("Failed to set alternate interface #1 for K4W: %s\n", libusb_error_name(ret));
+			FN_ERROR("Failed to set alternate interface #1 for K4W: %d\n", ret);
 			libusb_close(dev->usb_cam.dev);
 			dev->usb_cam.dev = NULL;
 			return ret;
@@ -354,7 +260,6 @@
 
 	// we need to do this as it is possible that the device was not closed properly in a previous session
 	// if we don't do this and the device wasn't closed properly - it can cause infinite hangs on LED and TILT functions
-	libusb_reset_device(audioHandle);
 	libusb_close(audioHandle);
 
 	res = libusb_open(audio, &audioHandle);
@@ -438,10 +343,6 @@
 				ctx->zero_plane_res = 334;
 				dev->device_does_motor_control_with_audio = 1;
 
-				// set the LED for non 1414 devices to keep the camera alive for some systems which get freezes
-				libusb_device * audio = fnusb_find_sibling_device(ctx, camera, devs, count, &fnusb_is_audio);
-				fnusb_keep_alive_led(ctx, audio);
-
 				// for newer devices we need to enable the audio device for motor control
 				// we only do this though if motor has been requested.
 				if ((requested_devices & FREENECT_DEVICE_MOTOR) && (requested_devices & FREENECT_DEVICE_AUDIO) == 0)
@@ -468,218 +369,6 @@
 		goto failure;
 	}
 
-	// FIND MOTOR
-	if (ctx->enabled_subdevices & FREENECT_DEVICE_MOTOR)
-	{
-		libusb_device* motor = fnusb_find_sibling_device(ctx, camera, devs, count, &fnusb_is_motor);
-		if (motor == NULL) {
-			FN_ERROR("Could not find device sibling\n");
-			res = -1;
-			goto failure;
-		}
-
-		struct libusb_device_descriptor desc;
-		res = libusb_get_device_descriptor(motor, &desc);
-		if (res < 0) {
-			FN_ERROR("Could not query device: %d\n", res);
-			goto failure;
-		}
-
-		res = libusb_open(motor, &dev->usb_motor.dev);
-		if (res < 0 || !dev->usb_motor.dev)
-		{
-			FN_ERROR("Could not open device: %d\n", res);
-			dev->usb_motor.dev = NULL;
-			goto failure;
-		}
-
-		res = libusb_claim_interface(dev->usb_motor.dev, 0);
-		if (res < 0) {
-			FN_ERROR("Could not claim interface: %d\n", res);
-			libusb_close(dev->usb_motor.dev);
-			dev->usb_motor.dev = NULL;
-			goto failure;
-		}
-
-		dev->usb_motor.VID = desc.idVendor;
-		dev->usb_motor.PID = desc.idProduct;
-	}
-    
-	// FIND AUDIO
-	if (ctx->enabled_subdevices & FREENECT_DEVICE_AUDIO)
-	{
-		libusb_device* audio = fnusb_find_sibling_device(ctx, camera, devs, count, &fnusb_is_audio);
-		if (audio == NULL) {
-			FN_ERROR("Could not find device sibling\n");
-			res = -1;
-			goto failure;
-		}
-
-		struct libusb_device_descriptor desc;
-		res = libusb_get_device_descriptor(audio, &desc);
-		if (res < 0) {
-			FN_ERROR("Could not query device: %d\n", res);
-			goto failure;
-		}
-
-		res = libusb_open(audio, &dev->usb_audio.dev);
-		if (res < 0 || !dev->usb_audio.dev)
-		{
-			FN_ERROR("Could not open device: %d\n", res);
-			dev->usb_audio.dev = NULL;
-			goto failure;
-		}
-
-		res = libusb_claim_interface(dev->usb_audio.dev, 0);
-		if (res < 0) {
-			FN_ERROR("Could not claim interface: %d\n", res);
-			libusb_close(dev->usb_audio.dev);
-			dev->usb_audio.dev = NULL;
-			goto failure;
-		}
-
-		dev->usb_audio.VID = desc.idVendor;
-		dev->usb_audio.PID = desc.idProduct;
-
-		// Using the device handle that we've claimed, see if this
-		// device has already uploaded firmware (has 2 interfaces).
-		// If not, save the serial number (by reading the appropriate
-		// descriptor), upload the firmware, and then enter a loop
-		// waiting for a device with the same serial number to
-		// reappear.
-		int num_interfaces = fnusb_num_interfaces(&dev->usb_audio);
-		if (num_interfaces >= 2)
-		{
-			if (dev->device_does_motor_control_with_audio)
-			{
-				dev->motor_control_with_audio_enabled = 1;
-			}
-		}
-		else
-		{
-			// Read the serial number from the string descriptor and save it.
-			unsigned char string_desc[256]; // String descriptors are at most 256 bytes
-			res = libusb_get_string_descriptor_ascii(dev->usb_audio.dev, desc.iSerialNumber, string_desc, 256);
-			if (res < 0) {
-				FN_ERROR("Failed to retrieve serial number for audio device in bootloader state\n");
-				goto failure;
-			}
-
-			char* audio_serial = strdup((char*)string_desc);
-
-			FN_SPEW("Uploading firmware to audio device in bootloader state.\n");
-
-			if (desc.idProduct == PID_NUI_AUDIO && ctx->fn_fw_nui_ptr && ctx->fn_fw_nui_size > 0)
-			{
-				FN_SPEW("loading firmware from memory\n");
-				res = upload_firmware_from_memory(&dev->usb_audio, ctx->fn_fw_nui_ptr, ctx->fn_fw_nui_size);
-			}
-			else if (desc.idProduct == PID_K4W_AUDIO && ctx->fn_fw_k4w_ptr && ctx->fn_fw_k4w_size > 0)
-			{
-				FN_SPEW("loading firmware from memory\n");
-				res = upload_firmware_from_memory(&dev->usb_audio, ctx->fn_fw_k4w_ptr, ctx->fn_fw_k4w_size);
-			}
-			else
-			{
-				res = upload_firmware(&dev->usb_audio, "audios.bin");
-			}
-
-			if (res < 0) {
-				FN_ERROR("upload_firmware failed: %d\n", res);
-				free(audio_serial);
-				goto failure;
-			}
-
-			libusb_close(dev->usb_audio.dev);
-			dev->usb_audio.dev = NULL;
-
-			// Wait for the device to reappear.
-			int loops = 0;
-			for (loops = 0; loops < 10; loops++)
-			{
-				FN_SPEW("Try %d: Looking for new audio device matching serial %s\n", loops, audio_serial);
-				libusb_device **new_dev_list;
-				int dev_index;
-				ssize_t num_new_devs = libusb_get_device_list(ctx->usb.ctx, &new_dev_list);
-
-				for (dev_index = 0; dev_index < num_new_devs; ++dev_index)
-				{
-					struct libusb_device_descriptor new_dev_desc;
-					int r;
-					r = libusb_get_device_descriptor (new_dev_list[dev_index], &new_dev_desc);
-					if (r < 0)
-						continue;
-					// If this dev is a Kinect audio device, open device, read serial, and compare.
-					if (fnusb_is_audio(new_dev_desc))
-					{
-						FN_SPEW("Matched VID/PID!\n");
-						libusb_device_handle* new_dev_handle;
-						// Open device
-						r = libusb_open(new_dev_list[dev_index], &new_dev_handle);
-						if (r < 0)
-							continue;
-						// Read serial
-						r = libusb_get_string_descriptor_ascii(new_dev_handle, new_dev_desc.iSerialNumber, string_desc, 256);
-						if (r < 0)
-						{
-							FN_SPEW("Lost new audio device while fetching serial number.\n");
-							libusb_close(new_dev_handle);
-							continue;
-						}
-						// Compare to expected serial
-						if (r == strlen(audio_serial) && strcmp((char*)string_desc, audio_serial) == 0)
-						{
-							// We found it!
-							r = libusb_claim_interface(new_dev_handle, 0);
-							if (r != 0)
-							{
-								// Ouch, found the device but couldn't claim the interface.
-								FN_SPEW("Device with serial %s reappeared but couldn't claim interface 0\n", audio_serial);
-								libusb_close(new_dev_handle);
-								continue;
-							}
-							// Save the device handle.
-							dev->usb_audio.dev = new_dev_handle;
-
-							// Verify that we've actually found a device running the right firmware.
-							num_interfaces = fnusb_num_interfaces(&dev->usb_audio);
-
-							if (num_interfaces >= 2)
-							{
-								if (dev->device_does_motor_control_with_audio)
-								{
-									dev->motor_control_with_audio_enabled = 1;
-								}
-							}
-							else
-							{
-								FN_SPEW("Opened audio with matching serial but too few interfaces.\n");
-								dev->usb_audio.dev = NULL;
-								libusb_close(new_dev_handle);
-								continue;
-							}
-
-							break;
-						}
-						else
-						{
-							FN_SPEW("Got serial %s, expected serial %s\n", (char*)string_desc, audio_serial);
-						}
-					}
-				}
-
-				libusb_free_device_list(new_dev_list, 1);
-				// If we found the right device, break out of this loop.
-				if (dev->usb_audio.dev)
-					break;
-				// Sleep for a second to give the device more time to reenumerate.
-				sleep(1);
-			}
-
-			free(audio_serial);
-		}
-	}
-
 	if ((dev->usb_cam.dev || !(ctx->enabled_subdevices & FREENECT_DEVICE_CAMERA))
    && (dev->usb_motor.dev || !(ctx->enabled_subdevices & FREENECT_DEVICE_MOTOR))
    && (dev->usb_audio.dev || !(ctx->enabled_subdevices & FREENECT_DEVICE_AUDIO)))
@@ -719,7 +408,7 @@
 	return 0;
 }
 
-static void LIBUSB_CALL iso_callback(struct libusb_transfer *xfer)
+static void iso_callback(struct libusb_transfer *xfer)
 {
 	int i;
 	fnusb_isoc_stream *strm = (fnusb_isoc_stream*)xfer->user_data;
@@ -801,19 +490,6 @@
 	}
 }
 
-FN_INTERNAL int fnusb_get_max_iso_packet_size(fnusb_dev *dev, unsigned char endpoint, int default_size)
-{
-	freenect_context *ctx = dev->parent->parent;
-
-	int size = libusb_get_max_iso_packet_size(libusb_get_device(dev->dev), endpoint);
-	if (size <= 0)
-	{
-		FN_WARNING("libusb_get_max_iso_packet_size() returned %d; using default %d\n", size, default_size);
-		size = default_size;
-	}
-	return size;
-}
-
 FN_INTERNAL int fnusb_start_iso(fnusb_dev *dev, fnusb_isoc_stream *strm, fnusb_iso_cb cb, unsigned char endpoint, int xfers, int pkts, int len)
 {
 	freenect_context *ctx = dev->parent->parent;
@@ -902,13 +578,5 @@
 
 FN_INTERNAL int fnusb_num_interfaces(fnusb_dev *dev) {
 	int retval = 0;
-	int res;
-	libusb_device* d = libusb_get_device(dev->dev);
-	struct libusb_config_descriptor* config;
-	res = libusb_get_active_config_descriptor(d, &config);
-	if (res < 0) // Something went wrong
-		return res;
-	retval = config->bNumInterfaces;
-	libusb_free_config_descriptor(config);
 	return retval;
 }
diff -ruN libfreenect-0.5.7/src/usb_libusb10.h libfreenect-0.5.7-windows/src/usb_libusb10.h
--- libfreenect-0.5.7/src/usb_libusb10.h	2017-10-26 08:03:11.000000000 +0900
+++ libfreenect-0.5.7-windows/src/usb_libusb10.h	2019-02-13 15:15:20.405098700 +0900
@@ -87,7 +87,6 @@
 
 int fnusb_start_iso(fnusb_dev *dev, fnusb_isoc_stream *strm, fnusb_iso_cb cb, unsigned char endpoint, int xfers, int pkts, int len);
 int fnusb_stop_iso(fnusb_dev *dev, fnusb_isoc_stream *strm);
-int fnusb_get_max_iso_packet_size(fnusb_dev *dev, unsigned char endpoint, int default_size);
 
 int fnusb_control(fnusb_dev *dev, uint8_t bmRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, uint8_t *data, uint16_t wLength);
 int fnusb_bulk(fnusb_dev *dev, uint8_t endpoint, uint8_t *data, int len, int *transferred);
diff -ruN libfreenect-0.5.7/wrappers/c_sync/CMakeLists.txt libfreenect-0.5.7-windows/wrappers/c_sync/CMakeLists.txt
--- libfreenect-0.5.7/wrappers/c_sync/CMakeLists.txt	2017-10-26 08:03:11.000000000 +0900
+++ libfreenect-0.5.7-windows/wrappers/c_sync/CMakeLists.txt	2019-02-13 15:15:20.405098700 +0900
@@ -1,24 +1,28 @@
 ######################################################################################
 # C Synchronous Interface
 ######################################################################################
+if (WIN32)
+  set_source_files_properties(libfreenect_sync.c PROPERTIES LANGUAGE CXX)
+  set(THREADS_USE_PTHREADS_WIN32 true)
+endif()
 
 set(THREADS_USE_PTHREADS_WIN32 true)
 find_package(Threads REQUIRED)
 include_directories(${THREADS_PTHREADS_INCLUDE_DIR})
 
-add_library (freenect_sync SHARED libfreenect_sync.c)
+# add_library (freenect_sync SHARED libfreenect_sync.c)
 add_library (freenect_sync_static STATIC libfreenect_sync.c)
 set_target_properties (freenect_sync_static PROPERTIES OUTPUT_NAME freenect_sync)
 
-set_target_properties (freenect_sync PROPERTIES
-  VERSION ${PROJECT_VER}
-  SOVERSION ${PROJECT_APIVER})
+# set_target_properties (freenect_sync PROPERTIES
+#  VERSION ${PROJECT_VER}
+#  SOVERSION ${PROJECT_APIVER})
 
-target_link_libraries (freenect_sync freenect ${CMAKE_THREAD_LIBS_INIT})
+# target_link_libraries (freenect_sync freenect ${CMAKE_THREAD_LIBS_INIT})
 target_link_libraries (freenect_sync_static freenect ${CMAKE_THREAD_LIBS_INIT})
 
-install (TARGETS freenect_sync
-  DESTINATION "${PROJECT_LIBRARY_INSTALL_DIR}")
+# install (TARGETS freenect_sync
+#   DESTINATION "${PROJECT_LIBRARY_INSTALL_DIR}")
 install (TARGETS freenect_sync_static
   DESTINATION "${PROJECT_LIBRARY_INSTALL_DIR}")
 install (FILES "libfreenect_sync.h"
