Software Defined Radio: Practical Applications

Course length:

3 Days



Course dates

Interested in attending? Have a suggestion about running this course near you?
Register your interest now

Want to run this event on-site? Enquire about running this event in-house


This three-day course will provide the foundational skills required to develop software defined radios using the GNURadio framework. This course consists of both lecture material and worked SDR software examples. The course begins with a background in SDR technologies and communications theory. The course then covers programming in the Linux environment common to GNURadio via examples of SDR without a framework like GNURadio. Then introductory GNURadio is presented to demonstrate the utility of the stock framework. Worked examples in the GNURadio Companion GUI are used to demonstrate basic SDR signal processing functions. Then the class will cover how to develop and debug custom signal processing blocks. A worked example of an OOK modem is used to demonstrate working with data buffers in GNURadio. The advanced features of GNURadio will be covered such as RPC, message passing, data tagging, and burst (event) processing. Finally, additional open-source packages such as GQRX, gr-modes (ADS-B) , and REDHAWK are presented. Each student will receive a complete set of lecture notes as well as a complete SDR development environment (Virtual Machine) preloaded with the worked examples of GNURadio applications.

Each attendee needs a laptop/desktop for this class.  Requirements for the computer are:  1) A 3.0 USB port, 2) Minimum of 4GB RAM and, 3) Intel i5 processor or better.  An understanding of programming is recommended.

A RTL-SDR dongle is also provided to each student (to keep) for the worked examples in the class.

What You Will Learn:

  • What applications utilize SDR.
  • Common SDR architectures.
  • Basic communications theory (spectrum access, modulation).
  • Basic algorithms utilized in SDR (carrier recovery, timing recovery).
  • Channel and Hardware Impairments.
  • Modem structure.
  • Linux software development and debugging. (with worked examples)
  • SDR development in GNURadio Companion. (with worked examples)
  • Custom signal processing in GNURadio. (with worked examples)
  • Worked examples of SDR Modems in GNURadio. (with worked examples)
  • Advanced GNURadio features (with examples of stream tags, message passing, control port).

Course Outline:

  1. Basic Communications Theory. Spectrum analysis. Media access. Carrier modulation. Bandwidth utilization. Error correcting codes.
  2. Basic Radio Signal Processing. Sampling theory. Filtering. Carrier recovery. Timing recovery. Equalization. Modulation and demodulation.
  3. Channel and Hardware Signal Impairments. Path loss. Multi-path. Noise. Doppler. IP3, 1-dB Compression, Noise Figure, IQ Imbalance.
  4. Software-Defined Radio Development in Linux. C++ and Python software development in Linux. Worked example of building C++ and Python signal processing programs in Linux. Build systems. Debugging using GDB. Worked examples of debugging with GDB. Profiling tools to measure SDR software performance. Integrated Development Environments. Eclipse and LiClipse. Worked examples of the SWIG C++ to Python interface generator used in GNURadio.
  5. Introduction to GNURadio. GNURadio architecture. Flowgraphs and data buffers. Stock signal processing blocks. How to set-up a GNURadio development environment (like the one provided with the class). Developing with GNURadio Companion. Worked examples in GNURadio Companion including a QPSK data modem. Worked example of a python GNURadio app. Working with SDR hardware such as the USRP. Worked example with RTL-Dongle.
  6. Custom Signal Processing in GNURadio. Worked example of how to write a GNURadio signal processing block. Generating block skeleton code. Populating the signal processing. Compiling and debugging the signal processing. Communicating with and monitoring the signal processing in operation.
  7. Burst processing in GNURadio. Worked example for custom signal processing to demodulate OOK burst signals. Demonstration of working with GNURadio data buffers and writing general work functions to consume and produce data in processing blocks.
  8. Advanced GNURadio features. Overview of advanced GNURadio features. Worked examples of system logging. Worked examples of message passing and burst processing with PDUs. Worked examples of metadata passing using stream tags. Worked example of burst processing using metadata enabled tagged-streams. Worked example of external process monitoring using GNURadio control port. Worked example of hardware accelerated signal processing using the VOLK optimized kernel library.
  9. Open source SDR projects. Discussion and simple demonstration of available open-source SDR projects. Scanner utilities such as GQRX, SDR#, and Baudline. SDR modems projects such as ADS-B, AIS, Airprobe and OpenBTS.
  10. Introduction to REDHAWK. Worked examples in the REDHAWK IDE. Worked examples of writing signal processing blocks in REDHAWK. Worked example of how to integrate GNURadio processing into REDHAWK applications.


Dr. Mark Plett has 20 years experience developing Communications Systems. He has worked at several telecommunications start-ups as well as the DoD, and Microsoft. Most recently, Dr. Plett works at the Johns Hopkins Applied Physics Lab (APL) where he has spent the last 10 years developing software-defined radios for a variety of DoD applications. Dr. Plett was the Principal Investigator for the DARPA Spectrum Collaboration Grand Challenge (SC2). For SC2, Dr. Plett oversaw the development of the world’s largest Wireless Emulation Environment composed of over 256 software-defined radios. He is active in the open source SDR community and has contributed source code to the GNURadio project. Dr. Plett received his Masters in Electrical Engineering from the University of Maryland in 1999 and his Ph.D. in Electro-physics from the University of Maryland in 2007. Dr. Plett is a licensed Professional Engineer in the State of Maryland.

Dr. Daniel Chew has a B.E.E. from the University of Delaware and an M.S.E.E. in Electrical Engineering from Johns Hopkins University. He is currently a member of the Senior Professional Staff at the Johns Hopkins University Applied Physics Laboratory.  He has held positions in industry at Thales Group and The Boeing Company. He has been a Lecturer at Johns Hopkins University since 2011.



REGISTRATION: There is no obligation or payment required to enter the Registration for an actively scheduled course. We understand that you may need approvals but please register as early as possible or contact us so we know of your interest in this course offering.

SCHEDULING: If this course is not on the current schedule of open enrollment courses and you are interested in attending this or another course as an open enrollment, please contact us at (410)956-8805 or Please indicate the course name, number of students who wish to participate. and a preferred time frame. ATI typically schedules open enrollment courses with a 3-5 month lead-time. To express your interest in an open enrollment course not on our current schedule, please email us at

For on-site pricing, you can use the request an on-site quote form, call us at (410)956-8805, or email us at