Tutorials: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
No edit summary
(47 intermediate revisions by 5 users not shown)
Line 1: Line 1:
= Guided Tutorials =
= GNU Radio Academy =


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.
The following sequence of tutorials will carry a new user through the core GNU Radio concepts, while providing examples along the way. If you already have experience with GNU Radio, feel free to skip the first several.


# [[InstallingGR|Installing GNU Radio]]
# [[Guided_Tutorial_Introduction|'''A Brief Introduction to GNU Radio, SDR, and DSP''']]
# [[Guided_Tutorial_Introduction|Introduction]]
# [[Guided_Tutorial_GRC|'''Introduction to GNU Radio Usage: GRC and Flowgraphs''']]
# [[Guided_Tutorial_GRC|Working with GRC]]
# [[Porting_Existing_Flowgraphs_to_a_Newer_Version|'''Porting Existing Flowgraphs to a Newer Version''']]
# [[Guided_Tutorial_GNU_Radio_in_Python|Programming GNU Radio in Python]]
# [[Sample_Rate_Tutorial|'''Understanding Sample Rate''']]
# [[Guided_Tutorial_GNU_Radio_in_C++|Programming GNU Radio in C++]]
# [[IQ_Complex_Tutorial|'''IQ and Complex Signals''']]
# [[Guided_Tutorial_Programming_Topics|Programming Topics]]
# '''Simulation Examples (we recommend going through at least one):'''
# [[Guided_Tutorial_Hardware_Considerations|Using GNU Radio with Hardware]]
#* [[Simulation_example:_FSK|'''Frequency Shift Keying (FSK)''']]
# [[Guided_Tutorial_PSK_Demodulation|PSK Symbol Demodulation]]
#* [[Simulation_example:_AM_transmitter_and_receiver|'''AM transmitter and receiver''']]
# [[Guided Tutorial Extras Sample Rates| Guided Tutorial Extras: Sample Rates]]
#* [[Simulation_example:_Single_Sideband_transceiver|'''Single Sideband transceiver''']]
#* [[Simulation_example:_Narrowband_FM_transceiver|'''Narrowband FM transceiver''']]
#* [[Guided_Tutorial_PSK_Demodulation|'''QPSK Modulation / Demodulation''']]
#* [[Simulation_example:_BPSK_Demodulation|'''BPSK Demodulation''']]
#* [[Basic_OFDM_Tutorial|'''OFDM Basics''']]
# [[Guided_Tutorial_Hardware_Considerations|'''Using GNU Radio with Hardware''']]
# [[Flowgraph_Python_Code|'''Understanding a Flowgraph's Python Code''']]
# [[Embedded_Python_Block|'''Writing your own block''' (using Embedded Python Block)]]
# [[Polymorphic Types (PMTs)|'''Polymorphic Types (PMTs)''']]
# [[Stream Tags|'''Stream Tags''']]
# [[Message Passing|'''Message Passing''']]
# [[Understanding_ZMQ_Blocks|'''Understanding ZMQ Blocks''']]
# [[Packet_Communications|'''Packet Communications''']]
# [[OutOfTreeModules|'''Out of Tree modules''']]
# [[XML_GRC|'''Writing the XML file for a block''' (for 3.7)]] or [[YAML_GRC|'''Writing the YAML file for a block''' (for 3.8+)]]
# [[Guided_Tutorial_GNU_Radio_in_C++|'''Writing blocks in C++''']]


= Beginner-level tutorials =
= Developer Resources =
 
* [[VOLK_Guide|'''Volk- what it does, why it rocks, how to write new kernels''']]
Note that even as a GNU Radio beginner, you'll be delving into the realm of software defined radio, which is a complex field.
* [[GNU Radio 3.8 OOT Module Porting Guide|'''Porting Existing OOTs from 3.7 to 3.8''']]
 
* [[GNU Radio 3.9 OOT Module Porting Guide|'''Porting Existing OOTs from 3.8 to 3.9''']]
* [[TutorialsCoreConcepts|Core concepts of GNU Radio applications]] - A must-read for everyone
* [[ALSAPulseAudio|'''Working with ALSA and Pulse Audio''']]
* [[TutorialsWritePythonApplications|WritePythonApplications]] - A tutorial on how to develop Python GNU Radio applications. Some DSP and programming background required.
* [[UsingVSCode|'''Using Visual Studio Code for Source level debugging of C++ OOTs''']]
* [[TutorialsQTGUI|QTGUI Tutorial]] - A tutorial on how to develop Python GNU Radio applications. Some DSP and programming background required.
* [[UsingEclipse|'''Using Eclipse for Building and Source level debugging C++ OOTs''']]
* [http://www.trondeau.com/gr-tutorial/ Tom Rondeau's gr-tutorial] - Some tutorials from the boss himself.
* [[UsingCB|'''Using Code::Blocks IDE for GNU Radio Development''']]
* [[TutorialsSimulations|Simulations]] - A tutorial on how to use GNU Radio without hardware to verify performance and simulate RF conditions.
* [[DevelopingWithGit|'''Git and GNU Radio''']]
* [[Basic OFDM Tutorial]] - Basics of OFDM and how to do rx and tx in GNU Radio
* [[Octave|'''How to use Octave or Matlab with GNU Radio''']]
 
* [http://www.trondeau.com/blog/2013/9/15/explaining-the-gnu-radio-scheduler.html '''The GNU Radio Scheduler''']
= Tutorials on developing with and for GNU Radio =
* [[CustomBuffers| '''Using Custom Buffers for Hardware Accelerated Blocks''']]
 
== Writing GNU Radio code ==
 
* [[OutOfTreeModules|Developing out-of-tree modules and writing blocks]] - This is the first tutorial you should entirely read and comprehend.
** [[OutOfTreeModulesConfig|Tutorial on how to configure OOT packages to find and link against GNU Radio]]
* [[TutorialsTaggedStreams|Tagged streams for variable-length PDUs]]
* [[TutorialPythonFunctions|Writing a Python Function for GRC]]
 
== Advanced Development ==
 
* [[TutorialsDebugging|How to debug your applications]]
* [[Octave|How to use Octave or Matlab with GNU Radio]]
* The GNU Radio Scheduler http://www.trondeau.com/blog/2013/9/15/explaining-the-gnu-radio-scheduler.html
* [http://www.brainshark.com/SPS/vu?pi=zH8zQcV8dzAXPbz0 VOLK Introduction]
* [[TutorialsRemoteGUI|Remote GRC Operations]]
* [[ALSAPulseAudio|Working with ALSA and Pulse Audio (Audio sink/source under Linux)]]
 
== Development tools ==
 
* [[DevelopingWithGit|Git and GNU Radio]] - A starter on how to use Git for GNU Radio development
* [[UsingVim|Using VIM for editing GNU Radio modules]]
* [[UsingCB|Using Code::Blocks for editing GNU Radio modules]]
* [[UsingEclipse|Building and source level debugging C++ OOT modules with eclipse]]
* [[UsingVSCode|Source level debugging C++ OOT modules with Visual Studio Code]]
 
 
The 3rd-party documentation lives on a separate page which can be found [[ExternalDocumentation|here]].

Revision as of 20:24, 26 October 2021

GNU Radio Academy

The following sequence of tutorials will carry a new user through the core GNU Radio concepts, while providing examples along the way. If you already have experience with GNU Radio, feel free to skip the first several.

  1. A Brief Introduction to GNU Radio, SDR, and DSP
  2. Introduction to GNU Radio Usage: GRC and Flowgraphs
  3. Porting Existing Flowgraphs to a Newer Version
  4. Understanding Sample Rate
  5. IQ and Complex Signals
  6. Simulation Examples (we recommend going through at least one):
  7. Using GNU Radio with Hardware
  8. Understanding a Flowgraph's Python Code
  9. Writing your own block (using Embedded Python Block)
  10. Polymorphic Types (PMTs)
  11. Stream Tags
  12. Message Passing
  13. Understanding ZMQ Blocks
  14. Packet Communications
  15. Out of Tree modules
  16. Writing the XML file for a block (for 3.7) or Writing the YAML file for a block (for 3.8+)
  17. Writing blocks in C++

Developer Resources