Tutorials: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
(Imported from Redmine)
 
(UsingVSCode)
 
(113 intermediate revisions by 13 users not shown)
Line 1: Line 1:
= 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.


{{toc}}
{|
 
|- valign="top"
== Guided Tutorials ==
|{{BeginnerTutorials}}
 
|
See the [[Guided_Tutorials|Guided Tutorials]] from the [[UsersWG|GNU Radio Community Development Working Group]]. These cover the basics of what GNU Radio is, interacting with the GNU Radio Companion, programming blocks, advanced programming concepts, hardware issues and exploration, and some details on dealing with digital demodulation.
{| class="wikitable" style="background-color:#f1edff;" cellpadding="10"
 
|'''Intermediate/Advanced Tutorials'''
== Beginner-level tutorials ==
Core GNU Radio Mechanics
 
# [[Stream_Tags|Stream Tags]]
Note that even as a GNU Radio beginner, you'll be delving into the realm of software defined radio, which is a complex field.
# [[Polymorphic_Types_(PMTs)|Polymorphic Types (PMTs)]]
 
# [[Message_Passing|Message Passing]]
* [[TutorialsCoreConcepts|Core concepts of GNU Radio applications]] - A must-read for everyone
# [[Virtual_Sinks_and_Sources|Virtual Sinks and Sources]]
* [[TutorialsWritePythonApplications|WritePythonApplications]] - A tutorial on how to develop Python GNU Radio applications. Some DSP and programming background required.
# [[Importing_Libraries|Importing Libraries]]
* [[TutorialsQTGUI|QTGUI Tutorial]] - A tutorial on how to develop Python GNU Radio applications. Some DSP and programming background required.
Modulation and Demodulation
* [http://www.trondeau.com/gr-tutorial/ Tom Rondeau's gr-tutorial] - Some tutorials from the boss himself.
# [[Simulation_example:_Narrowband_FM_transceiver|Narrowband FM]]
* [[Simulations]] - A tutorial on how to use GNU Radio without hardware to verify performance and simulate RF conditions.
# [[Simulation_example:_Single_Sideband_transceiver|Single Sideband (SSB)]]
 
# [[QPSK_Mod_and_Demod|QPSK Mod and Demod]]
== Tutorials on developing with and for GNU Radio ==
# [[Simulation_example:_BPSK_Demodulation|BPSK Demodulation]]
 
# [[Simulation_example:_FSK|Frequency Shift Keying (FSK)]]
=== Writing GNU Radio code ===
# [[Basic_OFDM_Tutorial|OFDM Basics]]
 
# [[Packet_Communications|Packet Communications]]
* [[OutOfTreeModules|Developing out-of-tree modules and writing blocks]] - This is the first tutorial you should entirely read and comprehend.
# [[File_transfer_using_Packet_and_BPSK|File transfer using Packet and BPSK]]
** [[OutOfTreeModulesConfig|Tutorial on how to configure OOT packages to find and link against GNU Radio]]
Custom Blocks and Out of Tree (OOT) Modules
* [[TutorialsTaggedStreams|Tagged streams for variable-length PDUs]]
# [[Creating_Python_OOT_with_gr-modtool|Creating an OOT (Python block example)]]
* [[TutorialPythonFunctions|Writing a Python Function for GRC]]
# [[Creating_C++_OOT_with_gr-modtool|Creating an OOT (C++ block example)]]
 
# [[YAML_GRC|Writing the YAML file for a block (GR 3.8+)]]
=== Advanced Development ===
Miscellaneous
 
# [[Flowgraph_Python_Code|Understanding a Flowgraph's Python Code]]
* [[TutorialsDebugging|How to debug your applications]]
# [[Guided_Tutorial_Hardware_Considerations|Using GNU Radio With SDRs]]
* The GNU Radio Scheduler http://www.trondeau.com/blog/2013/9/15/explaining-the-gnu-radio-scheduler.html
# [[IQ_Complex_Tutorial|IQ and Complex Signals]]
* [http://www.brainshark.com/SPS/vu?pi=zH8zQcV8dzAXPbz0 VOLK Introduction]
# [[Sample_Rate_Tutorial|Understanding Sample Rate]]
* [[TutorialsRemoteGUI|Remote GRC Operations]]
# [[Understanding_ZMQ_Blocks|Understanding ZMQ Blocks]]
* [[ALSAPulseAudio|Working with ALSA and Pulse Audio (Audio sink/source under Linux)]]
# [[Bandlimited_threshold_detector| Bandlimited Threshold and Detection Demo Application]]
 
# [[Pushbutton_IQ_Recorder_with_descriptive_filenames| Pushbutton I/Q Recorder with Descriptive File Names]]
=== Development tools ===
|}
 
|
* [[DevelopingWithGit|Git and GNU Radio]] - A starter on how to use Git for GNU Radio development
{| class="wikitable" style="background-color:#f1edff;" cellpadding="10"
* [[UsingVim|Using VIM for editing GNU Radio modules]]
|'''Developer Resources'''
* [[UsingCB|Using Code::Blocks for editing GNU Radio modules]]
# [[Porting_Existing_Flowgraphs_to_a_Newer_Version|Porting Existing Flowgraphs to Newer Version]]
 
# [[GNU Radio 3.10 OOT Module Porting Guide|Porting Existing OOTs from 3.9 to 3.10]]
=== Outdated tutorials ===
# [[GNU_Radio_3.9_OOT_Module_Porting_Guide|Porting Existing OOTs from 3.8 to 3.9]]
 
# [[GNU_Radio_3.8_OOT_Module_Porting_Guide|Porting Existing OOTs from 3.7 to 3.8]]
Kept here for archeological reasons only.
# [[VOLK_Guide|VOLK: What it does, why it rocks, how to write new kernels]]
 
# [[ALSAPulseAudio|Working with ALSA and Pulse Audio]]
* Alonso's Examples: attachment:alonsos-examples.zip
# [[UsingVSCode|Using Visual Studio Code for GNU Radio Development]]
 
# [[UsingEclipse|Using Eclipse for Building and Source level debugging C++ OOTs]]
== Non-GNU Radio-specific tutorials hosted on this wiki ==
# [[UsingCB|Using Code::Blocks IDE for GNU Radio Development]]
 
# [[DevelopingWithGit|Git and GNU Radio]]
* [[AllAboutDecibels|All about decibels (dB)]]
# [[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]
{{include(ExternalDocumentation)}}
# [[CustomBuffers|Using Custom Buffers for Hardware Accelerated Blocks]]
 
# [[Understanding_XMLRPC_Blocks|Remote Control and Automation of Flowgraphs with XMLRPC]]
The 3rd-party documentation lives on a separate page which can be found [[ExternalDocumentation|here]].
|}
 
|}
== Attachments ==

Latest revision as of 09:01, 4 September 2024

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
  4. Frequency Shifting
  5. Reading and Writing Binary Files

SDR Hardware

  1. RTL-SDR FM Receiver
  2. B200-B205mini FM Receiver
Intermediate/Advanced Tutorials

Core GNU Radio Mechanics

  1. Stream Tags
  2. Polymorphic Types (PMTs)
  3. Message Passing
  4. Virtual Sinks and Sources
  5. Importing Libraries

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 GNU Radio Development
  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