GNU Radio Tutorials:
Half-Way Update
Matt Carrick, PhD
[email protected]
January 13, 2022
Schedule
Update covering:
• Monday, January 3 to Thursday, January 13
• 11 New Tutorials with 160 new images
Guiding Principles
Principles from Marc L.:
1. Focus on GNU Radio, not RF/DSP
2. Get new users up to speed ASAP
3. Make use of existing content
4. Support a broad audience
New Tutorials
https://wiki.gnuradio.org/index.php/NewTutorialReview
Tutorial flow:
• Start easy, slowly add complexity
• Build tools, then apply tools to DSP
• Building knowledge of GR over time
Tutorial Formula
• Step-by-step instructions, easily replicated
• Emphasis on images over text
• Minimal DSP knowledge required
• Tutorials build on one another
• Users build own flowgraph (no download for .grc or .py)
• Avoids GRC & GNU Radio versioning problems
• Forces user to learn the tool and build “muscle memory”
New Tutorial: Your First Flowgraph (1)
• https://wiki.gnuradio.org/index.php/Your_First_Flowgraph
• Starting GRC
• Searching for blocks
• Editing properties
• Connecting Blocks
• Running the Flowgraph
New Tutorial: Variables in Flowgraphs (2)
• https://wiki.gnuradio.org/index.php/Variables_in_Flowgraphs
• Adding new variable
• Modifying variable name
• Modifying variable value
• Adding variable to block
New Tutorial: Runtime Updating Variables (3)
• https://wiki.gnuradio.org/index.php/Runtime_Updating_Variables
• QT GUI Range bar as variable
• Setting range properties
• Variables update in real time
• QT GUI Chooser
New Tutorial: Signal Data Types (4)
• https://wiki.gnuradio.org/index.php/Signal_Data_Types
• Describes complex, float
• Changing block data types
• Error connecting incorrect types
New Tutorial: Converting Data Types (5)
• https://wiki.gnuradio.org/index.php/Converting_Data_Types
• Char/Byte Data Type
• Char to Float
New Tutorial: Streams and Vectors (6)
• https://wiki.gnuradio.org/index.php/Streams_and_Vectors
• Stream as serial data, vector as parallel data
• Darker colors in GRC
• Streams to vector
• Plotting interleaved data
• Vector to streams
• Plotting deinterleaved data
New Tutorial: Creating Your First Block (7)
• https://wiki.gnuradio.org/index.php/Creating_Your_First_Block
• Embedded Python block
• Opening and editing code
• Describes components of Python block
• Changing parameter name
• Adding a second input
• Editing work function
New Tutorial: Low Pass Filter Example (8)
• https://wiki.gnuradio.org/index.php/Low_Pass_Filter_Example
• Using Low Pass Filter block
• Setting parameters
• Max hold-based Frequency Response
New Tutorial: Designing Filter Taps (9)
• https://wiki.gnuradio.org/index.php/Designing_Filter_Taps
• GR-based design of low pass filter taps
• Manual design of boxcar filter taps
• Convert real LPF to complex BPF weights in variable
• Variables as tuples, NumPy arrays
• Real to complex filter block
New Tutorial: Hier Blocks and Parameters (10)
• https://wiki.gnuradio.org/index.php/Hier_Blocks_and_Parameters
• Creating a Hier Block
• Using Parameters
• Adding in/out ports
• Using Hier Block
• Deleting Hier Block
New Tutorial: Sample Rate Change (11)
• https://wiki.gnuradio.org/index.php/Sample_Rate_Change
• Interpolation
• Decimation
• Rational Rate
• Irrational Rate: Complete Next week
Navigation Menu
• Added tutorial navigation menu
• Menus automatically update across all pages
Navigation Menu
• Navigation menu uses templates
{{Template:TutorialNavigation}}
Navigation Menu
• Nav menu templates are nested
{{Template:NavigationIntroducingGNURadio}}
{{Template:TutorialNavigation}}
{{Template:NavigationFlowgraphFundamentals}}
{{Template:NavigationDSPBlocks}}
Prioritized List for Tutorials
• Week 3:
• Tutorial: Irrational Rate Resampling
• Tutorial: Setting tag based on threshold
• Tutorial: Sending/Receiving messages, adapting block behavior with messages
(includes PMT)
• Tutorial: Profiling blocks with ”htop” Shelved for time, would be good for follow on
• Week 4:
• Tutorial: Build an example FM radio tuner
• Starting page for solving common errors (renaming “default”, etc.)
• Link against external resources for DSP explanations to fill in knowledge gaps
• Reserve time, last minute changes, updating wiki home page, etc.
• Please let me know about:
• Changing priority of this list
• Adding/subtracting from this list
Remaining Schedule
Work Pause:
• Friday, Jan 14 – Wed, Jan 19
• Allow time for review of tutorials and feedback (per Marc L. request)
Resume work:
• Thurs, Jan 20 – Fri, Jan 28
• Add ~4 more tutorials
Contact
• Thank you!
• You can contact me at [email protected]