RTLSDR with E4000 Tuner - Gain Stages not detected correctly resulting in deaf station.

RTLSDRs with E4000 tuners are not having their gain stages detected correctly. This may be a version mismatch issue, or some other problem in SoapyRTLSDR. This is result in stations using RTLSDRs with E4000 tuners being deaf due to incorrect gain settings.

An example SoapySDRProbe output is below:

######################################################

Soapy SDR -- the SDR abstraction library

######################################################

Probe device [INFO] [UHD] linux; GNU C++ version 8.3.0; Boost_106700; UHD_3.15.0.0-2

RtApiAlsa::getDeviceInfo: snd_pcm_open error for device (default), No such file or directory.

Found Elonics E4000 tuner


-- Device identification

driver=RTLSDR hardware=E4000 origin=https://github.com/pothosware/SoapyRTLSDR remote:version=0.5.1-unknown rtl=0


-- Peripheral summary

Channels: 1 Rx, 0 Tx Timestamps: NO Other Settings: * Direct Sampling - RTL-SDR Direct Sampling Mode [key=direct_samp, default=0, type=string, options=(0, 1, 2)] * Offset Tune - RTL-SDR Offset Tuning Mode [key=offset_tune, default=false, type=bool] * I/Q Swap - RTL-SDR I/Q Swap Mode [key=iq_swap, default=false, type=bool] * Digital AGC - RTL-SDR digital AGC Mode [key=digital_agc, default=false, type=bool]


-- RX Channel 0

Full-duplex: YES Supports AGC: YES Stream formats: CS8, CS16, CF32 Native format: CS8 [full-scale=128] Stream args: * Buffer Size - Number of bytes per buffer, multiples of 512 only. [key=bufflen, units=bytes, default=262144, type=int] * Ring buffers - Number of buffers in the ring. [key=buffers, units=buffers, default=15, type=int] * Async buffers - Number of async usb buffers (advanced). [key=asyncBuffs, units=buffers, default=0, type=int] * Remote Format - The stream format used on the remote device. [key=remote:format, default=CS8, type=string, options=(CS8, CS16, CF32)] * Remote Scale - The factor used to scale remote samples to full-scale floats. [key=remote:scale, default=128.000000, type=float] * Remote MTU - The maximum datagram transfer size in bytes. [key=remote:mtu, units=bytes, default=1500, type=int] * Remote Window - The size of the kernel socket buffer in bytes. [key=remote:window, units=bytes, default=44040192, type=int] * Remote Priority - Specify the scheduling priority of the server forwarding threads. [key=remote:priority, default=0.500000, type=float, range=[-1, 1]] * Remote Protocol - Specify the transport protocol for the remote stream. [key=remote:prot, default=udp, type=string, options=(udp, tcp, none)] Antennas: RX Full gain range: [0, 0] dB TUNER gain range: [0, 0] dB Full freq range: [23.999, 1764] MHz RF freq range: [24, 1764] MHz CORR freq range: [-0.001, 0.001] MHz Sample rates: 0.25, 1.024, 1.536, 1.792, 1.92, 2.048, 2.16, 2.56, 2.88, 3.2 MSps

You can see the TUNER gain range is [0, 0]. According to the source in SoapyRTLSDR, there should actually be 6x IF gain stages exposed, along with the TUNER gain. These are not being exposed, result in the gains all being set to zero, resulting in a deaf station.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information