forked from sdr/rtl-sdr
35 lines
1.1 KiB
Diff
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 ||
|