Post Go back to editing

Pluto GRC 3.10 sink block has low output power

Comparing Pluto blocks for GRC 3.8 and 3.10, I notice that the Tx power is about 25dB lower for the newer 3.10 version of the blocks.

This can be seen with a minimal flow graph of a 1v signal source driving the sink and hooking the source up to a QT Freq sink.  I use 430 MHz, the RF loop back cable and set Rx to 10dB manual gain.  With the GRC 3.8 block, and 25dB of Tx atten I see ~-30dB on the Rx spectrum display (arbitrary units), where as for the 3.10 block the same Rx display is achieved with 0dB Tx atten.

I found the same using a spectrum analyser; for 0dB Tx atten, the GRC 3.10 block outputs -29dBm where as the 3.8 block outputs -5dBm (both measurements via a 6dB coupler)

Just copying a 3.8 flow graph to the 3.10 environment unfortunately does not work, so you do need to reproduce all the parameters by hand.  So there may be an error there, or some other setting I have missed.  But I have checked carefully and boiled it down to a minimum flow graph.

regards Richard

  • Isn't this the same issue as reported here ?   Pluto run time error with GRC 3.10  

    Or are you reporting that even with this fix, the attenuation is generally 25db lower than it should be ?

    -Adrian

  • The previous fixed was great.  It allowed the tx atten to be changed at run time. 

    This is a different issue.  The Tx is driven with a 1v signal so it should be at full power with 0dB atten.  The Pluto spec is ~0dBm but the output it is more like -25dBm. 

    My other raspberry pi with the GRC 3.8 installation and using the same Pluto, does produce full power as expected..

    Thanks for the help Richard

  • We reproduced this and it's pretty interesting that this happens. We're investigating .. 

  • Hi,

    I think I've found the problem. Can you recompile and reinstall using this branch: https://github.com/AlexandraTrifan/gnuradio/tree/iio-pluto-scaling 
    Can you confirm that this works for you?

    If this works fine, we will send a patch upstream.

    -Alexandra

  • Dear Alexandra,

    I have tried the branch you gave me but unfortunately it did not improve the Tx output level.  There are however some other possibly important factors. (I am much more comfortable with hardware than software)

    The new branch completed cmake and make steps, but failed on many of the make test items, I enclose the console output for that. 

    Never-the-less I pressed on with install etc. and GRC did run.  The about help showed a different code branch, so the new branch was installed; and  the simple tx test flow graph did run.  But the power output is still low, the same as the official 3.10 version.

    My build is for a raspberry pi 4 with the volk library built  from source to better utilize the hardware FP.  This may be another factor, at least as far as the test failures are concerned.

    Thank you for your help to fix this and I am happy to assist.

    regards Richard

    PS I wonder whether the Tx is sending RF to the wrong output.  A 25dB difference could be the RF isolation between the ports? Mind you at 400 MHz that is probably a bit low for the isolation.

    pi@ztb10:~/gnuradio/build $ make test
    Running tests...
    Test project /home/pi/gnuradio/build
            Start   1: runtime_qa_buffer.cc
      1/257 Test   #1: runtime_qa_buffer.cc .........................   Passed    5.60 sec
            Start   2: runtime_qa_io_signature.cc
      2/257 Test   #2: runtime_qa_io_signature.cc ...................   Passed    0.03 sec
            Start   3: runtime_qa_logger.cc
      3/257 Test   #3: runtime_qa_logger.cc .........................   Passed    0.02 sec
            Start   4: runtime_qa_host_buffer.cc
      4/257 Test   #4: runtime_qa_host_buffer.cc ....................   Passed    0.03 sec
            Start   5: runtime_qa_vmcircbuf.cc
      5/257 Test   #5: runtime_qa_vmcircbuf.cc ......................   Passed    0.29 sec
            Start   6: math_qa_fxpt.cc
      6/257 Test   #6: math_qa_fxpt.cc ..............................   Passed    0.04 sec
            Start   7: math_qa_fxpt_nco.cc
      7/257 Test   #7: math_qa_fxpt_nco.cc ..........................   Passed    0.38 sec
            Start   8: math_qa_fxpt_vco.cc
      8/257 Test   #8: math_qa_fxpt_vco.cc ..........................   Passed    0.34 sec
            Start   9: math_qa_math.cc
      9/257 Test   #9: math_qa_math.cc ..............................   Passed    0.01 sec
            Start  10: math_qa_sincos.cc
     10/257 Test  #10: math_qa_sincos.cc ............................   Passed    0.02 sec
            Start  11: math_qa_fast_atan2f.cc
     11/257 Test  #11: math_qa_fast_atan2f.cc .......................   Passed    0.04 sec
            Start  12: pmt_prims
     12/257 Test  #12: pmt_prims ....................................   Passed    1.46 sec
            Start  13: pmt_unv
     13/257 Test  #13: pmt_unv ......................................   Passed    0.03 sec
            Start  14: qa_flowgraph
     14/257 Test  #14: qa_flowgraph .................................   Passed    1.09 sec
            Start  15: qa_prefs
     15/257 Test  #15: qa_prefs .....................................   Passed    0.52 sec
            Start  16: qa_random
     16/257 Test  #16: qa_random ....................................   Passed    1.75 sec
            Start  17: qa_tag_utils
     17/257 Test  #17: qa_tag_utils .................................   Passed    0.48 sec
            Start  18: qa_hier_block2
     18/257 Test  #18: qa_hier_block2 ...............................***Failed    1.55 sec
            Start  19: qa_uncaught_exception
     19/257 Test  #19: qa_uncaught_exception ........................***Failed    0.74 sec
            Start  20: qa_pmt
     20/257 Test  #20: qa_pmt .......................................   Passed    0.45 sec
            Start  21: qa_pmt_to_python
     21/257 Test  #21: qa_pmt_to_python .............................   Passed    0.44 sec
            Start  22: blocks_qa_block_tags.cc
     22/257 Test  #22: blocks_qa_block_tags.cc ......................   Passed    0.12 sec
            Start  23: blocks_qa_gr_block.cc
     23/257 Test  #23: blocks_qa_gr_block.cc ........................   Passed    0.04 sec
            Start  24: blocks_qa_gr_flowgraph.cc
     24/257 Test  #24: blocks_qa_gr_flowgraph.cc ....................   Passed    0.05 sec
            Start  25: blocks_qa_gr_hier_block2.cc
     25/257 Test  #25: blocks_qa_gr_hier_block2.cc ..................   Passed    0.03 sec
            Start  26: blocks_qa_gr_hier_block2_derived.cc
     26/257 Test  #26: blocks_qa_gr_hier_block2_derived.cc ..........   Passed    0.05 sec
            Start  27: blocks_qa_gr_top_block.cc
     27/257 Test  #27: blocks_qa_gr_top_block.cc ....................   Passed    0.09 sec
            Start  28: blocks_qa_rotator.cc
     28/257 Test  #28: blocks_qa_rotator.cc .........................   Passed    0.19 sec
            Start  29: blocks_qa_set_msg_handler.cc
     29/257 Test  #29: blocks_qa_set_msg_handler.cc .................   Passed    0.13 sec
            Start  30: qa_add_mult_div_sub
     30/257 Test  #30: qa_add_mult_div_sub ..........................***Failed    0.49 sec
            Start  31: qa_add_mult_v
     31/257 Test  #31: qa_add_mult_v ................................***Failed    0.49 sec
            Start  32: qa_affinity
     32/257 Test  #32: qa_affinity ..................................***Failed    0.48 sec
            Start  33: qa_argmax
     33/257 Test  #33: qa_argmax ....................................***Failed    0.48 sec
            Start  34: qa_block_behavior
     34/257 Test  #34: qa_block_behavior ............................***Failed    0.48 sec
            Start  35: qa_block_gateway
     35/257 Test  #35: qa_block_gateway .............................***Failed    0.49 sec
            Start  36: qa_boolean_operators
     36/257 Test  #36: qa_boolean_operators .........................***Failed    0.48 sec
            Start  37: qa_burst_tagger
     37/257 Test  #37: qa_burst_tagger ..............................***Failed    0.51 sec
            Start  38: qa_conjugate
     38/257 Test  #38: qa_conjugate .................................***Failed    0.48 sec
            Start  39: qa_copy
     39/257 Test  #39: qa_copy ......................................***Failed    0.49 sec
            Start  40: qa_delay
     40/257 Test  #40: qa_delay .....................................***Failed    0.48 sec
            Start  41: qa_endian_swap
     41/257 Test  #41: qa_endian_swap ...............................***Failed    0.48 sec
            Start  42: qa_exponentiate_const_cci
     42/257 Test  #42: qa_exponentiate_const_cci ....................***Failed    0.48 sec
            Start  43: qa_file_descriptor_source_sink
     43/257 Test  #43: qa_file_descriptor_source_sink ...............***Failed    0.49 sec
            Start  44: qa_file_metadata
     44/257 Test  #44: qa_file_metadata .............................***Failed    0.49 sec
            Start  45: qa_file_sink
     45/257 Test  #45: qa_file_sink .................................***Failed    0.49 sec
            Start  46: qa_file_source
     46/257 Test  #46: qa_file_source ...............................***Failed    0.48 sec
            Start  47: qa_head
     47/257 Test  #47: qa_head ......................................***Failed    0.49 sec
            Start  48: qa_hier_block2
     48/257 Test  #48: qa_hier_block2 ...............................***Failed    0.53 sec
            Start  49: qa_hier_block2_message_connections
    ^Cmake: *** wait: No child processes.  Stop.
    make: *** Waiting for unfinished jobs....
    make: *** wait: No child processes.  Stop.
    pi@ztb10:~/gnuradio/build $ 
    
    Freezes at 25% CPU (1 core on the RPi)
    happy to do other tests to