GNU Radio Decodes Voyager Data

With the 44th anniversary of the launch of Voyager I, [Daniel] decided to use GNU Radio to decode Voyager data. The data isn’t live, but a recording from the Green Bank Telescope. The 16 GB file is in GUPPI format which stores raw IQ samples.

The file contains 64 frequency channels of just under 3MHz each. The signal of interest is in one channel, so it is easy to just throw away the rest of the data.

A Python block manipulates the file and provides a data source. Once you have that, the rest is pretty standard processing although, as you might expect, the signal is weak even with a 100 meter antenna. Large Fourier transforms do the trick.

Then it is a matter for decoding, although there are some obscure keys needed to pull the data out correctly. In the end, it all shows up and it is a great detective story of how to go through the data step-by-step.

It is amazing what Voyager does with old tech. If you need a bootstrap on GNU Radio, check out our series.

12 thoughts on “GNU Radio Decodes Voyager Data

        1. How do you know there is “no worthwhile information”? I had a look at his blog and skimmed the page he links to with the spec of a GUPPI file. This particular file was used by Green Bank as a test for SETI. The file format name means Green bank Ultimate Pulsar Processing Instrument. The 64 channels record the output of a filter bank in order to record multiple carrier frequencies in parallel. The Voyager 1 signal is only about 100KHz wide so fits easily into one channel. For this project, the other channels are not relevant rather than “not worthwhile”.

      1. I had a look at your blog and nearly fell down the rabbit hole of reading about GUPPI! Too old for that stuff. My RF theory is nearly 50 years out of date! Yours project is fascinating. I have the DSN NOW page bookmarked and look in regularly to see if they are listening to one of the Voyagers. That Voyager 1 is now more than 21 hours away at light speed is mind blowing. The transmitter is only 22 watts.

    1. It is not a diagram, it is a signal decoder created in GNURadio Companion. You take necessary blocks and connect them in desired manner, then adjust parameters and get a working signal-processing device.

    2. As the others have said, that’s the GNU Radio Companion. It’s a graphical tool to design *signal processing flow graphs* – which actually are converted to signal processing software.

      GNU Radio is like a toolkit with a lot of building blocks for a signal processing chain – it comes with most of the things you’d expect, from filters, transforms, simple arithmetics, squelches, displays – and with the means to connect these and then run the resulting program on whatever data source you’ve connected. Can be a file, but can also be a live receiver, or a network socket, for example. And it does with the digital signals whatever you want: display them, write them to a file, send them to an MPEG encoder, or transmit them, live, over transmitter hardware. Also, you can write your own signal processing “blocks” in case something is missing that you know to implement in C++ or Python.

      Rob, you’d probably like to read the “Introduction to GNU Radio and Software Radio” (it’s but a screen page or so):
      https://wiki.gnuradio.org/index.php/Guided_Tutorial_Introduction

      So, GNU Radio is the underpinning that actually does the signal processing and data shuffling. The GNU Radio companion allows people to draw these diagrams, which they often use to *communicate* to others (and document for themselves) what they’re doing. Of course, the fact that the result is automatically functioning (and if your design is correct, useful, even) high-perf signal processing is a big plus to most of us ;)

  1. Hey, Daniel does a great deal of great things – his whole gr-satellites, with modems (! both ways!) for amateur (and other) satellites is a giant leap for both the GNU Radio and the citizens ground stations communities (they do overlap).

    One thing: Please don’t refer to your GNU Radio tutorial from 2015 without a small disclaimer – things really have changed in GNU Radio since then (imho, for the better), and that might confuse the unwarned beginner. For example, WX GUI has been completely removed – so the whole section about it doesn’t apply anymore. Then, GNU Radio 3.9.2.0 (and later) comes with gr-soapy built in – that means all the SDR hardware for which a SoapySDR plugin exists can be used without needing any third-party GNU Radio module (gr-osmosdr). This applies to RTL-SDRs, hackrfs, bladerfs, limesdr,…

    Then, we’ve got improvements in every corner. For example, the Embedded Python block is something that didn’t exist in 2015 – but would be quite handy to know in this day and age! Same for the Symbol Sink block that Daniel uses.

    All in all, I like your (Al’s) 2015 Tutorial – but it’s starting to show its age. For beginners, we’re trying to polish the GNU Radio Academy tutorials as much as possible, but that’s a hard task with limited feedback. So, if you are a beginner: Head over to https://tutorials.gnuradio.org , and start with the first chapter (they are designed to build upon each other, so really do), and complain (extensively so! But please be nice; the people trying to get this perfected are organizing a conference in the meantime) when something is mysterious, wrong, or badly explained. **I** think they do a pretty nice job, but I might have been using GNU Radio for a decade and hence be biased.

Leave a Reply to Rob Cancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.