Practical Software Defined Radio Development

ATI Courses Logo

Broaden Your Knowledge & Increase Productivity

Training Rocket Scientists Since 1984

(410) 956-8805
(888) 501-2100

Practical Software Defined Radio Development

3-Day Course

$2090 per person


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 development. GNURadio is introduced through a presentation on the basic concepts of the framework and worked examples which utilize existing GNURadio signal processing components. Then the class will cover how to develop and debug custom signal processing blocks in the context of a working SDR modem. Finally, the advanced features of GNURadio will be covered such as RPC, data tagging, and burst (event) processing. This class will present SDR development best practices developed through the development of over a dozen SDR systems. Such practices include approaches to quality assurance coding, process monitoring, and proper system segmentation architectures.

Each student will receive a complete set of lecture notes as well as a complete SDR development environment preloaded with the worked examples of GNURadio applications.

Please bring a laptop with a USB port to this class.

GNU Radio Wiki

  • What applications utilize SDR
  • Common SDR architectures
  • Basic communications theory (spectrum access, modulation)
  • Basic algorithms utilized in SDR (carrier recovery, timing recovery)
  • Modem structure
  • Linux software development and debugging
  • SDR development in GNURadio Companion
  • Custom signal processing in GNURadio
  • Worked examples of SDR Modems in GNURadio
  • Advanced GNURadio features (stream tags, message passing, control port)
  1. Introduction to Software Defined Radio. Applications of SDR. Common software defined radio hardware architectures. Common software defined radio frameworks such as GNURadio, REDHAWK, and Matlab. Discussion of the differences and strengths of each.

  2. Basic Communications Theory. Spectrum analysis. Media access. Carrier modulation. Bandwidth utilization. Error correcting codes.

  3. Basic Radio Signal Processing. Sampling theory. Filtering. Carrier recovery. Timing recovery. Equalization. Modulation and demodulation.

  4. The Linux Programming Environment. Introduction to the Linux operating system. Architecture of the Linux operating system (Kernel and User spaces) Features of the Linux OS useful to development such as Package managers, command line utilities, and BASH scripting. How software is compiled, linked, and executed by the Linux kernel.

  5. Software Development in Linux. C++ and Python software development in Linux. Worked example of building a C++ program in Linux. Build systems such as MAKE, CMAKE, and AUTOTOOLS. Debugging using GDB. Worked examples of debugging with GDB. Profiling tools to measure SDR software performance. Packaging and revision control for software distribution. Integrated Development Environments. Eclipse and LiClipse. Scripting languages such as Python. Worked examples of Python scripting. Worked examples of the SWIG C++ to Python interface generator used in GNURadio.

  6. 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 example in GNURadio Companion. Developing a GNURadio application in python. Worked example of a python GNURadio app. Working with SDR hardware. Worked example with RTL-Dongle.

  7. 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.

  8. Best Practices in GNURadio Development. Discussion of techniques for the development of deployable, maintainable and extensible SDR applications. Architectures to segment proprietary code from GPL code. Logging and monitoring techniques. Code libraries and developing for re-use.

  9. 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.

  10. 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.

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. For on-site pricing, you can use the request an on-site quote form, call us at (410) 956-8805, or email us at


Dr. Mark Plett

Dr. Mark Plett has 15 years experience developing Communications Systems. He has worked at several telecommunications start-ups as well as the DoD, and Microsoft. Most recently, Dr. Plett is a Principal professional member of the Johns Hopkins Applied Physics Lab (APL) directing the Wireless Cyber Capabilities Group there. Dr. Plett has spent the last 7 years developing software-defined radios for a variety of DoD applications. 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.Electro-physics from the University of Maryland in 2007. Dr. Plett is a licensed Professional Engineer in the State of Maryland.

Contact this instructor (please mention course name in the subject line)

Sample Video