Page 1 of 1

SDRplay emulating an rtlsdr device

Posted: Fri Oct 05, 2018 2:48 pm
by janSenior
While it is obvious that the - various - SDRplay RSP devices are superior to rtlsdr dabsticks, one must admit that the amount of software for the dabsticks is pretty large. Last year I added SDRplay support to programs like dump-1090 and acarsdec (both to "listen" to plane traffic), however, the changes are - as far as I know - not accepted by the authors of the programs, so from a maintenance point of view that is not very effective.

Therefore I was/am experimenting with a "bridge", a library that shows itself as an rtlsdr osmocom library to the application, and translates the
calls to the various API functions to calls to the SDRplay API. Of course the mapping is not 100%, functions like setting or reading the eeprom are not supported, and there are more. Obviously one looses precision, the SDRplay is 12 - 14 bits, the dabsticks 8 bits. However, to me the emulated library seems a good device to look at various programs and see whether or not in the longer run SDRplay specific versions can/should be made.
The highly experimental subset implementation runs successful with my own software (qt-dab, sdr-j-fm, sdr-j-spectrum) and was tested (with positive result) with the original versions of dump1090, acarsdec, rtl_433 and aiswaitcher.

One of the issues I am struggling with is the gain setting. The rtlsdr library has a function that writes the gain values -in tenth of dB - to a user provided
array, functionality often used at the start of a program to set up a table of valid gain values. However, for the RSP devices, the gain table (better: gain reduction table) depends on both the device (i.e. RSP1, II 1A or duo) as well as on the frequency. Current approach is a kind of common denominator set of "gain" values with different tables of lnaState/GRdB values for different devices, ignoring the different frequencies issues

I am working under Linux . Although being completely ignorant about Windows (and hoping to stay that way), I'll try to create a DLL at some point in time.

It would be really helpful to get some thoughts on the issue of the gain handling as well as suggestions for other (Linux) programs that could be tested with the emulated rtlsdr library.
Of course, if there is interest I am willing to share the code.