diff options
| author | Steve Markgraf <steve@steve-m.de> | 2013-01-04 21:26:43 +0100 |
|---|---|---|
| committer | Steve Markgraf <steve@steve-m.de> | 2013-01-04 21:26:43 +0100 |
| commit | 7840ec21d3c9a4a39ca6bbb3567e14caeccdb9f5 (patch) | |
| tree | bdcb5cd620ecdf6d5e538ff68a6c55cb7ced10c0 | |
| parent | 4b057fea0f05ea8aa8e963ea2fcfc23f2f349477 (diff) | |
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>
| -rw-r--r-- | src/librtlsdr.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/librtlsdr.c b/src/librtlsdr.c index cb1f3bc..50c536a 100644 --- a/src/librtlsdr.c +++ b/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 */ |
