Introductory track

1. Basics of discrete time digital signal processing: prototyping with GNU Radio

JM Friedt

In this tutorial, we will introduce some of the most relevant topics related to discrete time signal processing, but most significantly use GNU Radio generating synthetic signals to introduce topics such as datarate consistency throughout the flowgraph, aliasing in the context of decimation and the need for low-pass filtering, why analytic (complex) are naturally procuced by the radiofrequency frontend and how to generate the complex component when using real-valued acquisitions. This introductory tutorial will also provide the attendees the opportunity to become familiar with the graphical user interface provided with the GNU Radio library, GNU Radio companion, the data types, commenting graphs and finding appropriate processing blocks. A preliminary video of possible content is available as the second half of http://jmfriedt.free.fr/TI2020_1.mp4

2. Using FIT/CorteXlab to Learn GNU Radio

Leonardo S. Cardoso

FIT/Cortexlab is an experimental testbed, hosted in Lyon, France, for research and education around software defined radio and GNU Radio. FIT/CorteXlab accessible through internet and is available to anyone around the world. This tutorial aims at showing how to use FIT/CorteXlab as a tool to learn GNU Radio. We will explore ready made tutorials available in the FIT/CorteXlab held page and also understand how to use Bokeh GUI to control our GNU Radio session.


3. Decoding a Real Transmission with GNU Radio from A to Z

Leonardo S. Cardoso

In this tutorial we will explore a communication standard from scratch, trying to understand its spectral use, guess the modulation, reverse-engineer the frame structure, and guess the contents. Through this tutorial you'll be able to learn some basic functionalities of GNU Radio and some very simple signal processing tricks that will allow to properly decode a radio stream.

4. Tips and tricks on "efficiently" using SDR and GNU Radio

JM Friedt

After the basic introductions to the various processing methods involving both synthetic and real signals, we endeavour towards more advanced processing techniques. Software Defined Radio provides utmost flexibility and most if not all signals available withing the sampling bandwidth of the analog to digital converter can be processed simultaneously, assuming sufficient computational processing power is available. Each signal must be brought to baseband, a task taken care of by the Xlating FIR Filter as demonstrated with the demodulation of multiple FM broadcast stations. However, GNU Radio might not always be the most convenient processing framework, either because discontinuous datasets are to be processed (e.g. RADAR) or because more advanced processing are best prototyped with interpreted languages (e..g. Python or GNU/Octave) before porting the algorithm to C++ and then to the GNU Radio framework. Communication between GNU Radio and external tools can be achieved with named pipes, sockets or 0-MQ connected or datagram communication links. A preliminary video of the some of the content that might be shown in this tutorial is addressed at http://jmfriedt.free.fr/TI2020_3.mp4



Advanced track

1.Hacking IoT RF communications with GNU Radio

Hervé Boeglen

In this tutorial, starting with an existing GNU Radio out of tree (OOT) module that we are going to modify and improve to suit our needs, we will underline the necessary steps to analyze and decode RF signals from off-the-shelf low-rate chips targeted at IoT applications in the ISM bands (e. g. nrf52832, s2-lp, si446x). At the end of the tutorial, the attendee will take home a handy software toolkit to help analyzing ISM low-rate communications.

2. Taking the best of both worlds: GNU Radio and Python

JM Friedt

GNU Radio is a set of libraries split as processing blocks connected with each other, as the output of the GNU Radio Companion graphical user interface for example, by a Python script. While each processing block is optimized for efficiency and speed, some tasks might not require such optimization, such as running a TCP server to fetch commands from client for asynchronously tuning flowchart parameters from clients. While these functions will not have access to the {I,Q} stream transfered between processing blocks, the behaviour of the flowchart can be adapted as it is running by calling callback functions. Introducing Python functions in the script generated from GNU Radio Companion prevents from returning to the graphical user interface after the modifications: the Python Module provides the means to include custom functions controlling the flograph, while the Python Snippet allows for launching such functions at startup.

3. Running GNU Radio on embedded hardware

G. Goavec-Merou

While Software Defined Radio (SDR) provides the means to process radiofrequency datastreams using minimal hardware and shifting all the processing load to software, the simultanous increase of computational power of embedded boards leads to a natural convergence of both worlds. Nevertheless, SDR remains a demanding application and all the computational resources of the embedded board are best used to maximize processing bandwidth. In this tutorial, we explain how GNU Radio has been included in the Buildroot embedded framework processing toolchain, the benefit of using a tailored framework over general purpose operating systems (e..g Raspbian). The proposed framework is applicable to a much broader audience than the Raspberry Pi users -- a platform hardly compatible with the premises of embedded development considering its user interfaces -- with an emphasis on boards with low power requirements, unable to run a compiler on-board as should never be done in the context of embedded systems development. Some of the slides introducing the topic are available at http://jmfriedt.free.fr/projetM1_2020_1.pdf and http://jmfriedt.free.fr/projetM1_2020_2.pdf



4. Tags in GNU Radio, from the standard library to custom blocks.

Thomas Lavarenne, Cyrille Morin

Tags are a GNU Radio feature that allows the addition of metadata to chosen samples in a stream. What is their use, how can we create some ourselves? This tutorial presents a usage example of packet arrival detection, from generation to visualisation with standard blocks, followed by an implementation example with an embedded python block.

Online user: 1