Suggested Reading Order

The SuggestedReading page suggests a large number of references to read through. It is not necessary to read through all of them, since:
  • many of them are redundant,
  • depending on your background you may already know some of the material, and
  • you may not need to know everything for what you need to do, as GNU Radio does a good job of abstracting several low level details.

Hence most newcomers may only need to read through a small subset of the references. This page presents suggested reading order for newcomers coming from different backgrounds in order to get started quickly.

If You're Coming From A Programming Background...

You may already be familiar with various programming languages. If you already know C++ and Python, you can directly start of with the signal processing side of things. Even if you know only C++, you can get a hang of Python really quickly; you may not be able to write idiomatic Python, but you can write C-like Python and do well enough. The following may be a good reading order for you:

  1. Digital Signal Processing (DSP): starting with the basics of signals & systems, sampling, filters and so on. "Understanding Digital Signal Processing" by Richard Lyons is a really good reference, but you can try starting off with the free online book at, and see if that is enough for your needs. However, the Lyons book is widely regarded as a classic.
  2. Digital Communications: DSP principles as applied to communications: filters, modulation, demodulation, coding, noise, interference etc. Personally, I found the MIT coursework reference ("Principles of Digital Communications I" on OCW) overly theoretical, so you can skip that. It appears to be targeted at graduate-level students. The tutorials provide a relatively very brief but decent overview. Any one of the books in the Digital-Comms section at SuggestedReading may be a good enough reference, except maybe for the following (WARNING: I have not read any of the following books, and am judging them purely on the titles alone. I provide reasons why I think the following references may not be as useful as the others):
    • "Digital and Analog Communication Systems" by Leon W. Couch II - since GNU Radio is almost completely digital, you may not need to know analog modulation, and any material dedicated to that topic may be less relevant to you.
    • "Multirate Signal Processing for Communication Systems", by fredric j harris - Multirate is a slightly more advanced topic, which not everybody needs. If you expect to work with multirate DSP, though, this may be useful for you.
  3. Software Radio in General: once you understand the previous two sections, you'll see that most signal processing can be implemented as algorithms on a stream of numbers. The details of Software Radio may then be intuitive to you as a programmer. So it may be enough to skim through some of the briefer references in this section, and focus on the GNU Radio docs / articles.

If you don't need to mess with the FPGA or the hardware, you can safely skip the Electronics and Verilog sections.

If you don't need to deal with techniques requiring advanced RF topics or antenna design (e.g. MIMO etc.), you can safely skip the Radio and RF design section, although a skim of Wikipedia on the topic can't hurt. Given the DSP background above, it may be sufficient just to be aware of the following concepts: fading, multipath propagation, frequency up-conversion and down-conversion. may be a decent starting point for both, DSP basics, and Digital Communications, especially if you want to get started really quickly. Personally, overlooking minor typos, I thought the "Fourier Analysis Made Easy" tutorials were easy to read and explained some concepts pretty well.