FM Receiver with GNU Radio- Week 2

FM Receiver App – Week 2 Update

This week, I made progress in the following features:

  1. Establishing a comprehensive project directory structure
  2. Designing and prototyping the user interface (UI)

1. Repository Structure Setup

I used python project templates along with AI to helping shape the structure in a clean, scalable format.

Here’s the high-level breakdown:

fm-receiver-app/
├── docs/              # Documentation (Installation, Dev Guide, etc.)
├── flowgraphs/        # GNU Radio Companion (.grc) + generated Python
├── src/               # Main application (core logic, GUI, utils)
├── tests/             # Unit and integration tests
├── scripts/           # Dev utilities (build, package, test)
├── examples/          # Sample setups for different SDRs
├── packaging/         # OS-specific distribution configs
├── data/              # Sample recordings and configs
├── README.md, setup.py, requirements.txt, etc.

Some key highlights:

  • flowgraphs/ contains .grc and autogenerated Python scripts for different receiver modes (basic FM, RDS, etc.).
  • src/fm_receiver/gui/ holds all the GUI components, organized by responsibility (e.g., spectrum, control panel, RDS).
  • core/ contains the interface to GNU Radio, signal processing, and audio handling.
  • utils/ supports tasks like frequency conversions, logging, and file I/O.
  • Tests are separated into functional and integration layers to keep development reliable and regression-free.

This structure sets the foundation for long-term maintainability and team collaboration.


2. UI Design Progress

After drafting the initial layout with pencil sketches, I moved into high-fidelity Figma mockups and started implementing the first working UI in PyQt5.

Initial Concept Sketch

Figma Mockup Preview

This guided the visual hierarchy and layout of the interface.

Implemented in PyQt5

Basic layout with main window, side bar and channel list. Channels are made up data for now.


Tools and Frameworks Used

  • GUI Framework: PyQt5
  • Signal Processing: GNU Radio 3.10+
  • Design Tools: Figma for mockups, pencil for fast sketching

What’s Next?

For next week, I’m planning to:

  • Develop the the GNU Radio flow graph for FM reception and RDS decoding
  • Polish the GUI, settings, advance view and flow graph control
  • Attempt to connect the pyhton generated flowgraphs with the frontend

Links




Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • End of My GSoC journey
  • Documentation and Soapy Sdr source
  • Multiple Recording Feature
  • SDR Device and Code Documenting
  • Record Feature