forked from sdr/rtl-sdr
1
0
Fork 0
rtl-sdr/debian/patches/handle-usb-bulk-transfer-ti...

35 lines
1.1 KiB
Diff

Index: rtl-sdr-0.6/src/librtlsdr.c
===================================================================
--- rtl-sdr-0.6.orig/src/librtlsdr.c
+++ rtl-sdr-0.6/src/librtlsdr.c
@@ -365,7 +365,7 @@ static rtlsdr_dongle_t known_devices[] =
#define CTRL_IN (LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_IN)
#define CTRL_OUT (LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_OUT)
#define CTRL_TIMEOUT 300
-#define BULK_TIMEOUT 0
+#define BULK_TIMEOUT 10000
#define EEPROM_ADDR 0xa0
@@ -1654,6 +1654,10 @@ int rtlsdr_close(rtlsdr_dev_t *dev)
rtlsdr_deinit_baseband(dev);
}
+ else {
+ fprintf(stderr, "Resetting device...\n");
+ libusb_reset_device(dev->devh);
+ }
libusb_release_interface(dev->devh, 0);
@@ -1706,7 +1710,8 @@ static void LIBUSB_CALL _libusb_callback
dev->xfer_errors = 0;
} else if (LIBUSB_TRANSFER_CANCELLED != xfer->status) {
#ifndef _WIN32
- if (LIBUSB_TRANSFER_ERROR == xfer->status)
+ if (LIBUSB_TRANSFER_ERROR == xfer->status ||
+ LIBUSB_TRANSFER_TIMED_OUT == xfer->status)
dev->xfer_errors++;
if (dev->xfer_errors >= dev->xfer_buf_num ||