SDR# Control order of RTL SDR enumeration, correction, and lost buffers

Status
Not open for further replies.

AM909

Radio/computer geek
Premium Subscriber
Joined
Dec 10, 2015
Messages
1,105
Location
SoCal
I have two RTL SDRs, one of which I've changed the serial number on with rtl_eeprom so I can select it easily with things like FMP24 without worrying about the enumeration order changing (and so the setup works at all with SDRTrunk :) ).

In SDRSharp ("Airspy" 1807), in the controller window (gear icon on the top strip), the Device listbox shows two entries: "Generic RTL2832U OEM(n)" where n is 0 or 1. Currently, it defaults to dongle 0, which currently is not the one I normally want to use. Is there a way to make it default to #1 or, better, to select the default by serial number (now that I have two different serial numbers)? My reason is that the dongle that it calls #1 is the NooElec TCXO device, which needs a correction of less than +0.3 ppm and is relatively stable, as compared with the #0 device, an RTL-SDR.com v2 that needs about -1.625 ppm to start, and moves around some as it warms up, complicated by SDRSharp using integers for the correction values instead of the device-supported 1/16ths (or is it 1/8ths, I forget?). I can get it to save the correction value, but the NooElec is closer to an integer value (0) and more stable. Is there anything I'm missing, or is it just another thing I have to do every time I start SDR#?

Extra credit: can anyone suggest the best way to implement, while using SDR#, the "extra CPU loading" that DSD+ FL recently added to stop the lost buffer problem that some of us experience (and which worked perfectly for me)? If it's just a matter of writing something to chew some CPU, I can do that in C++ if I have an idea of how much and when it should do it (i.e., what exactly DSD+ FL did).
 

slicerwizard

Member
Joined
Sep 19, 2002
Messages
7,643
Location
Toronto, Ontario
You just need a single process/thread doing continuous integer busywork. Most coding environments include an integer random number generator function - just keep calling it.
 

AM909

Radio/computer geek
Premium Subscriber
Joined
Dec 10, 2015
Messages
1,105
Location
SoCal
You just need a single process/thread doing continuous integer busywork. Most coding environments include an integer random number generator function - just keep calling it.
Add some sleep in the loop to keep it to a reasonable level of contention with other processes, and/or set low priority, or ...?
 

slicerwizard

Member
Joined
Sep 19, 2002
Messages
7,643
Location
Toronto, Ontario
I'd go with lowering priority. Should be easy to determine what works - just run FMP24 with its busywork disabled, start FMP24's I/Q dropout test, then see if your process stops the dropouts.
 

Unitrunker2

Member
Premium Subscriber
Joined
Oct 28, 2017
Messages
219
SDRSharp using integers for the correction values instead of the device-supported 1/16ths (or is it 1/8ths, I forget?). I can get it to save the correction value, but the NooElec is closer to an integer value (0) and more stable.
The warp register on the RTL2832U resolves to one sixteenth parts per million. However, not all SDR programs bother setting the register since you can more precisely control warp by "twisting" the center frequency.

Is there anything I'm missing, or is it just another thing I have to do every time I start SDR#?
Create multiple shortcuts with different working folders. You may still need to select the device but not have to remember the warp value.
 
Status
Not open for further replies.
Top