Running WSJT-X on a Raspberry Pi with iPad as Display

In the previous post, Yaesu FT-891 operating WSPR digital mode with macOS, I documented transmitting and receiving WSPR with WSJT-X software running on a Mac Mini M1. To reduce the amount of RFI generated by my computer and monitor, I set up a system using a Raspberry Pi 3B+ computer, with an Apple iPad providing the display for the user interface.

Set up Raspberry Pi screen sharing

Prepare an SD card with Raspberry Pi OS Lite downloaded from, for example 2022-09-22-raspios-bullseye-armhf-lite.img.xz. Create a user (e.g., "user") and enable ssh access.

Install graphical user interface.

sudo apt update
sudo apt upgrade

sudo apt install -y xserver-xorg
sudo apt install -y raspberrypi-ui-mods
sudo apt install -y xinit

Install and set up VNC Server. Choose a new VNC password (e.g., "screenpw") that is different from any other system password.

sudo apt install -y tightvncserver
vncserver :1 -geometry 1600x1000
Password: screenpw

Configure desktop to login automatically.

sudo raspi-config
System Options > Boot / Auto Login: Desktop Autologin

Set tightvncserver to start automatically.

cd ~/.config
mkdir autostart
cd autostart
vi tightvnc.desktop

Insert text:

[Desktop Entry]
Exec=vncserver :1 -geometry 1600x1000


sudo reboot

Connect to Raspberry Pi screen from macOS

The built-in macOS screen sharing app is hidden at HD > System > Library > CoreServices > Applications > Screen Sharing. Launch it, and enter the IP address of the Raspberry Pi and the port (5901) as shown. Enter the screen password when requested.

Connect To:

Connect to Raspberry Pi screen from iOS

I use the Remoter VNC app. It costs $3.99, a bargain.

Launch app, and tap plus sign in upper left corner to add a host (the Raspberry Pi).

Remoter VNC main screen

Tap the square labelled Add Session Manually.

Remoter VNC add session manually

Select VNC(Screen Sharing) for the Server type, then enter the fields as follows:

Server Type VNC(Screen Sharing)
Name [Choose a name]
VNC Hostname [IP address of Raspberry Pi]
VNC Port 5901
VNC Password [e.g., screenpw]

Tap Save when done.

Remoter VNC add-session dialog

Tap the box for the Raspberry Pi host, then tap Start. The Raspberry Pi screen should appear.

Remoter VNC main screen after tapping host

If the screen saver appears, tap the trackpad control (upper right, next to the keyboard icon) and use the trackpad to double-tap the screen saver and make the regular screen appear.

Remoter VNC Raspberry Pi shared screen

Compiling WSJT-X

WSJT-X source code is maintained at SourceForge. Download and unpack it:

cd ~/Downloads
wget -O wsjtx-2.5.4.tgz
tar -zxvf wsjtx-2.5.4.tgz

Install libraries:

sudo apt install -y build-essential
sudo apt install -y git
sudo apt install -y cmake
sudo apt install -y automake
sudo apt install -y libtool
sudo apt install -y asciidoc
sudo apt install -y texinfo
sudo apt install -y qtmultimedia5-dev libqt5serialport5-dev qttools5-dev
sudo apt install -y qttools5-dev-tools libboost-all-dev libfftw3-dev
sudo apt install -y libreadline-dev libusb-1.0-0-dev libudev-dev portaudio19-dev

Build. This took more than an hour.

mkdir build
cd build
cmake --build .
sudo cmake --build . --target install

This library is not required for building, but it is required for running wsjtx.

sudo apt install -y libqt5multimedia5-plugins

The CP210 driver is distributed as part of the Linux kernel, so it is not necessary to install it (unlike for macOS or Windows).

Setup and operation

Hook up the USB cable, Plugable Audio Interface, and audio cables as described in Yaesu FT-891 operating WSPR digital mode with macOS. Turn on the FT-891, attach dummy load, and reboot Raspberry Pi.

Connect via screen sharing.

Click/tap on Raspberry > Run, enter "wsjtx", click OK. WSJT-X should start.

Menu selections

View Waterfall
Decode Deep

You may need to move the main window to see the waterfall. Theses setting in the lower left corner of the waterfall display are good for WSPR:


WSJT Settings: General

My Call [your call]
My Grid [your 6-character Maidenhead locator]
IARU Region Region 1 — Africa, Europe, Middle East, and northern Asia
Region 2 — the Americas
Region 3 — the rest of Asia and the Pacific

System Settings: Audio

Click the speaker icon in the upper left corner, and set the default audio device to be something other than the Plugable inteface. (You do not want system sounds and beeps getting sent to the rig!)


WSJT Settings: Audio

Input alsa_input.usb-Plugable_Plugable_USB_Audio_Device_... Mono
Output alsa_output.usb-Plugable_Plugable_USB_Audio_Device_... Left

If the audio device does not appear in the popup menus, try quitting WSJT-X, unplugging and replugging the device, restarting, etc.


WSJT Settings: Radio

Rig Yaesu FT-891
Serial Port /dev/ttyUSB0
Baud Rate 4800
Data Bits Default
Stop Bits Default
Handshake None
Force Control Lines
   DTR Low
   RTS High
PTT Method CAT
Mode Data/Pkt
Split Operation None

The ttyUSB0 option seemed to work for me, but it might be necessary to switch to ttyUSB1 if it doesn't. Use the Test CAT button to check.


Audio levels

Click the microphone icon in the upper right corner, and adjust the level for about 30 dB background noise level.

xxxxxxxxxxx     xxxxxxxxxxx

Select the Raspberry > Sound & Video > PulseAudio Volume Control menu item to show the volume controls. With the FT-891 hooked up to a dummy load and the MTR set to show ALC, adjust the Pwr control in the WSJT window and the Plugable USB Audio Device Analog Stereo level so that the ALC level just reaches zero.


To contact the author, send email.