--- /dev/null
+The sigrok build references an older libusb1 library version, which
+addresses two specific aspects:
+
+ - Presence of an "event abstraction" is desired. Which once was
+ available as a branch on top of 1.0.20-rc3, but has gone away
+ in the meantime and got archived locally. -- Library versions
+ 1.0.24 and above may provide that feature under the common API
+ but are yet to get verified.
+
+ - For performance reasons the RAW_IO feature is enabled. libusb1
+ mainline may provide such an approach later (automatically, after
+ checking more conditions for improved reliability), but does not
+ in versions up to and including 1.0.25 yet.
+
+Manipulation of the libusb1 configuration in the MXE setup avoids the
+necessity for a custom libusb1 build as a step in the sigrok procedure.
+
+Ideally the sigrok build would use libusb1 version 1.0.25+ to benefit
+from the many portability and robustness and feature set improvements.
+Regardless of which libusb1 version ships with mainline MXE. That is
+why this file is called "libusb1_upgrade.patch". Until then it patches
+the local archive of the older library version.
+
+diff --git a/src/libusb1.mk b/src/libusb1.mk
+index ab01bf69..53aed36e 100644
+--- a/src/libusb1.mk
++++ b/src/libusb1.mk
+@@ -4,11 +4,11 @@ PKG := libusb1
+ $(PKG)_WEBSITE := https://libusb.info/
+ $(PKG)_DESCR := LibUsb-1.0
+ $(PKG)_IGNORE :=
+-$(PKG)_VERSION := 1.0.24
+-$(PKG)_CHECKSUM := 7efd2685f7b327326dcfb85cee426d9b871fd70e22caa15bb68d595ce2a2b12a
+-$(PKG)_SUBDIR := libusb-$($(PKG)_VERSION)
+-$(PKG)_FILE := libusb-$($(PKG)_VERSION).tar.bz2
+-$(PKG)_URL := https://$(SOURCEFORGE_MIRROR)/project/libusb/libusb-1.0/libusb-$($(PKG)_VERSION)/$($(PKG)_FILE)
++$(PKG)_VERSION := 1.0.20-rc3-event-abstraction-v4
++$(PKG)_CHECKSUM := 58fee7f3f05fda209d14c55763df36ab86028bd9ab82c9bb74f1d5ab3208bcfd
++$(PKG)_SUBDIR := libusb-event-abstraction-v4
++$(PKG)_FILE := libusb-event-abstraction-v4.zip
++$(PKG)_URL := https://github.com/uwehermann/libusb/archive/event-abstraction-v4.zip
+ $(PKG)_DEPS := cc
+
+ define $(PKG)_UPDATE
+@@ -19,7 +19,7 @@ define $(PKG)_UPDATE
+ endef
+
+ define $(PKG)_BUILD
+- cd '$(1)' && ./configure \
++ cd '$(1)' && autoreconf -i && ./configure \
+ $(MXE_CONFIGURE_OPTS) \
+ CFLAGS=-D_WIN32_WINNT=0x0500
+ $(MAKE) -C '$(1)' -j '$(JOBS)' install
+diff --git a/src/libusb1-1-fixes.patch b/src/libusb1-1-fixes.patch
+new file mode 100644
+index 00000000..6cdeb0c4
+--- /dev/null
++++ b/src/libusb1-1-fixes.patch
+@@ -0,0 +1,31 @@
++From d4f7a49d77bd8f4ac871a999fc9ec898cb22b8c3 Mon Sep 17 00:00:00 2001
++From: Vlad Ivanov <vlad-mbx@ya.ru>
++Date: Tue, 9 Feb 2016 10:35:23 +0300
++Subject: [PATCH] windows_usb: enable RAW_IO policy by default
++
++libusb should set RAW_IO policy unconditionally because it
++implements the buffer management itself.
++
++Signed-off-by: Vlad Ivanov <vlad-mbx@ya.ru>
++---
++ libusb/os/windows_usb.c | 4 ++++
++ 1 file changed, 4 insertions(+)
++
++diff --git a/libusb/os/windows_usb.c b/libusb/os/windows_usb.c
++index 6640ad5..12fdab0 100644
++--- a/libusb/os/windows_usb.c
+++++ b/libusb/os/windows_usb.c
++@@ -2890,6 +2890,10 @@ static int winusbx_configure_endpoints(int sub_api, struct libusb_device_handle
++ AUTO_CLEAR_STALL, sizeof(UCHAR), &policy)) {
++ usbi_dbg("failed to enable AUTO_CLEAR_STALL for endpoint %02X", endpoint_address);
++ }
+++ if (!WinUSBX[sub_api].SetPipePolicy(winusb_handle, endpoint_address,
+++ RAW_IO, sizeof(UCHAR), &policy)) {
+++ usbi_dbg("failed to enable RAW_IO for endpoint %02X", endpoint_address);
+++ }
++ }
++
++ return LIBUSB_SUCCESS;
++--
++2.5.0
++