< async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"">

Friday, June 26, 2026

The RP2040 Minimalist HF Transceiver: A Low-Cost, High-Fun Sandbox for the Radio Tinkerer

After taking a break from homebrewing, seeing the incredible creativity and dedication in the ham radio community completely inspired me to dive back in. I’m taking things slow this time around, focusing on a rough prototype that is incredibly easy to build upon, swap parts, and experiment with. My latest project moves away from legacy design complexities, opting instead for a modern, digital-first approach.

It’s a work in progress, but it’s a fantastic canvas for tinkering. I'm excited to see where this experimentation leads—stay tuned for updates as I continue to tweak 

By pairing the dual-core processing power of the Raspberry Pi RP2040 with highly integrated, inexpensive breakout boards (the Si5351 and Si4732), this setup bypasses legacy design complexities to get you on the air quickly and cheaply. Plug a single USB cable into your PC or phone, fire up WSJT-X or FT8CN, and you are ready to transmit!


Project Philosophy: The Joy of "Good Enough" Radio

Let’s be clear: this project is not trying to compete with factory-built, precision instruments like the QMX or QDX. Those are highly optimized rigs with tightly engineered multi-stage filters and custom transformers. I could feel the amount of heavy work needed just by struggling with my fsk routines to send the ft8 audio to ether. Not to mention the other hurdles in putting everything into an orchestra!

Instead, this rig is all about complete hardware ownership and experimentation. It is an open sandbox proving that getting on the air with digital modes doesn't require a $$$ commercial setup. It is pure, old-school amateur radio tinkering updated for the 21st century! If you want out of box and inexpensive solution, i strongly recommend a qmx or qdx with assembly. If you want to get an excellend design with bom , firmware etc with drop in working solution, you could check a better and completed project from Dhiru kholia named ddx (bunzee lab). 


Features

  • Single-Cable Digital Station (UAC2 + CAT): No external sound cards or tangled interface boxes. A single USB connection handles both bidirectional digital audio (24-bit/48kHz) and Kenwood TS-480 CAT control commands concurrently.Works with WSJT-X, qFT8, FT8CN, and FT8TW etc
  • Stand-Alone Beacon Mode: Test your antennas or propagation completely headless. Set up the radio as an independent, fully autonomous FT8 or WSPR beacon—no computer required.
  • "Type-to-Talk" CW Terminal: Plug into any standard serial terminal (like PuTTY, minicom, or screen). You can use a physical automatic keyer, or simply type text into the terminal to send beautifully timed Morse code over the air.
  • QMX-Style Interactive Serial UI: Includes a comprehensive terminal command suite. Type ? to explore, change bands, tune frequencies, calibrate the internal reference clock down to parts-per-billion (ppb), or check real-time system diagnostics.
  • Massive RX Coverage, Focused TX Power: Enjoy wide-open listening across the Si4732's entire multi-mode spectrum (AM, FM, and shortwave SSB bands). For transmission, the firmware controls a simple Power Amplifier (PA) and Low-Pass Filter (LPF) switched across two targeted bands (easily expandable by mapping more GPIOs).
  • Rock-Solid Dual-Core Architecture: Core 1 dedicates its entire focus to flawless, low-latency DMA analog audio capturing. Core 0 manages the smooth graphics on the OLED, processes your encoder inputs, runs the beacon sequencing, and handles USB traffic without missing a beat.


half way, no pa, just basic block
A prototype board from JLCPCB, see jumpers where i forgot to route. Unpopulated area for LPF and PA

Modules for strip board prototyping

The Hardware Profile & Pin Mapping

Because this setup uses common, readily available breakout boards, you don't need a custom multi-layer PCB. You can wire the modules up directly using the following pin map:

Pin Function / Target Description
GP0 I2C0 SDA Shared data line for Si5351 (VFO), Si4732 (RX), and SSD1306 (OLED)
GP1 I2C0 SCL Shared clock line running at 400 kHz
GP6 Si4732 RESET Active LOW hardware reset line to initialize the receiver board
GP7 Rotary Encoder A Quadrature Tuning Input
GP8 Rotary Encoder B Quadrature Tuning Input
GP9 Encoder Button Push-button menu select (Active LOW)
GP10 RX/TX Relay State sequencer control line (HIGH = Transmit, LOW = Receive)
GP11 CW Straight Key External Morse Code Keyer Input (Active LOW)
GP12 Sidetone Output PWM output generating a 700 Hz reference audio signal
GP14 BPF/LPF Band 1 Low-Pass Filter select for your first main operating band
GP15 BPF/LPF Band 2 Low-Pass Filter select for your second main operating band
GP16 WS2812 status LED NeoPixel indicator (Changes colors dynamically based on RX/TX state)
GP25 Onboard LED System Status Indicator (Not used)
GP26 ADC Channel 0 Analog Audio Input sampled from the Si4732 receiver

GP26 Audio Input Bias Sub-Circuit 

To capture the raw audio output from the receiver properly via the single-ended RP2040 ADC, the signal must be offset to match the center of the 3.3V ADC window. You can find the exact wiring schematic inside the lb7ug_RP2040XCVR.pdf document, which guides you through routing the Si4732 audio out through a 10µF capacitor directly to GP26. A short video of my initial test is placed below. It takes audio streams via usb from ft8tw and transmit from si5351 using fsk. It is decoded by a nearby mini rx tuned to ft8 frequency and the tone is picked up by an other android device running qft8

Tinkerer Note: The dual 10kΩ resistor divider network steps the DC offset point directly to 1.65V (half-rail bias) to prevent negative voltage clipping.


Schematics

These are really ugly, i am too lazy to draw. But you can identify the basic blocks and the hardware is borrowed from various similar projects. Just look for si4732 receiver (rp2040-rdx), si5351 schematic (wb2cba, usdx etc) and LARCSET, DDX, QDX etc to get ideas for a better one. The key focus is on software to do all fun with cheap devices. You couls build it with basic modules. I will includ the pcb etc but use at your own wisdom as i have to use wires to bridge routings i have forgot :)

RP2040+Si5351

Si4732+LPF

PA based on IRF510 single ended


A 3D view which include 2band bpf and a IRF510 PA

Prototype PCB 


Known Limitations & Trade-offs

Stripping out complex multi-stage circuits makes this radio incredibly inexpensive and fun to build, but it introduces a few practical boundaries you should keep in mind:

  • Strict Harmonic Suppression Constraints: Because you only have hardware Low-Pass Filters (LPFs) for two bands, you must only transmit on those two designated bands. Transmitting outside of them will spit out unfiltered square-wave harmonics from the Si5351, which can violate local RF regulations.
  • The Antenna Compromise: The Si4732 receiver chip can tune into everything from AM/FM broadcast stations up to shortwave. However, a long-wire or HF dipole that works great for shortwave will easily overload the receiver near strong local FM stations. Conversely, a tiny FM antenna won't pick up weak HF signals well.
  • Single-Ended Audio Noise: Because the audio line from the Si4732 to the RP2040's ADC (GP26) is single-ended rather than differential, it is susceptible to picking up digital switching noise from the OLED display and the RP2040 clock lines. Keeping your audio trace lines short and well-grounded is crucial.
  • No SSB Phone (Voice): This minimalist design does not include a PWM envelope structure or Hilbert transform arrays. It cannot transmit SSB voice (LSB/USB). It is strictly a digital mode (FSK) and CW (Morse code) transmitter.
  • No Dynamic RX Filtering: The Si4732 handles the heavy lifting for filtering, but its internal bandwidth filters are fixed step sizes. Unlike a full-blown SDR transceiver with custom DSP software filters, you cannot infinitely narrow the receiver's passband to notch out a noisy adjacent station.


The Hardware Sandbox: Upgrading & Extending

The true magic of this architecture is its modular flexibility. Because the RP2040 and the Si5351 act as self-contained digital building blocks, they can be transplanted into almost any classic analog radio design to instantly modernize it.

1. Retrofitting Classic Rigs (BITX, etc.)

You can easily drop the control system of this radio into legendary analog designs like the BITX (a bidirectional analog SSB transceiver):

  • Instant VFO Upgrade: Rip out old, drifty analog VFOs or rigid crystal oscillators. Drop CLKO from the Si5351 right into the mixer stage of a BITX. Suddenly, that simple analog rig has rock-solid digital tuning and band switching.
  • Direct Audio Tapping: Instead of routing the RP2040 ADC to the Si4732 breakout, tap the analog audio right after the product detector/pre-amplifier stage of your analog rig. Pass that through your 1.65V bias network into GP26, and your computer can decode digital modes straight from a vintage circuit design.
  • Seamless RX/TX Sequencing: Use the PIN_RXTX line (GP10) to drive the push-to-talk (PTT) lines or bias circuits on an analog board.

2. Leveling Up: Adding an External Codec (WM8731/SGTL5000)

If you want to move past the limitations of the built-in 12-bit ADC and unlock SSB Voice Transmit, you can swap the simple internal analog path for a dedicated external I2S audio codec like the WM8731:

  • True SSB Voice Transmission: A codec gives you pristine, high-resolution audio input and output (typically 24-bit). This lets you implement a proper digital Phase Shift network (Hilbert Transform) in the RP2040 code. You can split your microphone audio into exact 90° I and Q channels, feed them to the codec, and modulate dual phases on the Si5351.
  • Superior Dynamic Range: Built-in microcontroller ADCs sit on the same silicon die as high-speed digital processors, making them prone to internal noise. A dedicated external codec provides a massive leap in dynamic range, dropping the noise floor drastically so weak signals pop right out of the static.
  • Hardware Filtering & Pre-amps: Most of these low-cost codecs feature integrated low-noise microphone pre-amplifiers and configurable hardware filters, saving you from having to build external operational-amplifier circuits.

How to Extend the Code

Want a third or fourth band? Simply wire up another cheap relay or transistor switch to an open GPIO pin, map it in your configuration file config.h, and add a few lines of code to trigger it. You have direct control over the frequency generation, the UI display layout, and the audio capture routines. The sky is the limit!


Acknowledgments & Credits

This project stands on the shoulders of giants. The RP2040 Minimalist HF Transceiver is a convergence of brilliant open-source hardware designs, deeply optimized firmware architectures, and the enduring spirit of amateur radio experimentation. Special thanks and credit go to the following pioneers and communities:

  • Hans Summers (QRP Labs): For inspiring the QMX/QDX-style architectural approach, interactive serial UI ideas, and proving what is possible with low-cost, highly optimized digital rigs.
  • Dhiru Kholia: For invaluable contributions to open-source radio firmware and foundational engineering concepts that make minimalist hardware highly functional.
  • Angel: For the robust, concurrent USB CDC + UAC2 dual-core audio and CAT control stack, eliminating the need for external sound cards or tangled interface boxes.
  • WB2CBA & the ADX Community: For pioneering the concept of ultra-simple, low-cost digital mode transceivers that inspired this sandbox layout.
  • PU2CLR (Ricardo Lima Caratti): For developing the definitive, rock-solid Arduino/C++ library ecosystem for the Si473X series, making advanced receiver control accessible to all.
  • Ashhar Farhan (VU2ESE) & the BITX Community: For the legendary, bidirectional analog designs that continue to inspire hackers to retrofit, modularize, and keep the spirit of homebrewing alive.

Core DSP & Frequency Tracking

A massive nod goes to the open-source contributors behind the high-performance tracking routines (originally housed in dsp/goertzel.c). Though the file name remains a legacy misnomer from an early, unsuccessful attempt at a grid-search Goertzel algorithm, its current architecture is a masterpiece of minimalist engineering:

Current Architecture: A highly optimized, continuous zero-crossing FSK frequency follower for digital modes (FT8/WSPR). It uses sub-sample interpolation with an unsigned 32-bit integer difference tracker to eliminate long-term float32 precision loss. Includes a discrete step-detection and multi-cycle confirmation filter to prevent symbol boundary blurring, coupled with double-precision VFO blending and fast fractional-divider tuning (si5351_set_freq_fast) to ensure phase-glitch-free spectral purity.

Finally, to the countless unnamed hackers, Elmer Elmers, and open-source library maintainers across GitHub and the QRP forums whom we may have missed—thank you for keeping the radio hobby innovative, collaborative, and incredibly fun.

Attachments

These are my prototype files. I cannot assure that they work out of box and may need tweeks. So if you are not familiar with the process, just get help from club, elmers or friends and feel free to contribute back so i can update with better files esp for pcb routing etc. Firmware presented may be outdated by the time you read the post as the project is in very early stage and updated as and when i get some spare time. Feel free to use for any non commercial and fun/hobby purposes. I am not selling anything, so i dont have pcb, parts or kits and i cant assure any guarantees.

  • Schematic (PDF) (EASYEDA, can be improved a lot but now it is lean and just works)
  • Gerber Files (JLCPCB/EASYEDA, updatedcompared to my prototype to avoid wire bodging)
  • Interactive BOM (EASYEDA, save as html and open saved file in browser)
  • Firmware (rp2040, this is very basic alpha version )
  • Source code (alpha)
Thanks for reading. 73!