sample decoded NOAA image
sample decoded NOAA image

Hello and welcome to the page on DirectDemod. In this page we will describe what the project is, why it is needed and how to get involved to contribute.

SDR : Software Defined Radio

We all are familiar with radios that we use to listen to FM radio stations. These kind of consumer radios are optimized to receive frequency modulated audio signals. However SDR is a software defined radio, what that means is we have a „radio“ that we can connect to a computer and „control“ it using software. For example to tune the radio to a particular frequency we need not turn some knob on the device, but configure it using software. The range of frequency of operation of these SDRs is usually froma few hundred kHz to about a GHz. These SDRs can transmit the received raw signal to the computer at the required sampling rate. Hence they can be used as cheap receivers for satellite signals. Here is a video showing one.

The raw signal that these devices record are in the form of inphase (I) and quadrature (Q) components of the signal. The software that is used to record this data writes it into a file with I and Q data at the specified sampling frequency. Here on whenever IQ.wav (or IQ.dat) is mentioned, it means that this file is a SDR recording.

If you have never worked with SDRs and dont have access to them, no need to worry. You dont require them to contribute. We will provide you with the data files and you can play around with them. One such file is given in the repository. IQ.wav files have two channels, one I and one Q and the sampling rate is also in the file header. To get a general feeling of this, download the software (SDRsharp) that is used to interface with the device itself. You can choose in the software to instead read the data from a file and have a look at the signal.

NOAA, METEOR M2, & Cubesats

NOAA weather satellites were launched by NASA and they orbit around the earth, constantly sending down the pictures of earth freely. In order to capture this signal we have to just tune our SDR to the frequency of the satellite and then process the signal. Here is a demo where the data is captured using an SDR and the image is extracted using a software.

Meteor M2 is a Russian satellite, it also sends images of earth, but the modulation and type of image is different. Cubesats are small satellites. There is a lot of them with various functionalities. Usually they are very small and hence do not transmit with high bit rate and send less data.

We encourage you to explore more about these above satellites, learn what the satellites are capable of doing, what kind of signal they are transmitting and how to demodulate the signal to get required data.

What is DirectDemod

If you have seen the video above where the software is used to get the image from SDR, we can observe that several software are being used and a lot of manual button pushing is required to get the job done. A lot of the software being used are not open source and hence cannot be easily customized. DirectDemod aims at being a one stop solution for all, you just give an IQ.wav file and the software will decode the signals to produce the requried outputs.

Another main goal of DirectDemod is to detect the synchronization signals sent by the satellites accurately. What? The satellites send out some synchronization signals periodically. We need to detect these signals as accurately as possible. Why? The signals from satellites takes some time to reach the receiver. If we have several of these receivers, all looking for the same sync signal, by measuring the difference in the time of arrival of these signals we can estimate where the satellite is. So we can use this to track the satellite while it is orbiting the earth.

Hence an opensource software was needed to be developed that can be used easily to solve these problems.

Test out the software

Now that you have a general Idea of what the software is doing. Why not try out a sample image extraction. Clone the repository. Be sure to install all the dependencies (Listed in documentation). Download a sample IQ.wav file from here (Its compressed, remember to extract it). Run the software using the command

python -f 137100000 -d noaa SDRSharp_20180328_043010Z_137130000Hz_IQ.wav

If there are no errors you should see an image in the same directory as the source file. Try to play around with the software to get a feel of it.

How to contribute?

We are really glad that you want to contribute to our project! In order to contribute to the project, you will need to have some prerequisites such as:

  • Basics of communication systems: types of modulation techniques (Frequency, Amplitude, etc.), demodulation techniques, IQ components.
  • Signal processing: Filter design and use
  • Python programming (Advanced: OOPS, Inheritance, NumPy, Image processing).

Now that you have a general idea of what this software is doing (taking an SDR recording and extracting required data from it) you can start by reading GSoC2018 blogs to understand what has been implemented and a brief description of how it was done. The final blog (which has links to all the other blogs) can be found here.

After you have read the blogs, you can proceed to familiarize yourself with the actual code. You can start by going through the experiments, these are basically Jupyter Notebooks that contain essential information of signal processing aspects of the software. It is highly essential that you understand how to use the implemented blocks of code to process the signals in a fast and memory efficient way. Experiment 3 is the most important of all, as it covers concepts of chunking and using filters.

After you have gone through the experiments briefly, find the tutorial folder in the repository. Follow the tutorial files to get some hands on experience on using IQ.wav files with DirectDemod modules.

Remember that during all this you can always refer to the documentation which will contain information on how to use the objects and functions.


  • GitHub repository:
  • Documentation:
  • GSoC 2018 Final blog and links to other blogs:
  • ZulipChat: