Tutorials: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
(redirect Guided_Tutorial_PSK_Demodulation to QPSK_Mod_and_Demod)
 
(98 intermediate revisions by 9 users not shown)
Line 1: Line 1:
= Guided Tutorials =
Please leave tutorials-related feedback (either for an individual tutorial or overall organization) in the [[Talk:Tutorials|Discussion]] page of this article (tab at the top), we are always looking for ways to improve.


These tutorials are designed to guide new GNU Radio users to a better understanding of the project: how to work with it, interact with the library, and build your own components and blocks. By the end, you should be comfortable with many of the capabilities of GNU Radio and have some sense for the available tools, functions, and tricks to building your own signal processing project.
{|
 
|- valign="top"
Please send clearly labeled feedback to: tutorials AT gnuradio.org.
|{{BeginnerTutorials}}
 
|
0. [[InstallingGR|Installing GNU Radio]]<br />
{| class="wikitable" style="background-color:#f1edff;" cellpadding="10"
1. [[Guided_Tutorial_Introduction|Introduction]]<br />
|'''Intermediate/Advanced Tutorials'''
2. [[Guided_Tutorial_GRC|Working with GRC]]<br />
Core GNU Radio Mechanics
3. [[Guided_Tutorial_GNU_Radio_in_Python|Programming GNU Radio in Python]]<br />
# [[Stream_Tags|Stream Tags]]
4. [[Guided_Tutorial_GNU_Radio_in_C++|Programming GNU Radio in C++]]<br />
# [[Polymorphic_Types_(PMTs)|Polymorphic Types (PMTs)]]
5. [[Guided_Tutorial_Programming_Topics|Programming Topics]]<br />
# [[Message_Passing|Message Passing]]
6. [[Guided_Tutorial_Hardware_Considerations|Using GNU Radio with Hardware]]<br />
Modulation and Demodulation
7. [[Guided_Tutorial_PSK_Demodulation|PSK Symbol Demodulation]]
# [[Simulation_example:_Narrowband_FM_transceiver|Narrowband FM]]
 
# [[Simulation_example:_Single_Sideband_transceiver|Single Sideband (SSB)]]
= Beginner-level tutorials =
# [[QPSK_Mod_and_Demod|QPSK Mod and Demod]]
 
# [[Simulation_example:_BPSK_Demodulation|BPSK Demodulation]]
Note that even as a GNU Radio beginner, you'll be delving into the realm of software defined radio, which is a complex field.
# [[Simulation_example:_FSK|Frequency Shift Keying (FSK)]]
 
# [[Basic_OFDM_Tutorial|OFDM Basics]]
* [[TutorialsCoreConcepts|Core concepts of GNU Radio applications]] - A must-read for everyone
# [[Packet_Communications|Packet Communications]]
* [[TutorialsWritePythonApplications|WritePythonApplications]] - A tutorial on how to develop Python GNU Radio applications. Some DSP and programming background required.
# [[File_transfer_using_Packet_and_BPSK|File transfer using Packet and BPSK]]
* [[TutorialsQTGUI|QTGUI Tutorial]] - A tutorial on how to develop Python GNU Radio applications. Some DSP and programming background required.
Custom Blocks and Out of Tree (OOT) Modules
* [http://www.trondeau.com/gr-tutorial/ Tom Rondeau's gr-tutorial] - Some tutorials from the boss himself.
# [[Creating_Python_OOT_with_gr-modtool|Creating an OOT (Python block example)]]
* [[TutorialsSimulations|Simulations]] - A tutorial on how to use GNU Radio without hardware to verify performance and simulate RF conditions.
# [[Creating_C++_OOT_with_gr-modtool|Creating an OOT (C++ block example)]]
* [[Basic OFDM Tutorial]] - Basics of OFDM and how to do rx and tx in GNU Radio
# [[YAML_GRC|Writing the YAML file for a block (GR 3.8+)]]
 
Miscellaneous
= Tutorials on developing with and for GNU Radio =
# [[Flowgraph_Python_Code|Understanding a Flowgraph's Python Code]]
 
# [[Guided_Tutorial_Hardware_Considerations|Using GNU Radio With SDRs]]
== Writing GNU Radio code ==
# [[IQ_Complex_Tutorial|IQ and Complex Signals]]
 
# [[Sample_Rate_Tutorial|Understanding Sample Rate]]
* [[OutOfTreeModules|Developing out-of-tree modules and writing blocks]] - This is the first tutorial you should entirely read and comprehend.
# [[Understanding_ZMQ_Blocks|Understanding ZMQ Blocks]]
** [[OutOfTreeModulesConfig|Tutorial on how to configure OOT packages to find and link against GNU Radio]]
# [[Bandlimited_threshold_detector| Bandlimited Threshold and Detection Demo Application]]
* [[TutorialsTaggedStreams|Tagged streams for variable-length PDUs]]
# [[Pushbutton_IQ_Recorder_with_descriptive_filenames| Pushbutton I/Q Recorder with Descriptive File Names]]
* [[TutorialPythonFunctions|Writing a Python Function for GRC]]
|}
 
|
== Advanced Development ==
{| class="wikitable" style="background-color:#f1edff;" cellpadding="10"
 
|'''Developer Resources'''
* [[TutorialsDebugging|How to debug your applications]]
# [[Porting_Existing_Flowgraphs_to_a_Newer_Version|Porting Existing Flowgraphs to Newer Version]]
* [[Octave|How to use Octave or Matlab with GNU Radio]]
# [[GNU Radio 3.10 OOT Module Porting Guide|Porting Existing OOTs from 3.9 to 3.10]]
* The GNU Radio Scheduler http://www.trondeau.com/blog/2013/9/15/explaining-the-gnu-radio-scheduler.html
# [[GNU_Radio_3.9_OOT_Module_Porting_Guide|Porting Existing OOTs from 3.8 to 3.9]]
* [http://www.brainshark.com/SPS/vu?pi=zH8zQcV8dzAXPbz0 VOLK Introduction]
# [[GNU_Radio_3.8_OOT_Module_Porting_Guide|Porting Existing OOTs from 3.7 to 3.8]]
* [[TutorialsRemoteGUI|Remote GRC Operations]]
# [[VOLK_Guide|VOLK: What it does, why it rocks, how to write new kernels]]
* [[ALSAPulseAudio|Working with ALSA and Pulse Audio (Audio sink/source under Linux)]]
# [[ALSAPulseAudio|Working with ALSA and Pulse Audio]]
 
# [[UsingVSCode|Using Visual Studio Code for Source level debugging of C++ OOTs]]
== Development tools ==
# [[UsingEclipse|Using Eclipse for Building and Source level debugging C++ OOTs]]
 
# [[UsingCB|Using Code::Blocks IDE for GNU Radio Development]]
* [[DevelopingWithGit|Git and GNU Radio]] - A starter on how to use Git for GNU Radio development
# [[DevelopingWithGit|Git and GNU Radio]]
* [[UsingVim|Using VIM for editing GNU Radio modules]]
# [[Octave|How to use Octave or Matlab with GNU Radio]]
* [[UsingCB|Using Code::Blocks for editing GNU Radio modules]]
# [http://www.trondeau.com/blog/2013/9/15/explaining-the-gnu-radio-scheduler.html The GNU Radio Scheduler]
* [[UsingEclipse|Building and source level debugging C++ OOT modules with eclipse]]
# [[CustomBuffers|Using Custom Buffers for Hardware Accelerated Blocks]]
 
# [[Understanding_XMLRPC_Blocks|Remote Control and Automation of Flowgraphs with XMLRPC]]
= Non-GNU Radio-specific tutorials hosted on this wiki =
|}
 
|}
* [[AllAboutDecibels|All about decibels (dB)]]
 
The 3rd-party documentation lives on a separate page which can be found [[ExternalDocumentation|here]].

Latest revision as of 01:50, 9 December 2023

Please leave tutorials-related feedback (either for an individual tutorial or overall organization) in the Discussion page of this article (tab at the top), we are always looking for ways to improve.

Beginner Tutorials

Introducing GNU Radio

  1. What is GNU Radio?
  2. Installing GNU Radio
  3. Your First Flowgraph

Flowgraph Fundamentals

  1. Python Variables in GRC
  2. Variables in Flowgraphs
  3. Runtime Updating Variables
  4. Signal Data Types
  5. Converting Data Types
  6. Packing Bits
  7. Streams and Vectors
  8. Hier Blocks and Parameters

Creating and Modifying Python Blocks

  1. Creating Your First Block
  2. Python Block With Vectors
  3. Python Block Message Passing
  4. Python Block Tags

DSP Blocks

  1. Low Pass Filter Example
  2. Designing Filter Taps
  3. Sample Rate Change
Intermediate/Advanced Tutorials

Core GNU Radio Mechanics

  1. Stream Tags
  2. Polymorphic Types (PMTs)
  3. Message Passing

Modulation and Demodulation

  1. Narrowband FM
  2. Single Sideband (SSB)
  3. QPSK Mod and Demod
  4. BPSK Demodulation
  5. Frequency Shift Keying (FSK)
  6. OFDM Basics
  7. Packet Communications
  8. File transfer using Packet and BPSK

Custom Blocks and Out of Tree (OOT) Modules

  1. Creating an OOT (Python block example)
  2. Creating an OOT (C++ block example)
  3. Writing the YAML file for a block (GR 3.8+)

Miscellaneous

  1. Understanding a Flowgraph's Python Code
  2. Using GNU Radio With SDRs
  3. IQ and Complex Signals
  4. Understanding Sample Rate
  5. Understanding ZMQ Blocks
  6. Bandlimited Threshold and Detection Demo Application
  7. Pushbutton I/Q Recorder with Descriptive File Names
Developer Resources
  1. Porting Existing Flowgraphs to Newer Version
  2. Porting Existing OOTs from 3.9 to 3.10
  3. Porting Existing OOTs from 3.8 to 3.9
  4. Porting Existing OOTs from 3.7 to 3.8
  5. VOLK: What it does, why it rocks, how to write new kernels
  6. Working with ALSA and Pulse Audio
  7. Using Visual Studio Code for Source level debugging of C++ OOTs
  8. Using Eclipse for Building and Source level debugging C++ OOTs
  9. Using Code::Blocks IDE for GNU Radio Development
  10. Git and GNU Radio
  11. How to use Octave or Matlab with GNU Radio
  12. The GNU Radio Scheduler
  13. Using Custom Buffers for Hardware Accelerated Blocks
  14. Remote Control and Automation of Flowgraphs with XMLRPC