Maria,

that sounds about right!
However, to make absolutely sure GNU Radio picks up the modified libuhd you could add a print statement somewhere in your UHD code.
You could also compare your UHD install prefix to the path gr-uhd
uses for linking libuhd.

Below is the patch I used for my tests:

diff --git a/host/lib/usrp/common/ad9361_driver/ad9361_device.cpp b/host/lib/usrp/common/ad9361_driver/ad9361_device.cpp
index 9e088871d..0e5bc86c5 100644
--- a/host/lib/usrp/common/ad9361_driver/ad9361_device.cpp
+++ b/host/lib/usrp/common/ad9361_driver/ad9361_device.cpp
@@ -1089,7 +1089,7 @@ void ad9361_device_t::_setup_gain_control(bool agc)
         _io_iface->poke8(0x0FD, 0x4C); // Max Full/LMT Gain Table Index
_io_iface->poke8(0x0FE, 0x44); // Decr Step Size, Peak Overload Time
         _io_iface->poke8(0x100, 0x6F); // Max Digital Gain
-        _io_iface->poke8(0x101, 0x0A); // Max Digital Gain
+        _io_iface->poke8(0x101, 0x02); // Max Digital Gain
         _io_iface->poke8(0x103, 0x08); // Max Digital Gain
         _io_iface->poke8(0x104, 0x2F); // ADC Small Overload Threshold
         _io_iface->poke8(0x105, 0x3A); // ADC Large Overload Threshold
@@ -1098,14 +1098,14 @@ void ad9361_device_t::_setup_gain_control(bool agc)
         _io_iface->poke8(0x108, 0x31);
         _io_iface->poke8(0x111, 0x0A);
         _io_iface->poke8(0x11A, 0x1C);
-        _io_iface->poke8(0x120, 0x0C);
+        _io_iface->poke8(0x120, 0x04);
         _io_iface->poke8(0x121, 0x44);
         _io_iface->poke8(0x122, 0x44);
         _io_iface->poke8(0x123, 0x11);
         _io_iface->poke8(0x124, 0xF5);
         _io_iface->poke8(0x125, 0x3B);
         _io_iface->poke8(0x128, 0x03);
-        _io_iface->poke8(0x129, 0x56);
+        _io_iface->poke8(0x129, 0x11);
         _io_iface->poke8(0x12A, 0x22);
     } else {
         _io_iface->poke8(0x0FA, 0xE0); // Gain Control Mode Select


Cheers,
Julian

On 3/24/21 9:59 AM, Maria Muñoz wrote:
Hi Julian,

I have the chance to test the AGC with a B210 and perform the same graph as you send me but I am unable to see what you saw so I think I'm missing something.
I also have UHD 4.0 and GNURadio 3.8 (installed by source).

The steps I take are these:

  * First, I change the ad9361_device.cpp that is in uhd repository in
    //uhd/host/lib/usrp/common/ad9361_driver/ad9361_device.cpp,
    registers 0x101, 0x120, 0x129, 0x123 and 0x12A./
  * Then, I do "make" and "make install" to compile the changes in
    build-host folder.
  * After that, I generate the python script for the GRC flow graph and
    move the "set_agc" command after the "set_rate" one.
  * Finally, I run the python.

I can't see my waveform between the values I set. Is there something wrong with those steps? Did you do anything else?

King Regards,

Maria

/
/

El mar, 23 mar 2021 a las 9:23, Maria Muñoz (<[email protected] <mailto:[email protected]>>) escribió:

    Hi Julian,

    Thanks for the checking!

    I have also checked my graph and samp_rate is setting first, so I'll
    try to test it with a sine waveform as you suggested and see if that
    works. If not, maybe is an RFNoC/gr-ettus problem. I'll put an issue
    in the gr-ettus repository in that case.

    Thanks again for your help.

    Kind Regards,

    Maria.

    El mar, 23 mar 2021 a las 0:36, Julian Arnold
    (<[email protected] <mailto:[email protected]>>) escribió:

        Maria,

        I couldn't resist trying this myself, as your modifications seemed
        reasonable.

        So I did set up a simple test with a b210 connected to my siggen
        feeding
        it with a tone of varying power at 2.4102GHz.

        For the default UHD AGC settings I could confirm that the signal
        was
        kept between -10 dBFS and -12 dBFS (20 * log10(|x|) over a
        pretty wide
        input power range.
        This was using GR 3.8 and UHD 4.0.

        However, I had to modify the generate flow-graph slightly, as
        the AGC
        was enables before the sample-rate was set (maybe double check
        that, too).

        Afterwards, I used your settings (I did change reg 0x129 to 0x11
        (1dB
        +-), though).
        Also those settings worked as expected and the signal was nicely
        kept
        between -2 dBFS and -4 dBFS.

        Attached is a picture of the flow-graph I used for testing.
        Maybe you
        could also start by testing with a sine wave to verifying that your
        values get applied properly.

        Cheers,
        Julian

        On 3/22/21 6:21 PM, Maria Muñoz wrote:
         > Hi Julian,
         >
         > Sure.
         >
         > I am receiving a QPSK through the radio and plotting it in a
        QT graph
         > (see grc.png)
         > If I have AGC disable, I get what is shown in
        "test_without_agc.png",
         > then if I enable it, I see what is on "test_with_agc.png" where
         > "Quadrature" is always center more or less in 0.25 which
        might fit with
         > the values given by default (inner high threshold = -12dBFS,
        inner low
         > threshold = -10 dBFS).
         >
         > If I change the ad9361_device.cpp (attached) from line 1085,
        by changing
         > registers 0x101, 0x120 and 0x129 with values 0x02, 0x04 and 0x16
         > respectively to move between -2dbFS and -4 dBFS,  I see the same
         > waveform that I have in "test_with_agc.png" (I expect it to
        be around 0.7)
         >
         > Kind regards,
         >
         > Maria
         >
         > El lun, 22 mar 2021 a las 17:45, Julian Arnold
        (<[email protected] <mailto:[email protected]>
         > <mailto:[email protected]
        <mailto:[email protected]>>>) escribió:
         >
         >     Maria,
         >
         >     would you mind sharing your patch? Otherwise, it’s hard
        to tell what
         >     exactly is going on.
         >
         >     Cheers,
         >     Julian
         >
         >>     Am 22.03.2021 um 16:24 schrieb Maria Muñoz
        <[email protected] <mailto:[email protected]>
         >>     <mailto:[email protected] <mailto:[email protected]>>>:
         >>
         >>     
         >>     Hi Julian,
         >>
         >>     I re-open this topic to ask a question about the
        configuration of
         >>     the ad9361 registers in GNUradio/RFNoC
         >>
         >>     As I understand, when AGC is enabled in slow mode, there
        are 4
         >>     configurable thresholds (inner low, inner high,
        outer low, and
         >>     outer high) and also 4 configurable steps to reach the zone
         >>     between the inner thresholds.
         >>
         >>     I have found the configuration of these registers
         >>     in /uhd/host/lib/usrp/common/ad9361_driver/ad9361_device.cpp
         >>     and changed their values there. Then, I have recompiled
        uhd (make
         >>     & make install) but, when I re-run my graph I see no
        change in my
         >>     waveform (it seem to stay in the same limits as the default
         >>     configuration).
         >>
         >>     Am I missing any other step that I have to done to
        configure these
         >>     parameters?
         >>
         >>     Kind Regards,
         >>
         >>     Maria
         >>
         >>     El vie, 12 mar 2021 a las 10:04, Maria Muñoz
        (<[email protected] <mailto:[email protected]>
         >>     <mailto:[email protected]
        <mailto:[email protected]>>>) escribió:
         >>
         >>         Ok Julian, I will check the tree node and try to
        modify the
         >>         properties. Thanks again for the help!
         >>
         >>         Kind Regards,
         >>         Maria
         >>
         >>         El jue, 11 mar 2021 a las 18:26, Julian Arnold
         >>         (<[email protected]
        <mailto:[email protected]> <mailto:[email protected]
        <mailto:[email protected]>>>)
         >>         escribió:
         >>
         >>             Maria,
         >>
         >>             >>
        /self.ettus_rfnoc_rx_radio_0.set_rx_agc(False, 0)/
         >>             >>
         >>             >> but I have received the following errorThat's
        why I
         >>             gave the reference ([1]) showing the correct
        syntax ;)
         >>             Anyways, glad it worked out for you!
         >>             You might consider filing a bug issue against
        gr-ettus on
         >>             github.
         >>
         >>             >> By the way, I have read that there are
        several modes
         >>             for AGC
         >>             >> (fast,slow,hybrid..) I was wondering which
        type is
         >>             implemented by
         >>             >> default and if it is possible to change AGC
        mode in the
         >>             flowgraph.
         >>             Those modes were mainly dictated by the AD9361.
        Default
         >>             should be
         >>             "slow". The "hybrid" mode is not implemented as
        far as I know.
         >>             Which mode you want ("slow" / "fast") depends on the
         >>             signal you want to
         >>             receive. For burst-mode digital signals you
        might want to
         >>             switch to the
         >>             "fast" mode.
         >>             However, I think this is only possible by
        directly writing
         >>             to the corresponding property-tree node. Again,
        I'm not
         >>             sure about
         >>             UHD-4.0/gr-ettus though.
         >>
         >>             Cheers,
         >>             Julian
         >>
         >>
         >>             On 3/11/21 5:26 PM, Maria Muñoz wrote:
         >>             > Hi Julian,
         >>             >
         >>             > I have initially changed the python generated
        for my
         >>             flowgraph with this
         >>             > line:
         >>             >
         >>             > /self.ettus_rfnoc_rx_radio_0.set_rx_agc(False, 0)/
         >>             >
         >>             > but I have received the following error:
         >>             >
         >>             > T/raceback (most recent call last):
         >>             >    File "constellation_soft_decoder.py", line
        301, in
         >>             <module>
         >>             >      main()
         >>             >    File "constellation_soft_decoder.py", line
        277, in main
         >>             >      tb = top_block_cls()
         >>             >    File "constellation_soft_decoder.py", line
        166, in
         >>             __init__
>>             > self.ettus_rfnoc_rx_radio_0.set_rx_agc(True, 0)
         >>             > AttributeError: 'rfnoc_rx_radio_sptr' object
        has no
         >>             attribute 'set_rx_agc'/
         >>             >
         >>             > But rfnoc_radio_impl.cc defines it:
         >>             >
         >>             > /void rfnoc_rx_radio_impl::set_agc(const bool
        enable,
         >>             const size_t chan)
         >>             > {
         >>             >      return d_radio_ref->set_rx_agc(enable, chan);
         >>             > }/
         >>             >
         >>             > Searching the rfnoc_rx_radio_sptr with grep
        takes me to
         >>             "swig" files. I
         >>             > have looked at ettus_swig.py and seen that the
        command
         >>             name is set_agc
         >>             > instead of set_rx_agc:
         >>             >
         >>             > /def set_agc(self, enable: "bool const", chan:
        "size_t
         >>             const") -> "void":
         >>             >          r"""
         >>             >          set_agc(rfnoc_rx_radio self, bool
        const enable,
         >>             size_t const chan)
         >>             >          Enable/disable the AGC for this RX
        radio (if
         >>             available)
         >>             >          """
         >>             >          return
        _ettus_swig.rfnoc_rx_radio_set_agc(self,
         >>             enable, chan)/
         >>             > /
         >>             > /
         >>             > Changing this in the flowgraph.py seems to
        work!! Thanks
         >>             for the help on
         >>             > this! I put this information here just in case
        someone
         >>             is stuck in the
         >>             > same point.
         >>             >
         >>             > By the way, I have read that there are several
        modes for
         >>             AGC
         >>             > (fast,slow,hybrid..) I was wondering which type is
         >>             implemented by
         >>             > default and if it is possible to change AGC
        mode in the
         >>             flowgraph.
         >>             >
         >>             > Kind Regards,
         >>             >
         >>             > Maria
         >>             >
         >>             >
         >>             > El mié, 10 mar 2021 a las 12:03, Maria Muñoz
         >>             (<[email protected] <mailto:[email protected]>
        <mailto:[email protected] <mailto:[email protected]>>
         >>             > <mailto:[email protected]
        <mailto:[email protected]>
         >>             <mailto:[email protected]
        <mailto:[email protected]>>>>) escribió:
         >>             >
         >>             >     Hi Jules,
         >>             >
         >>             >     Thank you, I will try it and let you know
        as soon as
         >>             possible.
         >>             >
         >>             >     By the way, I have checked the python
         >>             generated using the UHD USRP
         >>             >     SOURCE block (instead of the RFNoC radio
        block) with
         >>             AGC active and
         >>             >     it generates the set of AGC fine. So, as
        you said,
         >>             it is fixed in
         >>             >     gr-uhd but it might still be a bug in
        gr-ettus.
         >>             >
         >>             >     Thanks again for the help!
         >>             >
         >>             >     Kind Regards,
         >>             >
         >>             >     Maria
         >>             >
         >>             >     El mié, 10 mar 2021 a las 11:25, Julian Arnold
         >>             >     (<[email protected]
        <mailto:[email protected]>
         >>             <mailto:[email protected]
        <mailto:[email protected]>>
         >>             <mailto:[email protected]
        <mailto:[email protected]>
         >>             <mailto:[email protected]
        <mailto:[email protected]>>>>) escribió:
         >>             >
         >>             >         Maria,
         >>             >
         >>             >          >> So, if I understand correctly, I
        have to put
         >>             there also
         >>             >         something like
         >>             >          >>
>>  "self.ettus_rfnoc_rx_radio_0.set_rx_agc(enable,0)" isn't it?
         >>             >
         >>             >         Exactly! Take a look at [1] for the
        correct syntax.
         >>             >
         >>             >         [1]
         >>             >
         >>
        
https://github.com/EttusResearch/gr-ettus/blob/1038c4ce5135a2803b53554fc4971fe3de747d9a/include/ettus/rfnoc_rx_radio.h#L97
         >>             >
         >>             >         Let me know if that worked out for you.
         >>             >
         >>             >         Cheers,
         >>             >         Julian
         >>             >
         >>             >
         >>             >         On 3/10/21 9:59 AM, Maria Muñoz wrote:
         >>             >          > Hi Julian,
         >>             >          >
         >>             >          > Thanks for the quick answer.
         >>             >          >
         >>             >          > I think you might be right about
        the possible
         >>             bug turning on
         >>             >         the AGC
         >>             >          > from GRC. I have checked the flow graph
         >>             generated and there's no
         >>             >          > set_rx_agc enable option (I checked
        the c++
         >>             definition block
         >>             >         where this
         >>             >          > option did appear but I hadn't look
        at the
         >>             python generated).
         >>             >          >
         >>             >          > The lines related to the radio in my
         >>             flowgraph are these:
         >>             >          >
         >>             >          > /self.ettus_rfnoc_rx_radio_0 =
         >>             ettus.rfnoc_rx_radio(
         >>             >          >              self.rfnoc_graph,
         >>             >          >              uhd.device_addr(''),
         >>             >          >              -1,
         >>             >          >              -1)
         >>             >          >
         >>             self.ettus_rfnoc_rx_radio_0.set_rate(samp_rate)
         >>             >          >
         >>             self.ettus_rfnoc_rx_radio_0.set_antenna('RX2', 0)
         >>             >          >
         >>             self.ettus_rfnoc_rx_radio_0.set_frequency(cf, 0)
         >>             >          >
         >>             self.ettus_rfnoc_rx_radio_0.set_gain(gain, 0)
         >>             >          >
>>  self.ettus_rfnoc_rx_radio_0.set_bandwidth(samp_rate, 0)
         >>             >          >
         >>             self.ettus_rfnoc_rx_radio_0.set_dc_offset(True, 0)
         >>             >          >
         >>             self.ettus_rfnoc_rx_radio_0.set_iq_balance(True, 0)/
         >>             >          >
         >>             >          > So, if I understand correctly, I
        have to put
         >>             there also
         >>             >         something like
         >>             >          >
>>  "self.ettus_rfnoc_rx_radio_0.set_rx_agc(enable,0)" isn't it?
         >>             >          >
         >>             >          > Kind Regards,
         >>             >          >
         >>             >          > Maria
         >>             >          >
         >>             >          > El mié, 10 mar 2021 a las 9:16,
        Julian Arnold
         >>             >         (<[email protected]
        <mailto:[email protected]>
         >>             <mailto:[email protected]
        <mailto:[email protected]>>
         >>             <mailto:[email protected]
        <mailto:[email protected]>
         >>             <mailto:[email protected]
        <mailto:[email protected]>>>
         >>             >          > <mailto:[email protected]
        <mailto:[email protected]>
         >>             <mailto:[email protected]
        <mailto:[email protected]>>
         >>             >         <mailto:[email protected]
        <mailto:[email protected]>
         >>             <mailto:[email protected]
        <mailto:[email protected]>>>>>) escribió:
         >>             >          >
         >>             >          >     Maria,
         >>             >          >
         >>             >          >     I might not be the right person
        to answer
         >>             this, as my
         >>             >         experience with
         >>             >          >     UHD 4.0 is relatively limited
        at the moment.
         >>             >          >
         >>             >          >     However, I cant tell you that
        the AGC on
         >>             B2x0 devices is
         >>             >         controlled via
         >>             >          >     software (using set_rx_agc()).
        There is
         >>             no need to
         >>             >         directly modify the
         >>             >          >     state of any pins of the FPGA.
         >>             >          >
         >>             >          >     I vaguely remember that there
        was a bug
         >>             in an earlier
         >>             >         version of gr-uhd
         >>             >          >     (somewhere in 3.7) that made it
        difficult
         >>             to turn on the
         >>             >         AGC using GRC.
         >>             >          >     That particular one is fixed in
        gr-uhd.
         >>             Not sure about
         >>             >         gr-ettus, though.
         >>             >          >
         >>             >          >     Maybe try using set_rx_agc()
        manually in
         >>             you flow-graph
         >>             >         (*.py) and see
         >>             >          >     if that helps.
         >>             >          >
         >>             >          >     Cheers,
         >>             >          >     Julian
         >>             >          >
         >>             >          >     On 3/9/21 5:11 PM, Maria Muñoz via
         >>             USRP-users wrote:
         >>             >          >      > Hi all,
         >>             >          >      >
         >>             >          >      > I was wondering if it is
        possible to
         >>             enable AGC from
         >>             >         the RFNoC radio
         >>             >          >      > block in GNURadio. I use UHD 4.0
         >>             version and GNURadio
         >>             >         3.8 with
         >>             >          >     gr-ettus.
         >>             >          >      >
         >>             >          >      > I see that the RFNoC Rx
        radio block has an
         >>             >         enable/disable/default
         >>             >          >     AGC
         >>             >          >      > option in the GNURadio block
        which I
         >>             assume calls the
         >>             >         UHD function
         >>             >          >      > "set_rx_agc"
         >>             >          >      >
         >>             >          >
         >>             >
>>   (https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#abdab1f6c3775a9071b15c9805f866486)
         >>             >          >      >
         >>             >          >      > I have also checked on the
        FPGA side
         >>             that there is a
         >>             >         pin from
         >>             >          >     FPGA to
         >>             >          >      > AD9361 called XCVR_ENA_AGC
        which is
         >>             set always to 1 on
         >>             >         the top
         >>             >          >     level of
         >>             >          >      > the FPGA image (see attached
        file
         >>             "e320.v", line 872).
         >>             >         This pin,
         >>             >          >      > according to
         >>             >          >      >
         >>             >          >
         >>             >
         >>
        
https://www.analog.com/media/en/technical-documentation/data-sheets/AD9361.pdf
         >>             >          >
         >>             >          >      > is the "Manual Control Input for
         >>             Automatic Gain
         >>             >         Control (AGC)".
         >>             >          >      > Must be this pin set to 0 to
        have AGC
         >>             working?
         >>             >          >      > If not, how can I get AGC
        working?
         >>             I've made some tests
         >>             >          >      > enabling/disabling this
        option but I
         >>             do not see any
         >>             >         changes
         >>             >          >     between the
         >>             >          >      > waveforms received.
         >>             >          >      >
         >>             >          >      > Any help would be appreciated.
         >>             >          >      >
         >>             >          >      > Kind Regards,
         >>             >          >      >
         >>             >          >      > Maria
         >>             >          >      >
         >>             >          >      >
         >>             _______________________________________________
         >>             >          >      > USRP-users mailing list
         >>             >          >      > [email protected]
        <mailto:[email protected]>
         >>             <mailto:[email protected]
        <mailto:[email protected]>>
         >>             >         <mailto:[email protected]
        <mailto:[email protected]>
         >>             <mailto:[email protected]
        <mailto:[email protected]>>>
         >>             >         <mailto:[email protected]
        <mailto:[email protected]>
         >>             <mailto:[email protected]
        <mailto:[email protected]>>
         >>             >         <mailto:[email protected]
        <mailto:[email protected]>
         >>             <mailto:[email protected]
        <mailto:[email protected]>>>>
         >>             >          >      >
         >>             >
         >>
        http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
         >>             >          >      >
         >>             >          >
         >>             >
         >>

_______________________________________________
USRP-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to