In case it helps, the changes in this commit helped me get AGC working using RFNoC/GNURadio when I couldn't find the right hooks to do it via the API.
https://github.com/tomberek/uhd/commit/c491f3e0f44ea457003852883ff742551a57e785#diff-dff9438dbbf09c43d9ccbf24a04e2cb6 On Wed, Mar 28, 2018 at 4:35 PM Julian Arnold via USRP-users < usrp-users@lists.ettus.com> wrote: > Hey, > > > Is your signal very narrowband? > > Also, keep in mind, that the AGC defaults to the 'slow' mode when enabled. > This mode is intended for signals like FM broadcast. So if your signal is > coming in bursts, the AGC won't be able to handle it properly. > > Cheers, > Julian > > Marcus D. Leech via USRP-users schrieb am 28.03.2018 22:16: > > > On 03/28/2018 01:50 PM, Ahmed Hamza wrote: > > > >> > >> Hi Marcus, > >> > >> > >> Thank you for your prompt response. > >> > >> > >> I can change the TX power, kindly find attached the received "I" > channel in case of TX power -25 dbm and -45 dbm. Also, there is about 10 dB > attenuation before the Ettus RX. As you can see, there are many samples > that goes to +/- 2048 and I believe that means ADC is overloaded. It is > mentioned in the reference manual of Ad9364: > >> > >> "When the ADC is overloaded, the error between its samples and the > input signal will cause the ADC to output more samples with values of +4 or > −4 as it struggles to track the input signal.", is there anything else I > can try? Note: Disabling AGC and changing gains gives reasonable outputs > (i.e., amplitude of samples change with changing the applied gain without > samples going to +/- 2048). But I need to use AGC because I want to have > "over the air" testing instead of cable testing. > >> > >> > >> Also, I tried to use --args type=b200 but it did not help. Is it > possible after loading and executing the script top_block_py (i.e., while > USB port is used to stream I/Q) to send commands for the board to get > sample rate, carrier freq., gains,....? > >> > >> > >> Thanks again, > >> > >> > >> Best Regards, > >> > >> Ahmed > >> > > You can insert calls to API elements like get_rx_gain, from with a > flow-graph. However, for flow-graphs generated by GRC, it's a bit > tricky--you'll have to > > add code after GRC has generated its output. > > > > See the section of the Gnu Radio manual here: > > > > https://gnuradio.org/doc/doxygen/group__uhd__blk.html < > https://gnuradio.org/doc/doxygen/group__uhd__blk.html> > > > > Is your signal very narrowband? The hardware AGC will be looking at the > entire input bandwidth to the ADC, which is large. Which means that a > narrowband > > signal doesn't really "drive" the AGC very hard, so it gets "pinned" > at max gain. This is why hardware AGC is generally not super-useful. > > > > There's nothing inherently incompatible between manual, fixed, gain, and > doing over-the-air tests. It is typically the case in the DSP world that > the > > DSP flow handles AGC-like functions, because the DSP flow has a MUCH > better "view" of the intended signal bandwidth than the front-end of > > the hardware. > > > > > >> On Wed, Mar 28, 2018 at 12:29 PM, Marcus D. Leech via USRP-users < > usrp-users@lists.ettus.com <mailto:usrp-users@lists.ettus.com> > wrote: > >>> > >>> > >>> On 03/28/2018 11:32 AM, Ahmed Hamza via USRP-users wrote: > >>> > >>>> > >>>> Hi, > >>>> > >>>> > >>>> I am using Ettus B200 mini, to receive signal at carrier frequency > 725 MHz and the bandwidth is 6 MHz. The sampling rate is set to 13.28 MHz. > >>>> > >>>> > >>>> I enabled AGC by calling set_rx_agc() from set_gain inside > /usrp_source_impl.cc. > >>>> > >>>> The thing is that I am receiving a signal with a maximum that reach > +/- 2048 frequently so I believe that the ADC is overloaded. The test is > using cable so it is supposed that there is no out of band interference. > >>>> > >>>> > >>>> My questions are: > >>>> > >>>> 1) Do you know what may be causing this behavior and what should I > try? > >>>> > >>>> 2) Where can I find the default values that Ettus B200 mini used for > Ad9364 registers? > >>>> > >>>> 3) Is there a way to read and/or write values of Ad9364 registers? > >>>> > >>>> 4) There are some get functions provided by Ettus, could this get > functions used in run time (I mean after loading the script)? For example, > if I do, uhd_usrp_probe --string > /mboards/0/dboards/A/rx_frontends/A/gain/agc/mode/value after loading the > script > >>>> > >>>> I get: linux; GNU C++ version 5.3.1 20151219; Boost_105800; > UHD_003.009.002-0-unknown > >>>> > >>>> Error: LookupError: KeyError: No devices found for -----> > >>>> > >>>> Empty Device Address > >>>> > >>>> > >>>> Thanks, > >>>> > >>>> > >>>> Best Regards, > >>>> > >>>> Ahmed > >>>> > >>>> > >>> Reduce the power of the device that is sending the signal--use > attenuators if you have to. > >>> > >>> uhd_usrp_probe needs a device address: use --args type=b200 > >>> > >>> > >>> _______________________________________________ > >>> USRP-users mailing list > >>> USRP-users@lists.ettus.com <mailto:USRP-users@lists.ettus.com> > >>> http://lists.ettus.com/ < > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com> > mailman/listinfo/usrp-users_lists.ettus.com > >>> > >> > > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com > -- Maj Tom Bereknyei Defense Digital Service t...@dds.mil
_______________________________________________ USRP-users mailing list USRP-users@lists.ettus.com http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com