SATSAGEN is a Windows application that allows you to use an SDR device as a Spectrum Analyzer. SATSAGEN supports the ADALM-PLUTO device only, at the moment. and other SDR devices with the latest SATSAGEN releases, like RTL-SDR, HackRF, RSP1, and many others!

SATSAGEN is provided free of charge to the HAM Radio community, with the hope that SATSAGEN can be appreciated as a useful tool for our radio experimentation.


Download SATSAGEN from this link:

SATSAGEN Download Page

The prerequisites of the application are:

  • OS: From Windows 7 to Windows 10
  • Drivers for ADALM-PLUTO installed: PlutoSDR-M2k-USB-Drivers
  • ADALM-PLUTO device with firmware > = 0.31
    • or other SDR devices with the latest SATSAGEN releases!

WARNING: At the first start, the application will perform on the device the frequency and bandwidth extension needed for the use of the 70MHZ-6000MHZ range, forcing the firmware to “see” the AD9363 transceiver as an AD9364. The extension is required for the application to work, but if you don’t want it to happen, don’t start SATSAGEN.

I would like to thank my friends Gianni IW1EPY, Domenico I1BOC and Mauro IZ1OTT for giving me the idea, the support in every sense, the radio components and the equipment necessary for the realization of the project!

A special thanks goes to Boian Mitov for the GREATS libraries used in SATSAGEN!

Below you will found another valuable contribution by Gianni and at the end of the post you will find a short video that illustrates the application basics.

Alberto IU1KVL

As Adalm Pluto owner I become acquainted to this device using radio programs (SDR Console, SDRAngel) to link Oscar 100.
But for this kind of hardware my asking was for a measurement system. I have test cheap network analyzer in the range of 4,4 GHz, vector analyzer up to 900 MHz and my idea was to set Pluto in this class of instruments using the extended range 70 MHz to 6 GHz.
After some encouraging trials from the RF point of view but disappointing for the measurement time delay in Matlab, I drag my friend Alberto into this adventure to have an acceptable measurement time using C libraries.
Apart the nice Alberto’s program I add some Hardware notes.
Adalm Pluto it is born for sure not for a professional measurement instruments so some drawbacks can be expected.
Due to the large bandwidth usage forced by the program (original Pluto frequency usage spans from 325 MHz to 3,8 GHz) the input and output impedance for sure are not 50 ohms.
A pair of attenuators on input and output mitigate the problem, for sure reducing the usable dynamic range but acceptable for HamRadio users. Using two 10 dB attenuators remain 40 dB down to the calibration level and 20 up in case of insertion of an active device under test.
The missing metal box generate some crosstalk problems in the upper range of frequency specially if Pluto is moved around metal frames or touched by fingers… some people have reboxed it.
The present structure (Pluto plus optional attenuators) allows a direct measurement of transfer function of filters, amplifiers, a directional coupler or a reflection bridge is mandatory for impedance measurement.
Is possible to attach a file to correct the deviation of output power over the frequency sweep, unluckily every Pluto have its own variance. By now I have analyzed 5 devices and the correction curve are available.
With the linearization file the output power can maintain an error of 1 dB versus 10 : 12 dB of the unleveled , most of this nonlinearity is located in the range from 50 to 300 MHz end 4.5 to 6 GHz obviously where Pluto was not designed for.
The receiver gain and the generator attenuator do not increase the linearization error, so one linearization file is enough. Pay attention to not overload the receiver or saturate the generator but this behavior become immediately evident.
To enhance the dynamic linearization is possible to apply a -40 dB calibration using a correct attenuator.
This linearization performs in the range thill -40 db but almost kill the response from -40 to -60, in any case due to cross talk end receiver erroring this range is severely degraded even without this correction.
All the level of the RX Gain and the Output Power and the attenuators that you have inserted at the I/O are programmable.
Any idea of improvement ?
This is the list of future enhancement:
Calibration using a directional coupler or bridge averaging open and short.
Offset between transmitter and receiver in order to test conversion systems.
Harmonic response of devices in order to test amplifiers or multipliers.
Open to suggestions.
I think that Adalm Pluto with SATSAGEN, covering 7 Ham bands, will be useful in designing and testing to every ones involved in RF field.

133 thoughts on “SATSAGEN”

      1. Hi, Alberto.
        I have a LibreSDR device on which I can run one Tx channel in both cyclic and non-cyclic buffer mode. But I need to launch both channels Tx. I can’t figure out how to do this correctly in C++ under Linux. Can you give me a hint?

        1. Hi,

          Assuming that you have a structure ctx already bound to the device, an integer BufferSize with the size of the buffer, and the InBuffer_Real_ch1, InBuffer_Imaginary_ch1, InBuffer_Real_ch2, and InBuffer_Imaginary_ch2 pointers to a buffer containing the data to send, you can use the following code to push the buffer:

          struct iio_channel *tx1_i, *tx2_i;
          struct iio_device *dds_core_lpc;
          ssize_t nbytes_tx;
          char *p_dat, *p_end;
          ptrdiff_t p_inc;
          int16_t Real;
          int16_t Imaginary;
          struct iio_buffer *txbuf;
          int i;

          dds_core_lpc = iio_context_find_device(ctx, “cf-ad9361-dds-core-lpc”);
          tx1_i = iio_device_find_channel(dds_core_lpc, “voltage0”, true);
          tx2_i = iio_device_find_channel(dds_core_lpc, “voltage2”, true);

          txbuf = iio_device_create_buffer(dds_core_lpc, BufferSize, true);

          p_inc = iio_buffer_step(txbuf);
          p_end = (char *)iio_buffer_end(txbuf);

          for (p_dat = (char *)iio_buffer_first(txbuf, tx1_i); p_dat < p_end && i<BufferSize; p_dat += p_inc) {
          ((int16_t*)p_dat)[0] = Real << 4;
          ((int16_t*)p_dat)[1] = Imaginary << 4;

          for (p_dat = (char *)iio_buffer_first(txbuf, tx2_i); p_dat < p_end && i<BufferSize; p_dat += p_inc) {
          ((int16_t*)p_dat)[0] = Real << 4;
          ((int16_t*)p_dat)[1] = Imaginary << 4;

          nbytes_tx = iio_buffer_push(txbuf);

      1. Sure, put your Pluto IP address on the Connection string (URI) override field from the Settings->Devices tab in this way:, e.g. ip:

  1. Thank you so much for your work, it is the most great softwear for make it a Spectrum I have used.
    Really great work!

  2. Now testing with my GPS-DO modified Pluto. Do you have a linearization file you could send me? And instruction on using the file, hi.

    Thanks for what looks like fine software.

    regards, Roy VE7BPB

    1. Hello Roy,
      thank you for your comment.
      Now you can download the ready linearization files from the Download page (see the bottom of the download page). We created these linearization files from four different ADALM-PLUTO, mainly for TX path.
      You have to put the linearization files on an accessible directory and setup the paths on Settings->Level correction Tab (click Load buttons to refresh)
      Find the most efficient linearization file for your ADALM-PLUTO.
      To create a new linearization file of the TX, it is necessary to derive the curve through a Scalar Network Analyzer. Found the highest point of the curve, this is the zero, where the values ​​will refer to.
      For Example, simplified output from SNA:
      71MHz 3,2dBm
      779MHz 10dBm
      6GHz 1dBm
      translates into:
      71MHz -6,8dBm
      779MHz 0dBm
      6GHz -9dBm
      the linearization file will be:
      SATSAGEN solves the intermediate points by interpolation, but obviously, more detailed files are better!

      Best Regards

      1. Thank you Alberto for the files and very good explanation. I have a DC-10GHz digital wattmeter I can use to compile data for my own file.

        regards, Roy

      2. Hello Alberto, Ho pensato di comprare un ALDAM-PLUTO, sono rimasto un poco deluso con
        Hack RF one, Aldam-pluto ha meno spurie? Grazie per i tuoi consigli.

        1. Ciao Francesco,
          Forse l’avrai già comprato il Pluto, scusa per il ritardo nella risposta!
          Sì, l’ADALM-PLUTO rispetto ad HackRF-One ha una presenza minore di immagini indesiderate come quella del local oscillator, anche perché ne effettua una riduzione automatica senza aver bisogno di intervenire manualmente come si deve fare con i pannelli di SATSAGEN ed HackRF-One. Anche gli artefatti dei clock sono inferiori, ma questo dipende dal fatto che la ricezione parte da 70MHz! Spurie a parte, poi il Pluto ha una profondità di 12bit, riesce ad arrivare a 60MSPS di sampling rate ed è full duplex. Insomma, averli tutti e due non è male! 🙂

  3. Very good project.I used it to test a 2.4g cavity filter.There was little difference between the results and those measured by kc901.

  4. Tested the SA functionality only so far, but it looks great !
    420 MHz Span centered on 600 MHz and nearly realtime 🙂

    Thanks a lot !

  5. Alberto, I have some thoughts and suggestions, but rather than getting into a long thread on here perhaps you could start a forum for all the discussion you will no doubt get from all your happy users, hi.

    regards, Roy

  6. A very good piece of Software. Just what I have been looking for.
    I tested my BGA6589 Amplifier on it and I now see a very flat frequency response (I did not know how flat).
    Thank you for your hard work.
    Ideal for any Es’Hail2 DATV/NB/filter work, as well as anything else RF related.

    1. Hello Hiroshi!
      Thank you all so much! I’m very honored!
      I will shortly release an interesting new version of SATSAGEN!
      Stay tuned!
      73 Alberto

  7. SATSAGEN is running on old laptop with Windows 7, runs fine on Windows 10 (borrowed wife pc to check when she was not looking), not able to run under wine on raspberry pi with raspberian YET as compiled for 32 bit windows not ARM uPC. Not tried Wine on Ubuntu PC either.

    I KNOW no source available yet, might be good it it were (or a Linux app image perhaps?).

    Having fun with some end cap pipe filters for 2.4GHz and QO-100.


    1. Hi Dom,
      thank you so much for your interesting info. Yes, I thinking about developing a version for Linux, anyway I tested SATSAGEN on Wine on Ubuntu 19.10 last week and works very well! The only thing to do before power on SATSAGEN on Wine is to set the Fix iio_channel… attribute on page Settings->Extra.

  8. Great work. Very useful tool. You have an account I can deposit some money. I like to support the amateur guys that provide great tools free of charge. It won’t be much but hopefully others will follow and you can add some more features buy some more equipment or just enjoy a beer.

  9. Hi All,

    using Satsagen on MacOSX with wine installed true Macports overall its working very nicely.
    It has very repeatable results. Mainly tested in the 23 and 13 cm bands, to measure filters and antenne’s with a directonal coupler. Did not managed to make jpegs with the makervalue.

    The Fix iio_channel… attribute is also needed for OSX.


    More than one marker
    Trace save button on the main controle surface
    Save Settings
    Recall Settings
    Recall saved trace as background to check for improvement.

    The ADLM internal processing is @ 18Ghz in theory it should be capable to
    recieve even higher frequency as the mixer is driven with a square wave.

    With the right filters and TX multiplier even 10Ghz might be in reach.

    Thanks for creating and sharing this wunderfull appliction.

    1. Hello Rens!
      Excellent news!!!
      Thank you so much for sharing the tests and giving me some useful tips!
      We are working with Gianni IW1EPY to develop version (software and hardware) on harmonic mode with good results.
      Gianni will write the news about harmonic mode on shortly.
      Best Regards,

  10. Hi Alberto,
    this is really an incredible software. Installed and worked all at once. I like it !!

    Thank You so much !!

    Vy 73
    Werner DK1KW

    1. Hi Werner!
      Thank you so much for your compliments and support!!!
      I’m very happy to known it working well!
      Stay tuned for new release that published soon!
      Thank you again
      Best Regards,

      1. Dear Alberto,
        Hope that you are doing well,

        Refer to the calibration sugested with 02 attenuators of 10 dB, I only have 01 unit of 10 dB, the others are 03, 06 and 20 dB. They also can be used in this case ? If positive which one is more suitable .

        73! Fernando – PU2SDM

        1. Hi Fernando,

          Yes, you can use the 06 dB attenuator on the TX connector. Remember setting the fields Tx level offset at -6 and RX level offset at -10 on tab Level correction.
          Next version 0.4 of SATSAGEN allows positive or negative indifferently of the above fields! Many people have written to me that it accepts only the negative values in these fields!

          73, Alberto

  11. Hi Alberto,

    This is a very nice program. I like it.
    Is it possible to add a video filter or some kind of averaging.
    The Y-axis should be fixed for 2, 5 or 10 dB / div. by default.

    Best 73 de HB9DFQ

    1. Hi Paul!
      Thank you for your comment and tips, I will try to add that features in the next releases.

  12. Alberto,
    Any way to add FM deviation to this tool. It could then replace my service monitor in a smaller more convenient package. Cheaper too.
    I love the features so far!

    1. Hello Jim,
      thank you for your interest, I’ll try to implement the delta marker in next releases.
      Stay tuned!
      regards, Alberto

  13. Ciao Alberto !
    nice work and a beautiful interface.
    Is it possible to sum up spectral power density using Satsagen in order to estimate the overall power of the received signal ? if not it would be a nice feature

    1. Ciao Alban!
      Good idea! Thank you!
      I’ll try to insert that feature in the next version!

    1. There are conflicting opinions about it, I am not sure that it can be done in a cheap way, for example without a external reference VCO in order to phase RX and TX.

  14. Hello;
    I work with a pluto ADALM, I want to calibrate pluto because i want to have measurements in dbm, I obtain complex data I / Q. I make a scrypt python, which calculates the power of the values ​​that I receive in dbm (10*log((I^2+Q^2)*10) (dBm)). I send different power from a signal generator but I have a fixed values in my pluto. could you help me to do the calibration; and send how i can do that.

      1. Hello, thanks your for your answer;
        Hello, I’m trying to use a pluto as a spectrum analyser using python and I would like to know if there is a way to get the signal power in dbm.
        Could you help me please ? I’ve got two requests:
        1)I’d like to convert the IQ complex values in P[dBm] values
        2)Could you please send me a Python script to display the spectrum analyzer in P[dBm] values ?
        How to do without ADC calibration ?
        Because for me, it is very hard to understand and to implement this function.
        I am new with the card PLUTO-ADALM, I want to use it as a spectrum analyzer, I sending signals on rx and read the power and see the signal in dbm.
        With the generator, i create signals a different power levels (voltages) then determine what ADC code is produced complexe data I/Q . but i don’t know how translate the ADC codes into voltage and therefore dBm. i put you my srypt python, i get a fixed value for a different power levels.
        could help me please.
        import adi
        import time
        import math
        import matplotlib.pyplot as plt
        import numpy as np
        from scipy import signal

        # Create a device interface
        sdr = adi.Pluto()
        sdr.rx_rf_bandwidth = 1000
        sdr.rx_lo = 758000000

        fs = int(sdr.sample_rate)
        N = 1024
        sdr.rx_enabled_channels = [0]
        gain_control_mode_chan0 = “manuel”
        rx_hardwaregain_chan1 = 0

        # Get complex data back
        x = sdr.rx()
        b = np.arange (1023.5)
        for i in range(0,1024):
        data = x[i]
        I = data.real
        Q = data.imag
        v = 10* (I**2 + Q**2) # voltage
        p = 10 * np.log10(v) # power RMS on dbm
        b[i] = p
        print(“p”, p) # but i get a same value for different power level
        b = b[np.isinf(b)== False]
        pmoy = np.mean(v)
        f, Pxx_den = signal.periodogram(b,fs, scaling= ‘spectrum’)
        plt.xlabel(“frequency [Hz]”)
        plt.ylabel(“P [dBm]”)

          1. Hello Feriel,
            I’m trying to set up a working python environment to test your script, I’m sorry.

    1. Hi Feriel,
      The gain_control_mode_chan0 and rx_hardwaregain_chan0 in my environment don’t works, anyway if I set the gain with another application and start your script, I get I Q values accordly the sample rate of device. I have notice that sample_rate is not initialized in your script, then you should verify that value.
      Cheers, Alberto

  15. great piece of software, Alberto, congrats. Performance is overwhelming, installation a breeze, perfectly done.

    Now running on WinX; will try Wine under Ubuntu 18.04 LTS sson

    Mni tnx
    Guenter DL7LA

  16. Dear Alberto,
    thank you very much for this nice SW.
    I would propose one small addition: I really would appreciate if in the generator you could set the modulation frequency and bandwith freely. Do you think you could add this?


    1. Hi Carsten,
      thank you so much, I will try to insert these features in the next releases!
      73 Alberto

  17. Hi,

    it seems SATSAGEN only supports direct USB-connection. Would it be possible to add also network connectivity? I have my Pluto running with an USB-Ethernet-Adapter in local lan so it would not be easy to connect it via USB…

    73 de Kim

    1. Hi Kim,
      from version of SATSAGEN, you can set an IP address that overrides the direct connection settings. From settings->Devices tab, specify in the Connection string (URI) override field your Pluto IP address like this: ip:x.x.x.x where x.x.x.x is your IP address, eg. ip: (the ip word must be lowercase).
      73 Alberto

  18. Hello Alberto,
    Can we imagine using the Pluto and Satsagen in remote site mode .The Pluto on site A and the visualization on site B

  19. Hi, thanks by this really great software, I can learn with it without expend a fortune that I have not, all thanks to you.
    My question is about VSWR measuring in the 5.8Ghz range, I getting weird values, but in a forum I read they get good results, but in lower frequencies.
    I have a very reasonable good Narda 2-8.6ghz directional coupler (tested and looks OK, flat in main line and coupled port -16db),x2 cheap -10db 6ghz attenuators (tested and they are good,-10db flat until 6ghz) and cheap 6ghz load,short,open calibration kit (untested,no idea how test those) and the original SMA cable (tested in bridge, I have a RG58, but it makes weird things, like saw in calibration were the original won’t). As my knowledge is so low, could be I’m doing wrong the calibration? Do I need make first open or short? How I calibrate Short? is it with short dummy or load dummy?, in the forum someone use a load, and you said short in your video, is confusing for me, other videos in you tube use different ways with different tools.
    Do I need make some extra mod to be reliable?, as the oscillator mod, aluminium case, ground mod…
    My weird results are VSRW of 2 or above in some commercial antennas, in others draw different plot than the official one, with higher SWR valor, different plots and SWR valors from the same antennas done with hobby tester or professional tool.
    Really I don’t know how realistic are my results, some looks reasonable some really weird. Did you have the chance of compare it with some professional tool in the 5.8ghz ISM spectrum?

  20. Hi Alberto

    When I start SATSAGEN it connects to my Pluto, but after hack and reset nothing happens. Using the latest drivers and FW 0.32. The Pluto works on SDRConsole. Any suggestions about what I’m doing wrong?

    Vy 73 de OZ1FF/Kjeld

    15-10-2020 12:59:14 ad9361-phy,xo_correction:39999879
    15-10-2020 12:59:14 ad9361-phy,model:ad9363a
    15-10-2020 12:59:14 local,kernel:4.19.0-119999-g6edc6cd
    15-10-2020 12:59:14 uri:local:
    15-10-2020 12:59:14 usb,idVendor:0456
    15-10-2020 12:59:14 usb,idProduct:b673
    15-10-2020 12:59:14 usb,release:2.0
    15-10-2020 12:59:14 usb,vendor:Analog Devices Inc.
    15-10-2020 12:59:14 usb,product:PlutoSDR (ADALM-PLUTO)
    15-10-2020 12:59:14 usb,serial:104473ae7393000108003b009c682dc809
    15-10-2020 12:59:14 usb,libusb:
    15-10-2020 12:59:14 extendPluto, please wait…
    15-10-2020 12:59:18 extendPluto, serial auth ok…
    15-10-2020 12:59:19 extendPluto, hack ok…
    15-10-2020 12:59:20 extendPluto, reboot ok…
    15-10-2020 12:59:30 Connecting to usb:1.17.5
    15-10-2020 12:59:30 Successfull connection to usb:1.17.5
    15-10-2020 12:59:30 hw_model:Analog Devices PlutoSDR Rev.B (Z7010-AD9363A)
    15-10-2020 12:59:30 hw_model_variant:0
    15-10-2020 12:59:30 hw_serial:104473ae7393000108003b009c682dc809
    15-10-2020 12:59:30 fw_version:v0.32
    15-10-2020 12:59:30 ad9361-phy,xo_correction:39999879
    15-10-2020 12:59:30 ad9361-phy,model:ad9363a
    15-10-2020 12:59:30 local,kernel:4.19.0-119999-g6edc6cd
    15-10-2020 12:59:30 uri:local:
    15-10-2020 12:59:30 usb,idVendor:0456
    15-10-2020 12:59:30 usb,idProduct:b673
    15-10-2020 12:59:30 usb,release:2.0
    15-10-2020 12:59:30 usb,vendor:Analog Devices Inc.
    15-10-2020 12:59:30 usb,product:PlutoSDR (ADALM-PLUTO)
    15-10-2020 12:59:30 usb,serial:104473ae7393000108003b009c682dc809
    15-10-2020 12:59:30 usb,libusb:

    1. Hi Kjeld,
      You didn’t wrong anything.
      It’s a known issue from firmware version 0.32.
      I’m sure that ADI will find a solution for this; for now, we can revert to firmware v.031, or an unofficial trick is to install only the boot.frm from v.031 over Pluto with a 0.32 firmware version.
      73, Alberto

  21. Thanks Alberto
    Not yet … but it’s a matter of weeks, months of ?????
    Thank you for all your development
    73 Chris

    1. Hi Chris,
      I’m so sorry, I don’t know when I’ll be able to develop that feature.
      Meanwhile, you could use an application virtualization solution, there are many in the market.
      Otherwise, you could simply use SATSAGEN connected to ADALM-PLUTO remotely via IP with at least 30 Mb/s or more of DSL.
      73, Alberto

  22. Salve Alberto, sono Vincenzo Dalla Germania e ho un problema con il Software Satsagen per uso Adalm Pluto.
    Voglio usare Adalm PLuto com VNA per charatterizzare die filtri e trasformatori.

    Io ho istallato il Software su base WIN 10 e ho anche istallato il driver 0.31.
    Quando faccio partire il Software e accendo”Power”, il Software rimane inchiodato con questo messaggio:
    Devo istallare ancora Software?

    Saluti Vincenzo

    08.11.2020 11:15:44 hw_serial:104473ae7393000122002200df632df98b
    08.11.2020 11:15:44 fw_version:v0.31
    08.11.2020 11:15:44 ad9361-phy,xo_correction:40000072
    08.11.2020 11:15:44 ad9361-phy,model:ad9363a
    08.11.2020 11:15:44 local,kernel:4.14.0-42540-g387d584
    08.11.2020 11:15:44 usb,idVendor:0456
    08.11.2020 11:15:44 usb,idProduct:b673
    08.11.2020 11:15:44 usb,release:2.0
    08.11.2020 11:15:44 usb,vendor:Analog Devices Inc.
    08.11.2020 11:15:44 usb,product:PlutoSDR (ADALM-PLUTO)
    08.11.2020 11:15:44 usb,serial:104473ae7393000122002200df632df98b
    08.11.2020 11:15:44 usb,libusb:
    08.11.2020 11:15:44 extendPluto, please wait…
    08.11.2020 11:15:46 extendPluto, serial auth ok…
    08.11.2020 11:15:47 extendPluto, hack ok…
    08.11.2020 11:15:47 extendPluto, reboot ok…
    08.11.2020 11:15:58 Connecting to usb:1.2.5
    08.11.2020 11:15:58 Successfull connection to usb:1.2.5
    08.11.2020 11:15:58 hw_model:Analog Devices PlutoSDR Rev.B (Z7010-AD9363A)
    08.11.2020 11:15:58 hw_model_variant:0
    08.11.2020 11:15:58 hw_serial:104473ae7393000122002200df632df98b
    08.11.2020 11:15:58 fw_version:v0.31
    08.11.2020 11:15:58 ad9361-phy,xo_correction:40000072
    08.11.2020 11:15:58 ad9361-phy,model:ad9363a
    08.11.2020 11:15:58 local,kernel:4.14.0-42540-g387d584
    08.11.2020 11:15:58 usb,idVendor:0456
    08.11.2020 11:15:58 usb,idProduct:b673
    08.11.2020 11:15:58 usb,release:2.0
    08.11.2020 11:15:58 usb,vendor:Analog Devices Inc.
    08.11.2020 11:15:58 usb,product:PlutoSDR (ADALM-PLUTO)
    08.11.2020 11:15:58 usb,serial:104473ae7393000122002200df632df98b
    08.11.2020 11:15:58 usb,libusb:

    1. Buongiorno Vincenzo,
      se hai installato il firmware 0.31 mettendo solo pluto.frm allora dovresti anche installare il file boot.frm (lo trovi nello stesso file .zip del firmware 0.31), probabilmente nel tuo Pluto c’è un boot non compatibile con la versione 0.31
      Fammi sapere se funziona!

      1. Salve Alberto,

        ho appena istallato il driver boot.frm insieme con pluto.frm e cosi ho avuto accesso al software per far funzionare Adalm Pluto
        Io ho istallato Gnu-Radio con Python, ma dasi che é funzionante su Linux e non bene su Windows cosi ho cercato e ho trovato Satsagen.
        Adesso posso provare i filtri.

        Grazie di nuovo.

        Saluti Vincenzo Di Palma dalla germania

  23. Buongiorno Alberto,
    come ho detto in mio post precedente sto usando con soddisfazione il tuo sw.
    Ho provato ad installarlo su un altro vecchio pc che userei in laboratorio con w7 32bit ma mi da questo errore, premetto che ho installato sdr consolle e và e i driver sono correttamente installati:
    28/11/2020 18:40:13 *** Power ON, please wait… ***
    28/11/2020 18:40:13 Connecting to ip:
    28/11/2020 18:40:13 Connection to ip: failed, retrying…
    28/11/2020 18:40:13 Connection to ip: aborted
    28/11/2020 18:40:13 No SDR devices present?
    28/11/2020 18:40:13 Try to select another device with settings utility

    grazie ancora per aver condiviso il tuo lavoro, non è da tutti.

    73 de IZ1QXJ

    1. Ciao Antonio,
      hai provato a selezionare di nuovo il device in settings?

      Dal log che hai riportato sembrerebbe che l’applicazione non riesca ad accedere alla rete, in quanto non passa nemmeno un secondo tra un tentativo e l’altro, a causa forse di un firewall, antivirus o simili.
      Se provi a selezionare in settings il device, l’applicazione dovrebbe poi raggiungerlo via USB, piuttosto che con l’impostazione di default via IP.
      Fammi sapere!

  24. Grazie,
    perfetto ora và, non avevo visto la tua risposta.
    Complimenti ancora per il tuo SW.


  25. Thank you Thank you x1000 for this
    Excellent program
    Am a retired radio mac and this is my hobby
    All the best for you and the team making this possible
    Greetings from South Africa

    1. Hi Schalk!
      Thank you for your comment!
      I’m working to improve the program and write some tutorials!
      Stay tuned!
      73’s Alberto

    1. Hi Jon,
      I sent you an email.
      I hope to add compatibility to the RSP family quickly.
      Thank you so much!
      Best Regards

  26. Hi,

    I am trying to use your latest version with a generic RTL-SDR Dongle, but I get the following message when I turn on the analyser section. Am I missing something?

    18/03/2021 12:48:50 *** Power ON, please wait… ***
    18/03/2021 12:48:50 Connecting to RTL SDR id 0
    18/03/2021 12:48:51 Successfull connection to RTL SDR id 0
    18/03/2021 12:48:51 Default device TX correction curve set due to a empty INI file for selected device(C:\Program Files (x86)\\SATSAGEN\CurveCorrTX.ini)
    18/03/2021 12:48:53 Failed to artlsetGainM (returns -9)
    18/03/2021 12:48:53 >>>> sa_init return (-1)
    18/03/2021 12:48:53 >>>> sa_start return (-3)

    Do I need to install the drivers for ADALM-PLUTO, even though I am not using this hardware?

    My SDR hardware works fine when using the SDR# software.

    Any suggestions or help would be appreciated.

    Many thanks,


    1. Hello Chris,
      Try changing the USB port. I noticed incompatibility with USB 3.1 ports.
      Thank you!

      1. I did try a USB on the back of my PC, but it didn’t make any difference.

        Maybe my ‘DVB+T+DAB+FM’ device is not compatible for some other reason. I’ll monitor this page to see if anyone else experiences any similar issues.

        Best regards,


        1. Hi Chris,
          take an “old” USB-2 Hub….
          at my place it does not work on the blue USB-3, but using the old hub, then it works


    2. Hello,

      Same for me:
      24/08/2022 19:57:49 *** Power ON, please wait… ***
      24/08/2022 19:57:49 Connecting to RTL-SDR id 0
      24/08/2022 19:57:50 Successfull connection to RTL-SDR id 0
      24/08/2022 19:57:54 Failed to artlsetGainM (returns -9)
      24/08/2022 19:57:54 >>>> sa_init return (-1)
      24/08/2022 19:57:54 >>>> sa_start return (-3)

      I tried on different USB ports and I tried my old USB 2.0 HUB to connect my SDR dongle. The effect was the same.

  27. Hello Alberto,
    thanks for your fine software.
    A year ago you told that the software runs under Ubuntu wine. I used Ubuntu 20.04 with wine 6.0.1, but no success. The program can’t find the rtl-sdr dongle. I set the io channel attribute.
    Did you tried with a dongle? How should I configure the device setup?

    1. Hello there,
      Thank you for your comment!
      Unfortunately, USB devices aren’t recognized by Windows applications under Wine, except the serial communication ports.
      Wine 6.0 claims an initial USB driver support based on libusb library, but I haven’t been able to see working USB devices with that version anyway. We look forward to furthering Wine’s developments!
      At now, by setting the IP override, an ADALM-PLUTO can be used with SATSAGEN on Wine, for example via RNDIS.

  28. Alberto-
    Does this application support connecting to a Pluto over a network? My Pluto is not connected directly to my PC but to my WLAN via a network hub. It’s not on Thanks!

    1. Hi Brian,
      Sure, put your Pluto IP address on the Connection string (URI) override field from the Settings->Devices tab in this way:, e.g. ip:

  29. alberto, thanks for your efforts. i have been looking at the Pluto + product. do you see any reason why your software would not work with that product.

    Thanks, Steve

    1. Hi Steve,

      SATSAGEN works with Pluto +.
      The RX/TX linearization (also for the harmonic mode) for ADALM-PLUTO clones is supported from version
      Limitation: can handle only the first channel at now.




  30. Hi Alberto,
    First of all many thanks for the great software. Recently I tried to run it with my new Pluto Plus but the SDR needed too much time from reboot command to establish network connection. As a consequence, Satsagen did not find the radio. A delay of a few seconds (30) between reboot command and request for IP address should solve the issue. Is this possible to implement ?

    Thanks and regards

    1. Hi Andreas,
      Thank you so much for your comment.
      I’ll implement more delay, but it should be able to connect to Pluto+ after a power cycle, otherways there is an issue. In that case, try to log in to Pluto via SSH (user root, pw analog), and send these commands:
      fw_setenv compatible ad9364
      If it solution does not work, please send me a screenshot of the application when started up.
      Best Regards

      1. Hi Alberto,
        thank you very much for your help. Now my Pluto Plus works fine.
        I really enjoy that great software.


  31. Hi Alberto,

    Thanks for your work and releasing it for us to use, it is a very useful tool.

    I am currently using the Spectrum Analyser w/Tracking and saving the scan, I was hoping to open the resulting data in some python, but I’m not sure what the file is? Is there a way to get a CSV type file output, or convert the current outputted format to that?

    Thanks again

    Kink regards


    1. Hi Adam,

      Thank you for your comment.

      You can get the CSV format from right-click menu Export->Last completed TSA scan, or from Toolbar Next->Export TSA scan.



  32. I manage to connect my ADALM Pluto with Satsagen using LAN connection.
    On Setings—>Devices—>Connection settings —>i put “ip:” or whatever ip you have set to your ADALM Pluto
    And on the EXT In/Out Tab on CMD server, i used 30341 port

  33. Alberto, this is a fine piece of work. My Pluto had fw 0.30, so I upgraded my fw and libiio to 0.35 and 0.24 (the latest at this time) and encountered all kinds of warnings and error messages when using iio_attr and other compiled C programs I wrote using MinGW. SATSAGEN worked fine though. I have since downgraded back to fw=0.30 and libiio=0.21 and fortunately SATSAGEN works with that. I had only upgraded because you noted fw=0.31. I have two B version Plutos (only 1 Rx/Tx). I need to send you some PayPay money for this good work. Thank you for putting this out and even providing English versions of the documentation (since I’m a dumb single language American).

  34. Hi Alberto,
    very good program. But when i use two hackrfs for tracking , i can not calibrate the -40db. It says
    the hackrf does not understand the command. Calibartion for db is working.
    Best regards Ferdinand

    1. Hi Ferdinand,

      Thank you for your comment!

      We have added the -40 dB calibration to smooth the -40 dB region, which is not very linear in Pluto. I don’t know if that is valid also for HackRF devices.

      To run the -40 dB calibration, the input should be approximately at that level, or an error is fired otherwise, so you should attenuate or set 0 dB RX gain and -40 dBm of TX output.



  35. Congratulations on the excellent SATSAGEN software. I would like to know how I could manually adjust the measured signal power scale, in the Spectrum Analyzer with Tracking function. By default, the scale automatically adjusts to a very high maximum level, of +200 dBm. The ideal would be a maximum of around +10 dBm and a minimum of around -50 dBm.

    1. Hi Gil,

      Thank you so much!

      With the last Satsagen versions, you can select the preferred scale acting by the dB/Div knob located near the Power button.

      To move up/down the Y-axis, click the mouse on the left side of the grid, over the numbers, and drag.

      The preference will be automatically saved for the next sessions.


      Alberto IU1KVL

  36. Thanx for providing such an important tool. Do I need attenuator, since i am using L band frequency of 950 Mhz to 2150 Mhz.

    1. An attenuator is used to improve impedance matching, and it is preferred to use when the input power is more than -10 dBm. It is not mandatory if the input power is in the SDR device’s maximum ratings specs.
      Thank you

  37. Hi Alberto,
    I’m facing a problem with y-axis labelling when trying to use the PlutoSDR as a spectrum analyzer, where I get “undefined/div”. Is there a way to fix it to “dBm”? Also, when generating a signal, another problem occurred when I tried to adjust the powerTX, I noticed no change in the spectrum.
    Thank you for the amazing work you’ve put into this.

    1. Hi Abdullah,
      The unleveled scale is displayed when the RX gain mode selector is set to one of the ACG available modes. Try to set it to manual mode and leave the RX gain to zero initially; this procedure enables the Y-axis to dBm scale.
      Saturation issues can occur when the ACG is enabled or at high levels of RX gain. The levels displayed could be invalid in these cases.
      Try to set the RX gain mode to manual and put some attenuation on the TX side.
      Thank you.

  38. Hello Alberto,
    Thank you for your fantastic work around SatSagem. I have been using V.05.03.04 for over 2 years with a Pluto revision B.
    I just purchased a D version and here is my question:
    – Is it possible to use this same version of SatSagem (V.05.03.04) and obtain automatic unlocking around 6 GHz or I must put V.07.1.4 or V.07.2.0 or even V.08.0 .0
    Thank you for your response and congratulations again for your work.
    Denis (F6ITK)

    1. Hi Denis,
      Thank you so much for your comment!
      You can use Satsagen v. only with Pluto D with a firmware version below 0.35 for unlocking up to 6 GHz, so I suggest you upgrade Satsagen to the latest version available, also to enable the Pluto 2nd channel and obtain many other important features of Satsagen.
      Thank you again!
      73’s Alberto

  39. Hi Alberto,
    Thanks for your quick answer.
    You can confirm to me that I can, firstly, connect my Pluto “D” (written on the printed circuit) which currently has v.0.32 with the SatSagem v.05.3.4 and that unlocking will be automatic and use simple to get started without all the extensions or it will cause instability ?
    If all goes well after a few manipulations, I will then make Pluto with its firmware v.0.38 and your SatSagem V.08.0.0
    So what is the real difference between the Pluto Rev “C” and the Rev “D” ?
    I’m a little lost on this point.
    Thank you for your details with my cordials 73.

    1. Hi Denis,
      I confirm that Pluto Rev C/D works with firmware 0.32 and Satsagen as you want.
      Yes, there is a little confusion about C and D Pluto revisions. For us user owners there aren’t differences, so forget C and D, are the same.
      73’s Alberto

      1. Hi Alberto,
        Thank you very much Alberto for your help, your sharing and your comforting kindness within our community.
        This is good in our current society.
        I will give you news regarding our measures
        73’s Denis

Leave a Reply to Alberto Cancel reply

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