Exploring SDRBerry: A Raspberry Pi-Based SDR Transceiver with LVGL GUI

SDR Berry

Software-defined radio (SDR) has transformed how we interact with radio signals, and SDRBerry aims to push this transformation further. SDRBerry is an ongoing project designed to integrate an SDR transceiver with a Raspberry Pi, leveraging the power of LVGL v8 for a modern GUI experience. While still in development, this project offers a unique learning opportunity in C++ programming, Liquid DSP, and GUI design.

Project Overview

SDRBerry is built with the goal of supporting various SDR devices, including:

  • Adalm Pluto SDR
  • Radioberry
  • RTL-SDR
  • SDRPlay
  • Other SDR receivers via SoapySDR

The system also aims to integrate optical encoders, I2C/serial-controlled bandpass filters, and an ESP32-based CAT controller for additional hardware control.

image-62-1024x768 Exploring SDRBerry: A Raspberry Pi-Based SDR Transceiver with LVGL GUI

Installation Guide

To install SDRBerry, follow these steps:

  1. Set up Raspberry Pi OS (64-bit Bullseye) in CLI mode.
  2. Use Raspberry Pi Imager to create a bootable SD card or USB stick (USB storage is preferred for longevity).
  3. Configure Wi-Fi and enable I2C using raspi-config.
  4. Compile the software using VisualGDB, CMake, GCC, and GFortran.
  5. Enable remote control with framebuffer VNC using framebuffer-vncserver.

A full installation guide is available in install_guide.txt, and an installation script (install.sh) automates the process.

Hardware Requirements

  • Raspberry Pi 4 Model B
  • 5-inch or 7-inch 800×480 touchscreen (DSI connector recommended)
  • USB storage device (e.g., Samsung Fit Plus 32GB or larger)
  • Generic USB audio adapter

Features and Development Progress

Completed Features:

✔ Adalm Pluto, RTL-SDR, SDRPlay, Radioberry, and HackRF support
✔ FM broadband and narrowband reception
✔ SSB transmission and reception
✔ USB CAT interface support (e.g., ESP32 as a CAT controller)
✔ I2C filter support with PCF8574
✔ Noise reduction (ported from DD4WH’s implementation)
✔ Morse code decoder
✔ FT8 transmission and reception
✔ Web-based remote control via Vue.js 3 and PrimeVue UI (experimental)

Upcoming Features:

  • MIDI controller support
  • Direct optical encoder support via GPIO
  • Network and Wi-Fi setup screen
  • Additional noise reduction algorithms (e.g., LMS filtering)
  • Codec2 implementation for FreeDV digital voice

Installation of Dependencies

SDRBerry relies on several open-source libraries, including:

  • Liquid-DSP (Joseph D. Gaeddert)
  • Alsa Audio
  • SoapySDR and SoapyPlutoSDR
  • FFTW (Fast Fourier Transform)
  • CivetWeb (embedded web server)
  • nlohmann-json (JSON library for C++)

To install and compile the software, use:

wget https://raw.githubusercontent.com/paulh002/sdrberry/master/install/install.sh
chmod +x install.sh
./install.sh HFB DSI

For Raspberry Pi Touch 2 with Radioberry:

./install.sh RDB T2

Running SDRBerry

To start SDRBerry in user mode or root mode (depending on the SDR device used):

sudo sdrberry > sdrberry.log 2>&1

Mouse support is included, with optimized responsiveness via usbhid.mousepoll=2 in cmdline.txt.

Web-Based Control

SDRBerry introduces an experimental web-based remote control on port 8081. The interface, built using Vue.js 3 and PrimeVue UI, allows users to control SDRBerry remotely. The source code will be available in a separate repository.

image-63-1024x660 Exploring SDRBerry: A Raspberry Pi-Based SDR Transceiver with LVGL GUI

To access the web interface:

http://raspberry_pi_ip:8081

Conclusion

SDRBerry is an exciting open-source SDR project that integrates Raspberry Pi, LVGL GUI, and SDR technologies. While still in active development, the project offers a strong foundation for experimenting with software-defined radio on a compact and affordable platform.

For more details and the latest updates, visit the SDRBerry GitHub repository:
https://github.com/paulh002/sdrberry

Post Comment

You May Have Missed