Pārlūkot izejas kodu

lib: reset device if needed

This improves the situation on hosts with flaky host
controllers like the Raspberry Pi and the WR703N.

Signed-off-by: Steve Markgraf <steve@steve-m.de>
Steve Markgraf 12 gadi atpakaļ
vecāks
revīzija
7840ec21d3
1 mainītis faili ar 6 papildinājumiem un 0 dzēšanām
  1. 6 0
      src/librtlsdr.c

+ 6 - 0
src/librtlsdr.c

@@ -1344,6 +1344,12 @@ int rtlsdr_open(rtlsdr_dev_t **out_dev, uint32_t index)
 
 	dev->rtl_xtal = DEF_RTL_XTAL_FREQ;
 
+	/* perform a dummy write, if it fails, reset the device */
+	if (rtlsdr_write_reg(dev, USBB, USB_SYSCTL, 0x09, 1) < 0) {
+		fprintf(stderr, "Resetting device...\n");
+		libusb_reset_device(dev->devh);
+	}
+
 	rtlsdr_init_baseband(dev);
 
 	/* Probe tuners */