Software Defined Radio Application

Summary

Mentor(s): Prof. Ian Hewitt
Dr. Mike Murphy
Project Type: Software development and engineering; user interface design; radio communications
Technologies: Python, Qt (PySide 6 and Qt Designer), RTL-SDR hardware, Git
Undergraduate Credit: CSCI 399, CSCI 490
Graduate Credit: IST 659, 799 (Thesis)
An RTL-SDR USB tuner and Linux machine may be required.
Locality: Main campus and/or remote

Purpose

Software Defined Radio (SDR) is a method of sending and/or receiving radio transmissions using a computer to handle much of the processing that would otherwise be performed by dedicated hardware. Simple radio tuner devices designed around an analog-to-digital converter (ADC) for reception, or digital-to-analog converter (DAC) for transmission, are commercially available. A re-purposed European digital TV tuner called the RTL-SDR is both inexpensive and popular for reception applications.

Several software applications for tuning the radio hardware and visualizing the signal have been created for Windows, including the popular SDR# application. On Linux systems, Gqrx has been historically popular, but it lacks maintainers and is not reliable on newer distributions.

Unfortunately, Gqrx is released under version 3 of the GNU General Public License, as is GNU Radio, on which it depends. Since the GPLv3 license contains a blanket patent license clause, it is not suitable for academic projects. We cannot grant a patent license for a patent controlled by a different research group at CCU. As a result, we cannot add features to this application or build anything that is tightly coupled to GNU Radio.

That said, interacting with the SDR hardware from Python should be relatively straightforward using the cross-platform SoapySDR library. Once the radio hardware can be tuned, implementing a user interface and placing it under a reasonable license should be achievable using Qt for Python (PySide6). A full SDR suite with a waterfall display and feature parity with existing suites is a large project, but a radio application can be built up incrementally in pieces over time.

Scope of Work

Implement a general-purpose desktop SDR tuning and radio analysis program for Linux (or cross-platform if feasible), starting with a basic radio tuner that can receive and play the audio from an FM broadcast station. This application should use Soapy to interface with the variety of available SDR tuners. GNU Radio must not be used, nor may any other GPLv3-licensed software be added as a dependency of this project.

At the graduate level, the scope of the project relates to the depth of the radio application. A feature-limited tuning application might be appropriate for a capstone project (IST 659), while a more comprehensive project would be more appropriate for a thesis (IST 799).

Related Research

This project might be useful for analyzing satellite communications related to the CCU Space Program and therefore may have some related opportunities.