Raspberry pi SDR transceiver / frontend using lvgl gui !!! This is an ongoing project code only for information purpose only. The main goal for this project is to learn about c++ programming, liquid dsp, and for most the use of the GUI toolkit LVGL v8 Functionality is in beta currently
This source code is still in development.
Goal is to support Adalm pluto SDR, Radioberry, RTL-SDR, SDRPlay etc but it should also support other SDR receivers based on SoapySDR.
Also the goal is to support optical encoder and support I2C / serial interface for bandpass filtering
I use an ESP32 as CAT controller with a service for an optical encoder.
Alternative a Contour Shuttle express can be used as rotary controller and or a mouse.
To install you need to configure rasberry pi OS in text only mode (64 bit Bullseye), create a sd card or even better a usb stick sd cards tend to fail after a while, with 64 bit bullseye CLI mode. Configure wifi and use raspi-config to switch on I2C and boot to CLI only with logon. Compiled using VisualGDB or cmake, gcc and gfortran (for wsjtx_lib which includes the wsjtx fortran code of Joe Taylor)
Remote control is possible with the use of framebuffer-vnc https://github.com/ponty/framebuffer-vncserver a config file is in the install directory. Check the event number for the touch and keyboard device and adjust the device number like event1 accordingly
installation instruction in install_guide.txt install script install.sh installs all components based on a fresh raspberry pi SD card (OS should be updated and in CLI mode)
- Raspberry pi 4 Model B or Pi 5
- LCD screen 5 or 7 inch 800x480 touchscreen using DSI connector or the new raspberry Touch 2 7 inch display
- It is preferred not to use a SD card but an USB stick like an Samsung Fit plus 32 GB or larger
- Generic USB Audio adapter for audio in and output
- Noise reduction code is an port from DD4WH https://github.com/df8oe/UHSDR/wiki/Noise-reduction adapted for raspberry pi
- WSJTX fortran library of Joe Taylor K1JT
- Liquid-dsp of Joseph D. Gaeddert
- Lvgl of Gabor Kiss-Vamosi
- and others
- webserver
- Support for Midi controller
- Optical encoder direct on GPIO (some hardware adaption needed)
- Setup screen for Network and Wifi
- Different noise reduction schemes like lms etc.
- codec2 implementation (FreeDV)
- Adalm Pluto
- Rtlsdr support
- SDRPlay support
- Radioberry support
- Hackrf support
- QSD / QSE support with hifiberry board
- FM broadband (only receive)
- FM Narrowband
- SSB support
- Transmitter part
- USB CAT interface support (config serial controller in cfg file example ESP32 as CAT controller)
- i2c filter support for PCF8574
- USB controller with ESP32 (Optical controller for vfo and 2 mechanical encoders for volume and gain etc)
- Add audio device selection
- TFT brightness control
- Support both Raspberry pi buster and Bullseye
- CMake compilation
- Morse code decoder
- Support for Contour Shuttle Express
- Receive, transmit FT8
- Noise reduction (spectral noise reduction, Kim)
- Support for audio sdr using Taylor directsdr (Hifiberry)
- Mouse support
- Keyboard for FT8
- waterfall display
- Cheap USB Hid Volume controllers as tuning controller
- Add setup page for I2C configuration
- Cheap USB Hid controllers
- Support for output only audio devices
- I2C RX/TX switch support
- Liquid DSP
- Alsa audio
- SoapySDR
- SoapyPlutoSDR (support for Adalm Pluto SDR)
- SoapySDRPlay (support for SDRPlay devices)
- SoapyRadioBerry (support radioberry)
- libiio (support for Adalm Pluto SDR)
- libad9361-iio (support for Adalm Pluto SDR)
- pthread
- liquid-dsp
- fftw
- civetweb
- nlohmann json
Take a good quality USB drive and install the latest 64 bit Raspberry OS on it. I advise not to use SD cards, these are very slow and often fail in a short time. Use raspi-config to switch to console auto logon startup. Update the OS with the latest raspberry pi OS patches
Download the install file in pi home directory (the install script supports different SDR's) The install script can install DSI (800x480 16bits color), Raspberry PI Touch 1 7inch 800x480 (32 bit color), Raspberry PI Touch 2 7inch 1280x720 , Waveshare 7 inch display SDR Unit being used Supported: hackfr = HRF / HifiBerry = HFB / Pluto = PLT / RadioBerry = RDB / SDRPlay = SDP /RTLSDR RTL / No = No device
DSI is 16 bit color depth display (DSI / HDMI) the resolution is configurable in the setting file see the wiki. https://github.com/paulh002/sdrberry/wiki/Screen-resolution
wget https://raw.githubusercontent.com/paulh002/sdrberry/master/install/install.sh
chmod +x install.sh
./install.sh HFB DSI
Raspberry PI Touch 1 with Radioberry (32 bit colordepth !)
wget https://raw.githubusercontent.com/paulh002/sdrberry/master/install/install.sh
chmod +x install.sh
./install.sh RDB T1
Raspberry PI Touch 2 with Radioberry (32 bit colordepth !)
wget https://raw.githubusercontent.com/paulh002/sdrberry/master/install/install.sh
chmod +x install.sh
./install.sh RDB T2
sdrberry can be started in user mode or as root, this depends on the device being used for radioberry use sudo
sudo sdrberry > sdrberry.log 2>&1
sdrberry supports a mouse, to improve responsiveness the install script will add usbhid.mousepoll=2 to the commandline.txt
In the directory "install/bullseye-7inch rpi" are example config.txt and cmdline.txt files for rotating the screen 5 inch DSI screens from waveshare do not need any adjustment. Sdrberry is currently tested for a resolution of 800 x 480. Although this can be changed in sdrberry.cpp line 47 and 48 it is not tested for other resolutions. There can be some issues.
First version of sdrberry webserver, goal is to remote control the functions of sdrberry. This is still an experiment / beta version. To see what is the best way to integrate web with C++ application. WEB pages are build with VUE JS 3 and Primevue source code will be shared later in separate github repo.
Copy sdrweb directory to pi home dir Open the WSJTX webpage on http://raspberry_pi_ip:8081