I did some more detailed investigations regarding setting the gain reductions.
Setup: SDRplay connected to Rohde und Schwarz Signal generator SML, frequency 25MHz, level -80dBm.
gqrx with SoapySDRPlay driver from git master and latest SDRplay API on Kubuntu 14.04.
Observation:
When the LNA threshold is > 24 dB, the gain reduction is working smoothly, and at the LNA threshold the noise floor goes down when the LNA is switched in, the overall gain stays constant (resp. changes 1 step).
The following appears in the log when moving through the threshold (LNA threshold = 27dB):
Code: Select all
mir_sdr_SetGr: GR->28[4,0,0,24] gRset->0xC4 DCCALmode=4 DCCALspd=1 GrToggle->1
mir_sdr_SetGrParams: gRmin->0 lnaGrThresh->27
mir_sdr_ReadPacket: Gain update confirmed: Gr=28dB GrToggle=1 gset=0xc5
mir_sdr_ResetUpdateFlags: resetGainUpdate=1 resetRfUpdate=0 resetFsUpdate=0
mir_sdr_SetGr: GR->27[3,0,0,24] gRset->0xC3 DCCALmode=4 DCCALspd=1 GrToggle->1
mir_sdr_SetGrParams: gRmin->0 lnaGrThresh->27
mir_sdr_ReadPacket: Gain update confirmed: Gr=27dB GrToggle=1 gset=0xc3
mir_sdr_ResetUpdateFlags: resetGainUpdate=1 resetRfUpdate=0 resetFsUpdate=0
mir_sdr_SetGr: GR->26[26,0,0,0] gRset->0x1A DCCALmode=4 DCCALspd=1 GrToggle->1
mir_sdr_SetGrParams: gRmin->0 lnaGrThresh->27
Now I reduce the LNA threshold to 20 dB and move through the tuner gain reduction. At gain reduction 23dB, the signal and noise floor fall down until GR=19dB where signal and noise floor are back to normal. Reason is that in this range the API tries to set a negative gain reduction which does not work. Log:
Code: Select all
mir_sdr_SetGr: GR->24[0,0,0,24] gRset->0xC0 DCCALmode=4 DCCALspd=1 GrToggle->1
mir_sdr_SetGrParams: gRmin->0 lnaGrThresh->20
mir_sdr_ReadPacket: Gain update confirmed: Gr=24dB GrToggle=1 gset=0xc1
mir_sdr_ResetUpdateFlags: resetGainUpdate=1 resetRfUpdate=0 resetFsUpdate=0
mir_sdr_SetGr: GR->23[-1,0,0,24] gRset->0xFFFFFFFF DCCALmode=4 DCCALspd=1 GrToggle->1
mir_sdr_SetGrParams: gRmin->0 lnaGrThresh->20
mir_sdr_ReadPacket: Gain update confirmed: Gr=23dB GrToggle=1 gset=0x3ff
mir_sdr_ResetUpdateFlags: resetGainUpdate=1 resetRfUpdate=0 resetFsUpdate=0
mir_sdr_SetGr: GR->22[-2,0,0,24] gRset->0xFFFFFFFE DCCALmode=4 DCCALspd=1 GrToggle->1
mir_sdr_SetGrParams: gRmin->0 lnaGrThresh->20
mir_sdr_ReadPacket: Gain update confirmed: Gr=22dB GrToggle=1 gset=0x3ff
mir_sdr_ResetUpdateFlags: resetGainUpdate=1 resetRfUpdate=0 resetFsUpdate=0
mir_sdr_SetGr: GR->21[-3,0,0,24] gRset->0xFFFFFFFD DCCALmode=4 DCCALspd=1 GrToggle->1
mir_sdr_SetGrParams: gRmin->0 lnaGrThresh->20
mir_sdr_ReadPacket: Gain update confirmed: Gr=21dB GrToggle=1 gset=0x3fd
mir_sdr_ResetUpdateFlags: resetGainUpdate=1 resetRfUpdate=0 resetFsUpdate=0
mir_sdr_SetGr: GR->20[-4,0,0,24] gRset->0xFFFFFFFC DCCALmode=4 DCCALspd=1 GrToggle->1
mir_sdr_SetGrParams: gRmin->0 lnaGrThresh->20
mir_sdr_ReadPacket: Gain update confirmed: Gr=20dB GrToggle=1 gset=0x3fd
mir_sdr_ResetUpdateFlags: resetGainUpdate=1 resetRfUpdate=0 resetFsUpdate=0
mir_sdr_SetGr: GR->19[19,0,0,0] gRset->0x13 DCCALmode=4 DCCALspd=1 GrToggle->1
mir_sdr_SetGrParams: gRmin->0 lnaGrThresh->20
mir_sdr_ReadPacket: Gain update confirmed: Gr=19dB GrToggle=1 gset=0x13
mir_sdr_ResetUpdateFlags: resetGainUpdate=1 resetRfUpdate=0 resetFsUpdate=0
Conclusion: LNA threshold < 24 dB should not be used.
I did not test other frequency ranges, but I expect a similar behavior.