AGC control

what time constants does kiwirecorder uses for AGC when in IQ mode?


  • John... anyone.. ?
  • jksjks
    edited August 2020
    Currently, when you connect with a browser, the default AGC threshold is -130 dB. In the past this default was -100 dB and there was disagreement about this choice and discussion about whether it needed to be automatically adjusted depending on passband etc. Remember that certain values in the UI (including the AGC values) are saved across connections via browser cookies. So what you see in the AGC tab of the control panel may not be the true default.

    Kiwiclient (kiwirecorder et al) allows you to turn AGC on and use a fixed set of parameter values (set in the Python code) or turn AGC off and set a manual gain, all via the --agc-gain (or -g) [gain] argument. The fixed values as defined in the file kiwiclient/kiwi/ are:
        def set_agc(self, on=False, hang=False, thresh=-100, slope=6, decay=1000, gain=50):
            self._send_message('SET agc=%d hang=%d thresh=%d slope=%d decay=%d manGain=%d' % (on, hang, thresh, slope, decay, gain))
    So Kiwiclient is using -100 dB as the threshold which is at odds with the current browser default. Although not with what some people may have it set to. There is for example no Kiwiclient --agc-threshold argument, but it would be trivial to add. If you peruse the code you will see other references to "thresholds" but those are for NBFM squelch and RSSI thresholds.
  • I think you were interested in the time constant. Here's what I measure for a falling/rising edge of a longish, very square S9 pulse in AM, 10 kHz bw, X axis is seconds

    It looks like things are tailing for a few ten's of ms, not certain that this relates directly to your question exactly though.
  • with both of the answer above, I have what I need... Thanks to both of you.
  • edited September 2020
    how do the AGC timing values that a standalone kiwi uses compare to those of kiwiclient

    Found it

    var default_agc = 1;
    var default_hang = 0;
    var default_manGain = 50;
    var default_thresh = -130;
    var default_slope = 6;
    var default_decay = 1000;
  • The relevant line in kiwiclient/kiwi/ is
    def set_agc(self, on=False, hang=False, thresh=-100, slope=6, decay=1000, gain=50):

    So set_agc(True) corresponds to parameters
    on=True, hang=False, thresh=-100, slope=6, decay=1000, gain=50
Sign In or Register to comment.