The Radioberry HAT Raspberry Pi 4 turns a $35 single-board computer into a full HF software-defined radio transceiver covering 0 to 30 MHz. The HAT stacks directly on the Pi 4’s 40-pin GPIO header and uses an Analog Devices AD9866 12-bit mixed-signal front end alongside an Intel Cyclone 10LP FPGA to implement direct down conversion on receive and direct up conversion on transmit. The result is a complete HF SDR station (receive, transmit, up to four simultaneous RX channels, 384 kHz maximum bandwidth) for a fraction of the cost of commercial HF equipment. This article covers hardware assembly, software installation, pihpsdr configuration, transmit setup, and the practical things that trip up first-time builders.
Last tested: Raspberry Pi OS Bookworm 64-bit | April 10, 2026 | Raspberry Pi 4 Model B (4GB) | AURSINC Radioberry V2.0 (10CL025) | pihpsdr DL1YCF fork | verified receiving on 40m and 20m from my station W5HRW
Key Takeaways
- The Radioberry is a Pi 4 project. The Pi 5 is not currently supported due to GPIO timing differences. Do not buy the Pi 5 for this build.
- When running the install script, select CL025 for the AURSINC board. Selecting CL016 loads the wrong gateware and the radio will not work. When installing pihpsdr, answer No to the CW local option. Selecting yes creates a GPIO conflict that produces a broken waterfall display without any error message.
- The Radioberry raw TX output is 20mW (13dBm). That is enough to verify the transmit path works but not enough for any practical HF contact. An external PA is required for real-world use. The AURSINC Preamp Board V2 raises output to 3–5W and can drive a 100W PA stage.
How the Radioberry HAT Raspberry Pi 4 Works
The AD9866 samples incoming RF at 76.8 MHz and delivers 12-bit samples at that rate. That raw data flow is far too large to pass directly to the Pi via GPIO, so the Intel Cyclone 10LP FPGA performs decimation and filtering, downsampling the data to one of four rates: 48, 96, 192, or 384 kHz samples per second. The FPGA firmware (called gateware) is loaded from the Pi SD card at each power cycle via SPI. Once loaded, the Pi reads IQ sample data from the FPGA over GPIO pins and passes it to the radioberry device driver, which makes it available to SDR software over the HPSDR Protocol-1 network interface.

This HPSDR Protocol-1 compatibility is important. It means pihpsdr, SparkSDR, SDR Console V3, Quisk, and other HPSDR-compatible clients can connect to the Radioberry over the local network as if it were a Hermes Lite 2 or an Apache Labs radio. The Pi 4 acts as the radio server; the SDR software on the Pi (or any computer on the same network) acts as the client.
| Specification | Value |
|---|---|
| ADC/DAC | Analog Devices AD9866, 12-bit |
| FPGA | Intel Cyclone 10LP (CL016 or CL025) |
| Frequency range | 0–30 MHz (full HF spectrum) |
| Maximum bandwidth | 384 kHz |
| RX channels | Up to 4 simultaneous |
| TX channels | 1 |
| TX output power | 20mW (13dBm) bare board |
| Protocol | HPSDR Protocol-1 (Hermes Lite 2 compatible) |
| Host interface | Raspberry Pi 4 GPIO (40-pin) |
| Power source | Drawn from Raspberry Pi 4 5V rail |
Hardware Assembly
Power off the Pi 4 completely before installing the HAT. Align the Radioberry’s 40-pin female header with the Pi’s GPIO header and press straight down. The board overhangs the Pi on the antenna connector side. Install the standoffs to support both boards. The HAT is heavy enough relative to the GPIO connector that the board will flex and risk connector damage if unsupported.
The AURSINC board ships with a small cooling fan. Install it. The AD9866 and FPGA generate meaningful heat at idle and sustained use without airflow risks thermal issues on the AD9866. The fan header on the AURSINC board is 5V, so the fan runs at a fixed speed rather than PWM-controlled like the Pi 5 fan header.
The board has two SMA connectors: one for receive (RX) and one for transmit (TX). These are separate paths. Without the Preamp Board, you need two antenna connections: one antenna for receive and a separate connection for transmit. A T/R relay or antenna switch is needed to share one antenna for both. With the Preamp Board stacked on top, a single antenna connection handles both modes.
Use a quality 5V/3A supply minimum for the Pi 4 when running the Radioberry HAT. The HAT draws current from the Pi’s 5V rail. A marginal supply that handles the Pi alone may struggle under the combined load of Pi 4 plus FPGA plus AD9866 plus the fan. See Raspberry Pi Power Monitoring via USB for how to verify supply adequacy under load.
OS and Driver Installation
Flash Raspberry Pi OS Bookworm 64-bit using Raspberry Pi Imager. In the advanced settings, set hostname, enable SSH, and configure credentials. The Radioberry requires the 64-bit OS. The 32-bit variant does not work with the current driver. After first boot:
sudo apt update && sudo apt full-upgrade -y
sudo reboot
Download and run the Radioberry install script from the development branch. The development branch is the recommended installation path per PA3GSB. The stable release branch is outdated:
cd /tmp
wget https://raw.githubusercontent.com/pa3gsb/Radioberry-2.x/master/SBC/rpi-4/releases/dev/radioberry_install.sh
chmod 755 radioberry_install.sh
./radioberry_install.sh
The script will prompt for the FPGA variant. Select CL025 for the AURSINC board. If you are unsure which FPGA your board has, look for the chip marking on the largest IC on the Radioberry. It will read 10CL025 or 10CL016. Selecting the wrong variant loads incorrect gateware and the radio will not initialise.
sudo reboot
After reboot, verify the driver loaded and the gateware was programmed into the FPGA successfully:
# Check the radioberry service status
sudo systemctl status radioberry
# Check kernel log for gateware load confirmation
sudo dmesg | grep -i radioberry
# Run the radioberry binary directly to see version info
sudo radioberry
Expected result: systemctl status radioberry shows the service active. dmesg shows a gateware version string with no errors. sudo radioberry outputs the build version, gateware version, and “Have fun” followed by PA3GSB’s email. If the gateware version shows as 0 or the service fails to start, see the troubleshooting section.
Installing pihpsdr
pihpsdr is the recommended SDR client for running directly on the Pi with the Radioberry HAT. PA3GSB recommends the DL1YCF fork (maintained by Christoph Reinhardt, DL1YCF) over the original pihpsdr build because it is actively maintained, supports resizable windows, and works correctly with current WDSP versions. Install it using the pihpsdr install script:
cd /tmp
wget https://raw.githubusercontent.com/pa3gsb/Radioberry-2.x/master/SBC/rpi-4/releases/dev/pihpsdr_install.sh
chmod 755 pihpsdr_install.sh
./pihpsdr_install.sh
The script will walk through several options. The critical ones:
- WDSP: Install this first if it is a new build. WDSP is the DSP library pihpsdr depends on.
- pihpsdr: Select this after WDSP is installed.
- CW local: Answer No. Selecting Yes compiles in GPIO handling for local CW keying that conflicts with the Radioberry’s use of the same GPIO pins. The result is a garbled waterfall with no error message to explain why.
After installation, a pihpsdr icon appears on the desktop. If running headless, you can start it from the terminal after setting a display:
DISPLAY=:0 pihpsdr
Expected result: pihpsdr opens showing the radio discovery screen. It should automatically discover the Radioberry on the local network via Protocol-1 broadcast. Select it and click Start. The main SDR window opens with a waterfall and spectrum display. If no radio is discovered, see the troubleshooting section.
Configuring pihpsdr for the First Time
Once pihpsdr is running with the Radioberry discovered, a few settings to configure on first use:
Sample rate
Go to Menu > Radio and set the sample rate. 192 kHz is the best starting point. It gives a 192 kHz wide waterfall display, which is wide enough to see band activity while keeping the Pi’s CPU load manageable. 384 kHz is available but pushes CPU usage higher and requires more GPIO bandwidth. 48 or 96 kHz uses less CPU but narrows the waterfall window.
Band and frequency
Use the band buttons or type a frequency directly. Start on 40m (7.000 to 7.300 MHz) or 20m (14.000 to 14.350 MHz). Both are reliably active during daylight hours and give a quick confirmation that the receiver is working. From my station (W5HRW), 40m is productive from afternoon through the evening and 20m opens to Europe and Asia mid-morning through early afternoon.
Mode and filter
For SSB voice, select USB above 10 MHz (standard for 20m, 17m, 15m, 12m, 10m) and LSB below (40m, 80m, 160m). Set a filter width of 2.4 kHz as a starting point. pihpsdr has a 3-band and 10-band equaliser for both receive and transmit under the Menu settings. Leave these flat initially and adjust once you have a baseline signal.
AGC
Set AGC to Slow or Medium for SSB. Fast AGC causes pumping on voice signals. The AGC threshold and hang time are adjustable in the Menu settings. The AD9866’s 12-bit ADC has less dynamic range than the 16-bit ADC in commercial HF radios, so strong adjacent signals can cause visible artefacts in the waterfall near busy band segments. Reducing the RF gain manually when working a crowded band often gives cleaner results than relying solely on AGC.
Transmit Setup
The Radioberry transmits at 20mW from the TX SMA connector. Before transmitting, confirm your licence authorises you to operate on the intended frequency. In the US, a Technician licence covers no HF phone privileges below 10m; a General or Extra licence is required for HF SSB on the bands where the Radioberry is most useful.
The TX path requires a low-pass filter (LPF) bank to remove harmonics before the signal reaches the antenna. The Radioberry’s raw TX output has significant harmonic content. Operating without an LPF is a Part 97 violation and will cause interference on harmonically related frequencies. Commercial LPF modules for each HF band are available from suppliers including QRP-Labs and kits from the amateur radio community.
The AURSINC Preamp Board V2 stacks on top of the Radioberry and raises TX output to 3–5W. It includes SMA connections for RX, TX, and a shared antenna port, which eliminates the need for an external T/R relay. The board runs on 6–8.4V (a separate power connection, not from the Pi). At 3–5W, the Preamp Board can drive a 100W PA stage directly. This is enough for practical HF SSB contacts in most conditions, though serious DX work benefits from more power above that level.
In pihpsdr, enable transmit in Menu > Transmit and configure your microphone input. The Pi 4 has no onboard audio input. You need a USB audio interface or USB headset. Set the microphone gain and transmit filter width (2.1 to 2.4 kHz for SSB voice). Use the VOX setting or a PTT button. Monitor your transmitted audio using pihpsdr’s own monitor function before going on air.
Troubleshooting
Radioberry service fails to start
# Check the service logs in detail
journalctl -u radioberry -n 50
# Check kernel log for gateware loading errors
sudo dmesg | grep -i 'radioberry\|spi\|fpga'
# Confirm the gateware file exists at the expected path
ls /lib/firmware/radioberry*
The most common cause is the wrong FPGA variant selected during installation. If the gateware file does not match the installed FPGA, the firmware load silently fails and the service reports no radio found. Re-run the install script and select CL025 explicitly. A second common cause is running the 32-bit OS. Only 64-bit Bookworm is supported.
pihpsdr shows no radio discovered
# Confirm the radioberry service is running
sudo systemctl status radioberry
# Confirm it is listening on UDP 1024
sudo ss -ulnp | grep 1024
# Check that the Pi's firewall (if any) is not blocking UDP
sudo ufw status
The Radioberry broadcasts its presence on UDP port 1024 using Protocol-1. pihpsdr listens for this broadcast on the same network. If both are running on the same Pi and no radio is discovered, confirm the radioberry service is active and not erroring. If running pihpsdr over the network from a different machine, ensure both machines are on the same subnet and that UDP 1024 is not blocked between them.
Garbled or rainbow waterfall
This is almost always the GPIO conflict caused by compiling pihpsdr with CW local enabled. The solution is to reinstall pihpsdr, running the install script again and answering No to the CW local option when prompted. The previous pihpsdr binary is replaced cleanly by the script.
Receiver hears nothing or very weak signals
# Verify the gateware version shows a nonzero build number
sudo radioberry
# Check RF gain in pihpsdr (should not be at minimum)
# Menu > Radio > RF Gain -- set to 0dB initially
# Verify antenna is connected to the RX SMA, not the TX SMA
Confirm the antenna is on the correct SMA connector. The RX and TX connectors are separate on the bare Radioberry board. If the gateware version shows as 0 or a very low number, the gateware did not load correctly. The AD9866 has less sensitivity than dedicated receive-only front ends. A proper HF antenna makes a significant difference. A resonant dipole or end-fed half-wave for the target band will produce clearly audible signals where a random wire produces marginal results.
Pi becomes unresponsive during use
Thermal throttling is a likely cause. The Radioberry draws current from the Pi 5V rail and the FPGA generates heat. Under sustained use without adequate airflow, the SoC temperature can reach the throttle threshold. Confirm the fan is running, check vcgencmd measure_temp, and add a heatsink to the Pi’s SoC if not already present. See Raspberry Pi Cooling Guide for thermal management options.
Operating Modes and Use Cases
The Radioberry supports all modes that pihpsdr implements via the WDSP DSP library: SSB (USB and LSB), CW, AM, FM, and digital modes. For digital modes like FT8, WSPR, and JS8Call, pihpsdr can route audio through a virtual audio cable to WSJT-X or JS8Call running on the same Pi. The 4-receiver capability is useful for monitoring multiple band segments simultaneously.
| Use case | Notes |
|---|---|
| SSB receive / monitoring | Works at bare board level. Antenna quality is the dominant factor. |
| CW receive | Works. pihpsdr includes a CW decoder. Narrow CW filters available. |
| Digital modes (FT8, WSPR) | Works with WSJT-X via virtual audio cable on the Pi. |
| SSB transmit | Requires USB audio interface for microphone input. LPF required. |
| CW transmit (keyer) | Requires external keyer; CW local GPIO is disabled for Radioberry. |
| QRP operation (3–5W) | Requires Preamp Board V2 and external LPF bank. |
| 100W+ operation | Preamp Board drives external 100W PA stage. Band switching needed. |
FAQ
Does the Radioberry work with Raspberry Pi 5?
Not currently. The Pi 5 changed the GPIO hardware significantly and the Radioberry firmware, which relies on specific GPIO timing for SPI communication with the FPGA, does not work on Pi 5. The project targets Pi 4. There is no announced timeline for Pi 5 support.
Can I use the Radioberry without a licence?
You can receive with no licence. Receive-only SDR operation requires no amateur radio licence in the US or most countries. Transmitting on amateur HF frequencies requires an amateur radio licence with HF privileges. In the US, that means a General or Extra class licence. A Technician licence does not cover HF SSB or CW privileges on the bands where the Radioberry is most useful (40m, 20m, 17m, 15m).
Can I use SparkSDR instead of pihpsdr?
Yes. SparkSDR is a modern cross-platform HPSDR client that works with the Radioberry. The Radioberry runs as a Protocol-1 server and SparkSDR connects to it over the local network from a Windows, Mac, or Linux machine. This is a good option if you want a more polished client interface or are running the Radioberry headless as a radio server. SDR Console V3 is another well-supported option for Windows users.
What antenna should I use?
For initial testing and general HF monitoring, a 40m or 80m end-fed half-wave is practical and performs across a wide range of HF bands. For dedicated single-band work, a resonant dipole cut to that band provides better results. The AD9866 has a 12-bit ADC and less dynamic range than commercial receivers, so strong nearby signals can cause overloading. An attenuator (3–6 dB) often improves reception on busy bands by keeping strong signals within the ADC’s linear range.
How does the Radioberry compare to a Hermes Lite 2?
The Hermes Lite 2 uses the same AD9866 chip and the same HPSDR Protocol-1, so the RF performance is similar. The main differences are physical interface and ecosystem: the Hermes Lite 2 connects over Ethernet from any computer; the Radioberry connects via GPIO to a Pi 4 and requires the Pi as the host processor. The Hermes Lite 2 is a standalone device with a network interface; the Radioberry needs a Pi to function. The Hermes Lite 2 is generally considered more refined and better documented, but costs more and is harder to find in stock. The Radioberry is the more accessible entry point for Pi builders.
References
- https://github.com/pa3gsb/Radioberry-2.x/wiki
- https://github.com/pa3gsb/Radioberry-2.x/releases
- https://github.com/dl1ycf/pihpsdr
- https://www.sparksdr.com/
- https://www.analog.com/media/en/technical-documentation/data-sheets/AD9866.pdf
About the Author
Chuck Wilson (W5HRW) has been a licensed amateur radio operator for many years and holds an General class license. His professional background includes CAD drafting, manufacturing line programming, and custom computer design. He runs PidiyLab in retirement, documenting Raspberry Pi and homelab projects that he actually deploys and tests on real hardware. The Radioberry setup described in this article was verified at his station W5HRW, confirming reception on 40m and 20m with a full-size wire antenna.
Last tested hardware: Raspberry Pi 4 Model B (4GB), AURSINC Radioberry V2.0 (10CL025). Last tested OS: Raspberry Pi OS Bookworm 64-bit. pihpsdr DL1YCF fork, WDSP library.

