The project consists in the develop of a Windows application for the use of ADALM-PLUTO (recently received as a gift from a dear friend) as a spectrum analyzer.

I hope to write a post about this soon as well, anyway I list the highlights of the project now:

  • Spectrum analyzer with full span operating range 70MHz-6GHz and representation of signal amplitude in dBm.
  • Spectrum analyzer with tracking generator. Resolution up to 1024 points.
  • Generator with 1 KHz of frequency resolution

The software and hardware prerequisites are:

  • CPU: an old 1.7GHz Pentium M is more than enough!
  • OS:> = Windows 7
  • ADALM-PLUTO extended to let the FW “see” the AD9363 as an AD9364
  • Analog Devices drivers installed (PlutoSDR-M2k-USB-Drivers)

See you soon!

33 thoughts on “SA TSA GEN for ADALM-PLUTO”

  1. Hallo Alberto,
    interesting Software… I installed and i can start it.

    I thought I would look at the signal from the QO100. Unfortunately I don’t see anything at all. My LNB converts to 432mhz …

    73 Thomas DL5BCA

    1. Hi Thomas,
      thank you for your comment!
      You can try to set FFT size to 8192 firstly (from right click->Settings->FFT tab), Span MHz to 2 and RX Gain mode to slow_attack.
      Probably you will see something like this:

      SATSAGEN it is not the best program for that, yet. 🙂

  2. hi Alberto,

    Looks nice! Just installed it on my laptop. Is there a way to change the IP address of the Pluto that SATSAGEN connects to? Reason for asking: my Pluto is remote connected via Ethernet/USB. And you guessed it: it uses a different IP address than the default HI..

    73 Wilko PA1WBU

    1. Hi Wilko,
      Thank you very much for your comment!
      In response to your question: not yet from interface… but you can do it adding a REG_SZ with name URIctx and value ip:a.b.c.d (for example ip: in the registry key HKEY_CURRENT_USER\Software\albfer\satsagen\settings
      73 Alberto

      1. Works like a charm to change IP address in the registry, now the Satsagen application can see the Pluto.
        However the status screen continue to “extendPluto, please wait” and then a popup asks for my serial port.
        Using a Windows 10 as a VM on Mac, I have no serial port.
        What is the purpose of the serial port?

        Version 2.2.1 with Adalm-Pluto via WiFi on a separate router.

        1. Hi Luk,

          at the startup, SATSAGEN search the com port named PlutoSDR Serial Console, the purpose is to activate a terminal connection to Pluto for sending the commands to extend the range of frequency supported, if necessary.
          In your scenario, the Windows machine don’t see that com port because the Pluto is not USB directly connected.
          Considering that SATSAGEN at the moment (I will implement that functionality in the next releases) can’t connect to terminal console of Pluto via network SSH yet, I suggest you to use a SSH client on your Mac, like the native SSH, to connect to IP address of Pluto and sending these commands:
          Login as root, password analog
          fw_setenv attr_name compatible
          fw_setenv attr_val “ad9364”
          pluto_reboot reset

          Now, you can start SATSAGEN on your VM on MAC.


          1. Thank you Alberto,
            Now I can use the Satsagen
            Neat trick👍

            Great SW, thanks


      2. Hi Alberto,
        thanks for the great tool.
        My PLUTO has the fixed network address IP:173. bbb. ccc. 239.
        When starting version 5-0-02, only the IP address 192. . . is requested.
        On your page ( 2020/02/17/sa-tsa-gen-for-adalm-pluto) there are instructions on how to change the registry.
        I entered this with RegEdit and restarted the PC. There is no change in the query.
        – Improved instruction?
        – Is there a more recent version where the query (settings) is configurable?
        With best regards,
        Rolf, DD9PR

        1. Hi Rolf!
          Thank you for your comment.
          You can set your IP Pluto address on the Connection string (URI) override field in Settings->Devices, like this example where it was set as ip:

          Let me know
          73’s Alberto

          1. Hello Alberto,
            it works without any problems!
            Sorry I’ve ignored the setting option so far, unfortunately, as I haven’t
            found that as an operating note yet.
            This is a very good solution. Thank you.
            73, Rolf DD9PR

  3. Hi Alberto
    Very good initiative , Pluto has many possibilities …
    Goodluck for this project.

  4. Ciao, Alberto,

    grazie per l’ottimo programma. Aspettavo questo momento da molto tempo…
    C’è anche una descrizione di voi per questo? Non conosco ancora molto bene il lavoro sull’analizzatore dello Specktrum.

    vy 73 Georg

    1. Ciao Georg!
      grazie infinite per il tuo commento!
      Sto scrivendo un piccolo manuale d’istruzioni, appena possibile lo metterò a disposizione per il download in queste pagine!
      73 Alberto

  5. Hi Alberto

    Thank you, this is a really nice and useful tool it works basically for this wide frequency range and for a quick look it is accurate enough.


  6. Great program, I was wonder if there are any plans to add a sweep generator option? I know you can do it manually using max hold and adjust the generator, but it be really handy to have start and end frequency and sweep between them, I sure there be lots of uses for it. I want it so I could adjust band pass filters in real time.

    1. Hello Anthony,
      Thank you for your comment. I did add sweep generator option in version 0.2.2, now available to download here.
      I hope that feature meets your required!

    1. Hi Ilya!
      Thank you for your question: unfortunately no, it work as Tracking Spectrum Analyzer and as Signal Generator, development for oscilloscope functionality is not currently planned.

  7. Hi, Alberto!
    Thanks for your reply! It is unfortunate that the oscilloscope is very useful in amateur radio equipment!

  8. hi Alberto,

    First, huge compliments for the program!
    I use on rx and tx 6dB attenuators and want to set these in the setup.
    But in both fiels RX and TX levelcorrection I can enter whatever I want, it resets to 0,0 asap you leave the field. Am I missing something? (v0.2.2.1, windows 10 64bits)
    regards Bas

    1. Hi!
      Thank you for your comment!
      The TX level offset and RX level offset fields must be expressed by negative values (must be -6.0 and -6.0 in your scenario), seems to be a my distorted view of define the values of attenuators! Sorry!
      regards, Alberto

  9. I love the software and it is very help full.
    With my test instrument in for calibrations this piece of software helped me out in an emergency.
    Just something on my wishlist for the software will be a ctcss or pl tone or sub audio tone to test analog radio’s will be very helpful

    1. Hi Henry!
      thank you so much!
      I will try to insert your wishlist in the next releases of SATSAGEN!
      Cheers, Alberto

  10. Alberto,

    I’m a researcher that is building a cognitive radio based off the plutoSDR and a raspberry pi. Using libIIO I have build a spectrum analyzer but am unimpressed with the results (I’m not the brightest programmer in the box as it were…). Would you be willing to share source code? Feel free to reach out to me via my email.

    1. Hi,
      I can’t share the code at the moment, but I’m available to give you some suggestions about the development of the code.
      regards, Alberto

      1. Alberto,

        Thanks! Right now my code uses libIIO to change the center frequency, capture N samples, and pass them out to Gnuradio where the FFT is taken. Once M chunks of data have been processed and accumulated the data is graphed. I’ve wrestled with the AGC settings in the Pluto and found that my best bet is to use a gnuradio AGC to avoid seemingly random shifts in amplitude, and I’m also stumped by the sharpness of the peaks from my fft – on a reference spectrum analyzer I’ll see RF energy roll-off as you get further from the center frequency but my Pluto spectrum analyzer just has immediate sharp drop-offs.

        1. Hi,
          You should give it another try with RX gain settings. In my opinion, the AGC is not the best way to apply cognitive radio. The available values of RX gain change over frequencies in Pluto; maybe this is the reason because you noticed variations of amplitude. To discover the min and max of RX gain possible to use, you should scan your range of frequency and parse the results of this function in every step of a set of LO frequency:

          char buf[80];

          where the rx_chain is the iio_channel struct of channel voltage_0 of ad9361-phy.

          The above function returns on buf a string like this: [-3 1 71]
          -3 is the min dB gain
          1 is the dB step granularity
          71 is the max dB gain

          Discovered the range of possible values, you can set the best RX gain with:


          Don’t forget setting the RX gain mode to manual before with this:


          About the FFT process of gnuradio I don’t have the skills now to help you, but you should consider for example that if you set 4 MSPS of sampling rate you obtain the correct amplitude of signals to only 1 MHz upper band from the center frequency unless you make a quadrature compute.

Leave a Reply to Alberto Cancel reply

Your email address will not be published. Required fields are marked *