NewTutorial

Beginning Tutorials
Please start here if you are new to GNU Radio. These tutorials show you how to install GNU Radio, build your first flowgraph, create your first custom block and how to use DSP blocks in flowgraphs.

Introducing GNU Radio
These introductory tutorials are intended for new users and walk you through installing GNU Radio and creating your first couple of flowgraphs using GNU Radio Companion.

Flowgraph Fundamentals
These tutorials describe flowgraph fundamentals such as variables, signal data types, and vectors and streams.

Creating and Modifying Python Blocks
These tutorials describe how to create and modify custom Python blocks, using message passing, PMT types and tags.

DSP Blocks
The following tutorials will describe how to build flowgraphs with basic DSP blocks.

Advanced Tutorials
The following tutorials describe advanced topics in GNU Radio such as creating your own out-of-tree signal processing block and digital modulations using GNU Radio.

Creating Custom Blocks
The following tutorials describe how to create a custom signal processing block in GNU Radio and how to write the accompanying files with the block.
 * 1) Understanding a Flowgraph's Python Code
 * 2) Out of Tree Modules
 * 3) Writing blocks in c++
 * 4) Writing the XML file for a block for GNURadio v3.7
 * 5) Writing the YAML file for a block for GNURadio v3.8+

Using GNU Radio with a Radio

 * 1) Using GNU Radio With Hardware

Modulation and Demodulation
These tutorials describe digital modulations within GNU Radio.
 * 1) Narrowband FM
 * 2) Single Sideband (SSB)
 * 3) BPSK Demodulation
 * 4) QPSK Modulation and Demodulation
 * 5) Frequency Shift Keying (FSK)
 * 6) Orthogonal Frequency Division Multiplexing
 * 7) Packet Communications

Metadata
The following tutorials describe how to use metadata within GNU Radio, such as stream tags and messages. Metadata represents information about the radio system, separate from the information contained in the digitized RF data streams. Metadata can include information such as timestamps or the frequency the radio receiver is currently tuned to.


 * 1) Stream Tags
 * 2) Polymorphic Types (PMTs)
 * 3) Message Passing
 * 4) Understanding ZMQ Blocks

Porting Blocks and Flowgraphs
These tutorials demonstrate how to update a GNU Radio flowgraph from an older version to a newer one.
 * 1) Porting Existing Flowgraphs to a Newer Version
 * 2) Porting Existing OOTs from 3.7 to 3.8
 * 3) Porting Existing OOTs from 3.8 to 3.9

DSP Background
The following pages describe background information on digital signal processing.


 * 1) A Brief Introduction to GNU Radio, SDR, and DSP
 * 2) Understanding Sample Rate

Developer Resources

 * 1) Volk- what it does, why it rocks, how to write new kernels
 * 2) Working with ALSA and Pulse Audio
 * 3) Using Visual Studio Code for Source level debugging of C++ OOTs
 * 4) Using Eclipse for Building and Source level debugging C++ OOTs
 * 5) Using Code::Blocks IDE for GNU Radio Development
 * 6) Git and GNU Radio
 * 7) How to use Octave or Matlab with GNU Radio
 * 8) GNU Radio Scheduler
 * 9) Using Custom Buffers for Hardware Accelerated Blocks
 * 10) Remote Control and Automation of Flowgraphs with XMLRPC

Deprecated Tutorials

 * 1) Guided Tutorial GRC
 * 2) Writing your own block (using Embedded Python Block)