GNU Radio Companion - Audio modem loop back test FSK

Prepared by Dr. Aaron Scher
[email protected]
Oregon Institute of Technology

Back to Aaron's home page.
Back to My collection of GNU radio companion flow graphs.

(Last updated: Sep 2016)

Download file: audio_FSK_loopback_test.grc.

The setup involves my just my laptop sitting on a table. With one GNU Radio Companion (GRC) flowgraph, I transmit data using my laptop's built-in speakers and receive using my laptop's built in microphone. For this loop back test I choose a modulation and frequency corresponding to that of a the simple V.21 modem standard. Namely this simplex modem transmits 0's and 1's by transmitting either a 1650 Hz tone or a 1850 Hz tone, respectively, for 1/300 sec. The data I transmit are simple text messages (such as "Hello World!") that I enter in using the QT GUI Message Edit Box. The recovered message is displayed using the Message Debug Print block. I like this example, because I can type in my text and see the recovered message all within GRC itself (i.e. I don't need to use TCP sources and sinks, etc.) With my laptop, there is definitely some delay between the moment I press enter to send the data and the the moment the recovered message displays on my screen. This example demonstrates the basics of packet radio transmission and detection in GNU Radio without needing any special hardware beyond a PC. This flowgraph employs some useful blocks specific for packet radio including Protocol Formatter and Correlate Access Code - Tag Stream blocks. Another useful block here is the Polyphase Clock Sync which seems to work pretty well, but can probably be optimized. Some useful links are the following

  1. Stack Exchange: FSK Demodulation With GNU Radio.
  2. Signal Processing First Lab 18: Digital Communication: FSK Modem.

I am using GNU Radio Companion version 3.7.10.1.

The loopback test uses only a single flowgraph. However, because the flowgraph is so large, I divided the flowgraph up below to make it easier to see. Click on any screenshot below to enlarge the image. Note that a reader found a small error in this flow graph. The "Repeat" block in the Audio Modem FSK transmitter should have an interpolation of 147, not 146.

Variables, definitions, and parameters:

Audio modem FSK loop back variables, parameters, and definitions

Transmitter section of the flowgraph:

Audio modem FSK transmitter section of the flowgraph

Receiver section of the flowgraph:

Audio modem FSK receiver section of the flowgraph

Flowgraph in action:

HackRF/RTL-SDR loopback in action!