Page 1 of 2

ExtIO_RTLSDR_u8.dll with HDSDR 2.76 + dongle

Posted: Thu Jun 20, 2019 4:31 am
by richsch
Trying to get ExtIO_RTLSDR_u8.dll going with HDSDR 2.76 and an early SDR dongle. Copied it and rtlsdr.dll into the HDSDR dir. When start HDSDR and select the _u8 dll, I get this message

[TRACE] ExtIO_RTLSDR# - ExtIO plugin for RTLSDR (c)2019 alex_m
[TRACE]
[TRACE] InitHW
[ERROR] DllNotFoundException: Unable to load DLL 'rtlsdr': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

However, rtlsdr.dll is right there in the HSDSR dir. rebooted, same
Did I miss a step somewhere?
Rich

Re: ExtIO_RTLSDR_u8.dll with HDSDR 2.76 + dongle

Posted: Thu Jun 20, 2019 4:37 am
by richsch
That was on a windows 10 machine
used the 1.1.1.5 zip

Re: ExtIO_RTLSDR_u8.dll with HDSDR 2.76 + dongle

Posted: Thu Jun 20, 2019 8:13 pm
by 19ac728
Do you run zadig for the rtl drivers?
First run zadig.

Re: ExtIO_RTLSDR_u8.dll with HDSDR 2.76 + dongle

Posted: Thu Jun 20, 2019 8:39 pm
by alanzfq
I had the same message with HDSDR v2.8

(If Zadig has not been used HDSDR just says no RTL found.)

Alan

Re: ExtIO_RTLSDR_u8.dll with HDSDR 2.76 + dongle

Posted: Tue Jun 25, 2019 8:17 pm
by richsch
Yes, zadig installed...tried both bulk if 0 and usb receiver if 0...both work fine with extio_rtl2832.dll

Re: ExtIO_RTLSDR_u8.dll with HDSDR 2.76 + dongle

Posted: Sun Jun 30, 2019 2:08 am
by qrp
richsch wrote:
Thu Jun 20, 2019 4:31 am
[ERROR] DllNotFoundException: Unable to load DLL 'rtlsdr': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

However, rtlsdr.dll is right there in the HSDSR dir. rebooted, same
Did I miss a step somewhere?
Rich
This is because I compiled rtlsdr.dll with dynamic runtime. It requires Visual C runtime libraries, so there is need to install vcredist package.

I recompiled rtlsdr.dll with static linking, so now it doesn't requires external libraries. Try this one.
This is the same ExtIO_RTLSDR# v1.1.1.5, but rtlsdr.dll is recompiled to work on machines, where Visual C runtime is not installed.

Re: ExtIO_RTLSDR_u8.dll with HDSDR 2.76 + dongle

Posted: Tue Jul 09, 2019 5:12 am
by richsch
Yes, finds the file now. tnx
I am noticing that it looks like the noise floor has moved up almost 30db compared to normal levels using the RTL2832 extio. This for either HF direct sampling setting Q or I, and RTL AGC not selected and Tuner Gain at min when direct sampling is disabled. 2.4 G sample rate
rich

Re: ExtIO_RTLSDR_u8.dll with HDSDR 2.76 + dongle

Posted: Wed Jul 10, 2019 6:25 am
by qrp
richsch wrote:
Tue Jul 09, 2019 5:12 am
I am noticing that it looks like the noise floor has moved up almost 30db compared to normal levels using the RTL2832 extio.
No, noise floor is exactly the same. The difference is that ExtIO_RTLSDR_u8 uses float 32-bit sample format, while classic RTL2832 uses byte 8-bit format. Software can show different absolute levels for different formats. But this is not noise floor shift, this is just a shift of displaying grid. The spectrum is remains the same.

For example RTL2832 may have -100 dB noise floor with -70 dB signal level.
With ExtIO_RTLSDR_u8 it will be -70 dB noise floor with -40 dB signal level.
SNR and spectrum shape is exactly the same for both cases.
The difference is that you're need to add some constant to all values on the grid labels.
But the spectrum remains the same, it just drawn with different labels and that's it.

This is calibration related issue.
Just calibrate level in your software for RTL2832 and for ExtIO_RTLSDR_u8 and then both will show exactly the same noise floor and signal levels.

I tried to add scale to get the same levels for different sample formats, but it turns that this is wrong way, because you will not be able to control when your ADC is near to max value. So, now it passing 32-bit float format with no scale. Such way allows to see when ADC is near overload level. In the current version (1.1.1.6) 0 dBFS means max allowed level of the signal on ADC input. If you exceed 0 dBFS level, ADC will be overloaded and you will get distortions.

ExtIO_RTLSDR_u8 uses 32-bit float sample format in order to support DC removal filter. Because, if you convert sample back to 8-bit format after DC-removal filter, you will lose precision. So, ExtIO_RTLSDR_u8 just passing data to software in 32-bit float format as is, with no converting it back to lossy 8-bit format.

When DC removal filter is disabled it is possible to use 8-bit sample format, but unfortunately ExtIO API doesn't support several formats simultaneously (the format should be selected just once at startup time). So I selected more precise 32-bit float format, it allows to enable DC-removal filter at ExtIO level, it helps when SDR software doesn't have such filter.

PS: actually u8 in the DLL name means "unsigned 8 bit" format :D This is because I have different ExtIO versions for different devices with different sample format and using such notation to differ each other. But later I decided to add DC-removal filter for RTLSDR version, because UNOsdr don't have such filter for ExtIO. And this is the reason, why I changed format to 32-bit float (8-bit format doesn't allows filtering with no precision loss). But the name remains the same u8 from old times. :)

Re: ExtIO_RTLSDR_u8.dll with HDSDR 2.76 + dongle

Posted: Thu Aug 08, 2019 8:56 pm
by richsch
Tnx much for the info and explanation, a few things make more sense now. Will check out HDSDR and see if can add aconstant. Either way, everything is relative regarding the sig levels with these apps anyway .
Am sure other readers will appreciate this info as well, tnx.
rich

Re: ExtIO_RTLSDR_u8.dll with HDSDR 2.76 + dongle

Posted: Thu Aug 08, 2019 10:35 pm
by richsch
using 1.1.1.7

I'm seeing the input signals ok in Auto (direct sampling disabled) but not when either Q or I is selected, only the noise floor. I'm using a local 6 meter beacon as my signal reference. 2.4 Mhz sample. Signals seen in Auto identical (except for level) as those seen with the RTL2832 extio dll. Not the same spectrum. No chance of a frequency shift I assume.

rich