Ham Radio Digital Modes on Raspberry Pi: WSJT-X, FT8, and FLDIGI Setup
Digital modes like FT8 have quietly become the most active corner of amateur radio — a well-configured station can make contacts across continents on a few watts, entirely through software decoding signals too weak or too brief for a human ear to copy reliably. A Raspberry Pi is a genuinely good fit as the digital mode engine for a ham shack: it's cheap enough to leave running full-time next to the radio, low-power enough to run continuously, and headless-capable so the actual data-heavy decoding happens without tying up a desktop. This guide covers setting up WSJT-X (the software behind FT8, FT4, and related modes) and FLDIGI (for RTTY, PSK31, and a wide range of other digital modes) on a Pi, along with the CAT control and audio wiring that ties the software to an actual radio.
What These Modes Actually Need
- Accurate time sync — FT8 and most weak-signal digital modes are extremely sensitive to clock accuracy (within about a second), since the protocol relies on precise time-division framing between transmit and receive. A Pi with working NTP sync handles this automatically; a desktop with drifting clock settings is a common source of mysteriously failed decodes.
- Audio in and out between the radio and the Pi — decoding needs the radio's received audio fed to the Pi, and transmitting needs Pi-generated audio fed back to the radio's mic/data input.
- CAT control (Computer Aided Transceiver control) — a serial or USB connection letting the software set frequency and key the radio into transmit automatically, rather than requiring manual tuning for every contact.
Base Pi Setup
- A Raspberry Pi 4 or 5 with a full desktop image (not Lite) is the more practical choice here, since WSJT-X and FLDIGI are GUI applications typically run directly on a small screen or monitor next to the radio rather than purely headlessly.
- Confirm NTP time sync is active: timedatectl status should show "System clock synchronized: yes". If not, install and enable chrony: sudo apt install -y chrony && sudo systemctl enable --now chrony.
- Update the system fully before installing radio software: sudo apt update && sudo apt full-upgrade -y.
Installing WSJT-X
- Download the ARM64 .deb package for Raspberry Pi OS from the official WSJT-X downloads page (a Pi-specific build is provided precisely because of how common this setup has become).
- Install with sudo apt install ./wsjtx_<version>_armhf.deb (or arm64, matching your OS), which pulls in Hamlib and required Qt dependencies automatically.
- Launch WSJT-X and open File → Settings to configure:
- Radio tab — select your specific rig model from the Hamlib-supported list, set the correct serial/USB device (commonly /dev/ttyUSB0), and the correct baud rate matching your radio's CAT settings.
- Audio tab — select the USB audio interface or sound card connected to the radio for both input and output.
- Reporting tab — connect logging to a service like Log4OM or a local ADIF log file if you want automatic QSO logging.
- Test CAT control first with the "Test CAT" and "Test PTT" buttons in the Radio settings tab before attempting an actual transmission — a working CAT link but failed PTT (push-to-talk) is a common and easy-to-isolate wiring issue.
Installing FLDIGI
- Install directly from the Raspberry Pi OS repositories: sudo apt install -y fldigi.
- Configure the radio connection under Configure → Rig Control — FLDIGI supports both direct Hamlib rig control and rigctld (a separate daemon that can also be shared with other software running on the same Pi).
- Configure the sound card under Configure → Sound Card, matching the same USB audio interface used for WSJT-X if running both.
- FLDIGI covers a much broader mode list than WSJT-X — RTTY, PSK31/63, Olivia, and many low-bandwidth digital modes still actively used on HF — useful as a complement to FT8-focused WSJT-X rather than a replacement.
CAT Control and Audio Wiring
ConnectionTypical hardwareNotes CAT control (frequency/PTT)USB-to-serial adapter, or a rig with native USB CATConfirm the exact baud rate and CAT protocol your specific radio model expects — a mismatch here is the most common "nothing works" symptom Radio audio out → Pi audio inUSB sound card / interface, or a rig with a built-in USB audio codecMany modern rigs (Icom, Yaesu, Kenwood digital-capable models) expose a single USB connection that carries both CAT and audio, simplifying wiring significantly versus older radios needing separate serial and audio cables Pi audio out → Radio mic/data inSame USB audio interface, output sideSet radio audio input gain conservatively at first — overdriving a digital mode's audio input distorts the signal and can cause off-frequency splatter that interferes with other stations PTT keyingCAT-based PTT (via software command) or a dedicated PTT line through the interfaceCAT-based PTT is simpler to wire but has slightly more latency than a dedicated hardware PTT line — usually irrelevant for FT8's forgiving timing windows, more noticeable on some fast-keying modesA Basic FT8 Operating Workflow
- Set WSJT-X to the FT8 mode and the correct band frequency (WSJT-X includes preset frequencies for common FT8 calling channels per band).
- Confirm the waterfall display shows activity — a flat, empty waterfall usually means an audio routing problem rather than a genuinely dead band.
- Double-click a decoded station in the right-hand panel to initiate a contact; WSJT-X automates the full exchange sequence (call, signal report, confirmation) with minimal manual intervention.
- Confirm actual transmission with a separate means the first few times — an SWR meter or a second receiver — to be certain PTT and audio are actually keying the radio correctly before relying on it unattended.
Safety and Licensing
Transmitting on amateur radio frequencies legally requires a valid amateur radio license appropriate to the bands and modes being used — this is true regardless of how automated or software-driven the actual operation is, since the FCC (or the equivalent licensing authority in your country) holds the license holder responsible for correct operation, not the software. Keep transmit power and duty cycle within your radio's rated limits — FT8's continuous, scheduled transmit cycles run the finals harder than intermittent voice contacts, and some radios need a duty-cycle derating for sustained digital-mode operation.
Running WSJT-X and FLDIGI on a dedicated Raspberry Pi rather than a shack's main computer keeps the radio's digital mode setup as a standalone, always-ready appliance — reboot the Pi, and the shack's data station comes back up in the same known-good state every time, which is a real advantage on a modes that reward showing up on frequency reliably, night after night.
Related Guides
- Getting Your Amateur Radio License: What Technician, General, and Extra Actually Unlock
- Build an APRS iGate and Digipeater with Raspberry Pi and RTL-SDR
- Building a Digital Voice Ham Radio Hotspot with Raspberry Pi and MMDVM: DMR, D-STAR, and System Fusion
- Winlink Radio Email Setup: VARA Modem, RMS Express, and Sending Email Over HF/VHF Radio
- Build a High-Altitude Balloon Payload Tracker: GPS, APRS Transmission, and Safe Recovery
- Build an End-Fed Half-Wave HF Antenna for Ham Radio
- Build an AllStarLink Node with Raspberry Pi: Linking Repeaters and Hotspots Over the Internet
- How to Install Klipper on Any 3D Printer: Complete Setup Guide