SDR Transceiver - SARCNET

School Amateur Radio Club Network
School Amateur Radio Club Network
School Amateur Radio Club Network
School Amateur Radio Club Network
Go to content
SDR Transceiver
This project is a HF Software Defined Radio Transceiver operating on the 40m Amateur Radio band. It supports AM, FM, USB, LSB and digital modes, each with selectable bandwidths. It has many features including a squelch control, automatic gain control, automatic notch filter, clarifier control and VOX. It provides a spectrum and waterfall display. It runs on the Raspberry Pi, using Quisk and WSJT-X software.
Parts List:

Total Price:
  • Without enclosure - AU$540 / US$400
  • With enclosure - AU$640 / US$470

SDR Transceiver Prototype (Front)
  • The prototype is powered by a USB battery pack. The final design will include a 12-5V DC/DC Converter.
  • The prototype uses an amplified speaker. The final design will include an additional sound card and a speaker amplifier.
  • The prototype uses standard audio cables. The final design will use a cable loom.

SDR Transceiver Prototype (Rear)

SDR Transceiver Pictorial Schematic Diagram
Quisk Display:
  • To start Quisk: Select Main Menu | HamRadio | Quisk; or click on the headset icon in the Launch Application Bar
  • The Quisk display is the small-format Quisk display
  • Additional options appear for buttons shown with the => symbol
  • All displays are maximized to fit the screen
  • The Menu Bar is used to select between displays
  • The Terminal window can be used with an on-screen keyboard for text entry
  • The capacitive touch screen works well with a stylus
  • A wireless mouse is easier as the wheel can be used to tune frequencies

  • Quisk is open-source and was originally written by James Ahlstrom, N2ADR.
  • Many others contributed to Quisk, and are mentioned in comments in the source code.
Quisk Display
WSJT-X Display:
  • To start WSJT-X: Select Main Menu | HamRadio | WSJT-X; or click on the WSJT-X icon in the Launch Application Bar
  • The WSJT-X display is maximized
  • For more information please refer to the WSJT-X user guide
WSJT-X Display
WSJT-X Wide Graph Display:
To start WSJT-X: Select Main Menu | HamRadio | WSJT-X; or click on the WSJT-X icon in the Launch Application Bar
The WSJT-X Wide Graph display is maximized
Set Bins/Pixel 4 to see a 3kHz wide waterfall
Set N Avg 1 to see a fast-moving waterfall
Set Start 200Hz to ignore the first 200Hz of the display, where the soundcard performance is not guaranteed
Set Spec 15% to reduce the size of the spectrum display
For more information please refer to the WSJT-X user guide
WSJT-X Wide Graph Display
Softrock RXTX Ensemble
  • The transceiver is controlled by an Attiny85 microcontroller, programmed as a USB device.
  • The local oscillator is a Si570, which works at 4-times the operating frequency. The output is divided to provide two quadrature-phase signals.
  • The receiver has a bandpass filter, quadrature detector and I & Q baseband amplifiers
  • The transmitter has I & Q baseband amplifiers, a quadrature encoder and bandpass filters
Softrock RXTX Ensemble
Raspberry Pi 3B+
  • Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC @ 1.4GHz
  • 2.4GHz and 5GHz IEEE 802.11.b/g/n/ac wireless LAN, Bluetooth 4.2, BLE
  • Gigabit Ethernet over USB 2.0 (maximum throughput 300 Mbps)
  • Extended 40-pin GPIO header
  • Full-size HDMI
  • 4 USB 2.0 ports
  • CSI camera port for connecting a Raspberry Pi camera
  • DSI display port for connecting a Raspberry Pi touchscreen display
  • 4-pole stereo output and composite video port
  • Micro SD port for loading your operating system and storing data
  • 5V/2.5A DC power input
  • Power-over-Ethernet (PoE) support (requires separate PoE HAT)

Raspberry Pi 3B+
HiFiBerry DAC+ ADC Pro
  • Maximum input voltage: 2.1Vrms 4.2Vrms for balanced input
  • Maximum output voltage: 2.1Vrms
  • ADC signal-to-noise ratio: 110db typical
  • DAC signal-to-noise ratio: 112db typical
  • ADC THD+N: -90db typical
  • DAC THD+N: -93db typical
  • Frequency response: 10Hz-70kHz (-3dB)
  • Input gain: -12db to 32dB
  • Power consumption: <0.3W
  • Sample rates: 44.1-192kHz

HiFiBerry DAC+ ADC Pro
HDMI Display
  • Screen Type: IPS Screen
  • Screen Size: 7.0 inch
  • Resolution: 1024x600
  • Backlight Adjustment: Independent Button To Turn On
  • Touch Screen Type: Capacitive Touch Screen
  • Touch IC: GT911
  • Power Supply: Micro USB (5V / 2A)
  • Video Input Interface: HDMI-Compatible
  • Audio Output Interface: 3.5mm Audio Interface + 2 Speakers (8Ω2W)
  • Size: 164.9 X 102mm/6.49 X 4.02"
  • Note: The two HDMI speakers are not used
HDMI Display
RF Power Amplifier
  • Power supply voltage: 13.8V
  • Power supply current: 6-10A
  • Maximum input power: 5W
  • Maximum output power: 70W
  • Frequency range 3.5--30Mhz (10M - 80M)

RF Power Amplifier
Low Pass Filter:
  • Single band LPF
  • Increase capacitor voltage for higher power
Low Pass Filter

TDA 2030A AF Power Amplifier Module (Top)
AF Power Amplifier:
  • TDA2030A 18W audio power amplifier chip
  • Onboard volume control
  • Onboard power indicator
  • Working voltage: 6 ~ 12VDC
  • Board size: 31.6mm x 23.2mm

TDA 2030A AF Power Amplifier Module (Front)
Software Setup Procedure (Note: This is still in development):
This procedure is only for the hardware configuration as shown in the pictorial schematic
This procedure involves setting up and configuring the following software. These instructions were compiled from the following links:

Always use the latest instructions and software form the sources above.
Some filenames which might need to be changed in the future are highlighted.

Connect at least the following hardware components:
  • HDMI Display
  • RPi connected to the HDMI Display
  • HiFiBerry, USB Soundcard, 5V Power Supply, Mouse and Keyboard connected to the RPi
  • Softrock RXTX Ensemble connected to a 12V Power Supply and the HiFiBerry
  • Multimedia Headset (mic and earphones) connected to the USB Soundcard
  • HF Antenna connected to the Softrock

Create a Raspberry Pi OS Micro SDHC Card using the Raspberri Pi Imager:

Boot up the RPi and follow the prompts to configure it for connection to your WiFi Router

You must change the password

Update and Upgrade the Raspberry Pi OS:

sudo apt-get update
sudo apt-get -y upgrade

Install additional Main Menu categories such as HamRadio:

sudo apt-get -y install extra-xdg-menus

Download wxPython - Open the browser and download the latest version of wxPython using the link at the bottom of this page:

Setup the boot configuration for the HDMI display and the HiFiBerry sound card:

sudo nano /boot/config.txt

Make changes only in the following areas using the nano text editor. Then press ^O to save and ^X to exit.

# uncomment to force a specific HDMI mode (this will force VGA)
hdmi_cvt=1024 600 60 1 0 0 0

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes

# Enable DRM VC4 V3D driver on top of the dispmanx display stack


Configure for Boot to CLI (this is only temporary to reduce the CPU load while compiling wxPython):

sudo raspi-config
Select System Options
Select Console Autologin

Boot to the console:

sudo reboot

Unzip wxPython:

cd ~/Downloads
tar xf wxPython-4.1.1.tar.gz

Install wxPython dependencies:

sudo apt-get -y install dpkg-dev build-essential libjpeg-dev libtiff-dev libsdl1.2-dev libgstreamer-plugins-base0.10-dev libnotify-dev freeglut3 freeglut3-dev libwebkitgtk-dev libghc-gtk3-dev libwxgtk3.0-gtk3-dev

Build wxPython:

cd ~/wxPython-4.1.1
python3 build bdist_wheel

This will take several hours and will probably freeze half-way through.
To recover from any lockups - Just cycle the power and run it again. It will start up where it left off.

python3 build bdist_wheel

Install wxPython into Python3:

sudo pip3 install ~/dist/wxPython-4.1.1-cp37-cp37m-linux_armv7l.whl

Configure for Boot to Desktop:

sudo raspi-config
Select System Options
Select Desktop Autologin

Boot to the desktop:

sudo reboot

Check wxPython is installed:

sudo python3 demo

Install Quisk dependencies:

sudo apt-get -y install fftw3-dev

Install quisk into Python3:

sudo pip3 install quisk

Add a new rule to give Quisk permission to access the Softrock USB port:

sudo nano /etc/udev/rules.d/local.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="16c0" , ATTR{idProduct}=="05dc", MODE="0666", GROUP="dialout"

Create a Desktop Entry for Quisk:

sudo nano /usr/share/applications/quisk.desktop

[Desktop Entry]
Comment=SDR Transceiver

Restart the Main Menu:

sudo lxpanelctl restart

Configure Quisk:

Select Main Menu | HamRadio | Quisk
Select Config
Select Radios
Add a new radio with the general type: SoftRock USB and name the new radio: SoftRock
Select Add
When Quisk starts, use the radio: SoftRock
Select *SoftRock*
Select Hardware:
Use Si570 direct control: true
Select Sound:
Digital: 0.1
Radio Sound: 48000 (Headset Sound Card TBD Output) - Use alsa:bcm2835 Headphones bcm2835 Headphones (hw:1,0) for testing with the RPi Headphone Jack
Microphone: 48000 (Headset Sound Card TBD Input)
I/Q Rx Sample: 19200 0 1 alsa:snd_rpi_hifiberry_dacplusadcpro HiFiBerry DAC+ADC Pro HiFi multicodec-0 (hw:2,0)
I/Q Tx Sample: 19200 0 1 alsa:snd_rpi_hifiberry_dacplusadcpro HiFiBerry DAC+ADC Pro HiFi multicodec-0 (hw:2,0)
Digital Tx0: pulse Use name QuiskDigitalInput
Digital Rx0: pulse Use name QuiskDigitalOutput.monitor
Select Options:
S-meter correction: 14.0
Select Windows:
Startup: WFall
Window width: 1020
Window height: 530
Button: Small screen
Change the focus from the last edited item, then close Quisk (do this every time the Quisk configuration is changed)

Calibrate the softrock frequency:

Select Main Menu | HamRadio | Quisk
Tune Quisk to a frequency reference signal
Select Config | *SoftRock* | Hardware:
Change the Si570 crystal frequency so that the reference signal is on-frequency
The default Si570 crystal frequency is 114825000 (Hz)
Note that 1000Hz crystal frequency change results in 40Hz received frequency change
Or 1Hz received frequency change requires 25Hz crystal frequency change
We had to set ours to: 114241375
Change the focus from the last edited item, then close Quisk (do this every time the Quisk configuration is changed)

Adjust the softrock/soundcard amplitude and phase correction:

Select Main Menu | HamRadio | Quisk
Select Config | Config:
See this first
Adjust receive amplitude and phase
Adjust transmit amplitude and phase
Change the focus from the last edited item, then close and restart Quisk (do this every time the Quisk configuration is changed)

Install WSJT-X:

sudo dpkg -i ~/Downloads/wsjtx_2.5.0-rc6_armhf.deb
sudo apt --fix-broken install

Setup NTP for WSJT-X:

sudo timedatectl set-ntp true

Configure WSJT-X:

Select Main Menu | HamRadio | WSJT-X
Select File | Settings | General:
Enter My Call and My Grid
Select File | Settings | Radio:
Rig: None
PTT Method: VOX
Note: These can be changed later if HAMLIB is installed
Select File | Settings | Audio:
Input: QuiskDigitalOutput.monitor
Output: QuiskDigitalInput

Install FLDIGI:

sudo apt-get -y install fldigi
sudo apt-get -y install pavucontrol

Configure FLDIGI:

Select Main Menu | Sound & Video | PulseAudio Volume Control
Select Playback: (TBD)
Select Recording: (TBD)
Select Main Menu | HamRadioi | FLDIGI
Follow the FLDIGI Configuration Wizard

Install Quisk, WXJT-X and FLDIGI shortcuts into the Application Launch Bar:
Right-click the Menu Bar
Select Panel Settings
Select Panel Applets
Select Application Launch Bar
Select Preferences
Select HamRadio | Quisk
Press Add
Select HamRadio | wsjtx
Press Add
Select HamRadio | FLDIGI
Press Add
Select Close

Install an on-screen keyboard:

sudo apt-get -y install matchbox-keyboard
Back to content