WSJT and WSJT-X notes for Linux

These are great programs by Joe Taylor and the working group, but using them on Linux is tricky.
My Linux: Fedora 20 x86_64 and Ubuntu 14.04 LTS x86_64. H/W ASRock QC5000-ITZ/WiFI (AMD Kabini) and ASRock Q1900-ITX (Intel J1900 Bay Trail-D) respectively.

And for low power, a Banana Pi because it has a SATA port.

Fall 2014, WSJT10 and WSPR4 now use Python 3
The Python Imaging Library (pillow) Ver 2.6.1 does not work, crashes when a waterfall is drawn, downgrade: pip3 install -I pillow==2.5.3


The origional, 2005, developed in Fortran for DSP and Python for the GUI bit.
Over the years, Python has evolved from the Ver 2.3 then to 2.7 now (2014). Once compiled, the major issues are with audio "samplerate". WSJT uses 11025 (44100 / 4) which is supported by very few sound cards. The "fix" is in your "~/.asoundrc" file documented in "Wsjt_Howto_Mandriva_2007_Free.html" in the source. This uses Linux sound system ALSA to do the re-sampling.
Current Linux uses "PulseAudio" on top of ALSA for your Desktop audio. This can be a pain, restrict it to certain cards in "/etc/pulse/".
WSJT does TX control with DTR, no CAT.
Always run from the command line. Setup the "Audio in:" and "Audio out:" devices from the command line text output.
WSJT's current version is 10.0 as downloaded with "svn -r3829 co". There was a file "ftsky.f" missing, I retrieved from an earlier version.
Here I have a compiled Ver 10.0 for Ubuntu 12.04 LTS i686 (32bit), packaged with pyinstaller
Just "cd; tar xzf file" wsjt10ubu1204i686.tgz put the binaries in your PATH, mv ./usr/local/bin/* /usr/local/bin
Run in a terminal, prompt$ wsjt

NOTE: The syntax of Ubuntu (debian) differs to Fedora (Red Hat) linux. (see below)

Fedora 20 x86_64: "tar xzf file" wsjt10r4227_64.tgz
Can anybody get the ".asoundrc" to work a after fresh install of Fedora 20 Desktop?


Developed now with the QT development environment and C++. DSP is still in Fortran. QT is also evolving and thus version issues.
CAT and DTR are available for TX control from Ver 0.99.
Versions up to Ver 1.1 use ALSA with a samplerate of 12000, so use the "~/.asoundrc" trick with rate 48000.
Ver 1.3 uses audio devices from PulseAudio. Samplerate problem is now fixed.
"PulseAudio" was never meant to be an audio routing tool. Was broken in Fedora 17.
Download: svn co
Compiling Ver 1.3 needs the new Qt5. These changes are not documented in the "wsjtx_changelog.txt" file.


WSPR 4.0 r4889 as at Jan 2015
Developed in Fortran, Python and some "C". Samplerate 48000, except commandline wspr0 uses 12000.
Compiles fine on Fedora 19 x86_64.
Python Image library comes from PIL. from PIL import Image etc..
Notes: Needs .asoundrc fix for motherboard sound on my HP Probook 4320s.
Just "cd; tar xzf file" wspr40Fed19x86_64.tgz
Banana Pi: stops after 10+ hours with message: Error starting rx thread 11. FIXED from SVN version 4889
It was a threads issue, memory not released, dating back years.

Banana Pi now runs well, Bananian, Fedora 21 (headless), any Linux.

Linux tricks

I suggest adding four loopback sound devices, create /etc/modules-load.d/snd-aloop.conf with content "snd-aloop".
My box had two Intel cards: motherboard and video card, an Ensoniq PCI and USB devices. Find drivers with "lsmod | grep ^snd_".
Set card order (index=) and options: cat /etc/modprobe.d/dist-alsa.conf
options snd_hda_intel index=0,1
options snd_ens1371 index=2
options snd_aloop index=3,4,5,6 enable=1,1,1,1 pcm_substreams=4,4,4,4
options snd_usb_audio index=7,8,9,10

What cards do we have: cat /proc/asound/cards

The ".asoundrc" samplerate fix

Fedora 19 x86_64 "card 7" is my USB sound device, a Behringer UCA202. In WSJT use the "rconv70" device.

I have cards: 2, 7 and 8. "0" for the sub-device:
cat ~/.asoundrc

pcm.rconv20 {
	type rate
	slave {
		pcm "hw:2,0"
		rate 44100

pcm.rconv70 {
	type rate
	slave {
		pcm "hw:7,0"
		rate 44100

pcm.rconv80 {
	type rate
	slave {
		pcm "hw:8,0"
		rate 44100

This nested syntax (above) didn't work for Ubuntu 14.04 x86_64.
WSPR on Laptop HP Probook 4320s Fedora 19 x86_64
pcm_slave.sl00 {
        pcm "hw:0,0"
        format S16_LE
        channels 2
        rate 44100

pcm.cconv00 {
        type plug
        slave sl00
Neither are the docs here right for every Linux.

Ubuntu 14.04 LTS x86_64, Apr 2014 Card 7, minor device 0

pcm_slave.sl70 {
	pcm "hw:7,0"
	format S16_LE
	channels 2
	rate 44100

pcm.rconv70 {
	type plug
	slave sl70

Raspberry Pi and, Banana Pi with SATA disk

There are versions compiled for armhf:
wsjt_9.7.r3639+dfsg-1_armhf.deb - no-go on Raspbian
Notes: Raspbian has Python 2.7 and 3.2 but no PIL (Python Imaging Library) for 3.2 so follow use pip "type pip-3.2"
pip-3.2 install -I pillow==2.5.3
WSJT10 works now with python3 on ARMHF.
"pillow 2.6.1" causes crashes when a waterfall is drawn in both WSPR and WSJT

FIXED Bug: WSPR 4 runs for about 10 hours then stops at "stop" in startrx.f90.
"threads" are the problem. Fixed from SVN 4889 Jan 2015

Python 2.7
Compile from with
./configure --with-portaudio-include-dir=/usr/include --with-portaudio-lib-dir=/usr/lib/arm-linux-gnueabihf
WSPR Python 2.7 You'll need SVN 3639 but fix start_threads.c, see SVN 4891


In desperation I bought a few USB sound sticks locally
Creative X-Fi Pro
Creative Sound BLASTER SB1140
Tend 3D Sound
Connectland 0107058, C-Media FG-UAUDV2-C119, CM108 chipset (has IO for repeater use)
Behringer UCA202, eBay
Only the UCA202 and the X-Fi Pro are sterio input.
One channel input (mono) is addressed by a patch by Debian developers.
This has not been included by the WSJT team.
PCI and motherboard sound
Rarely is 11025 or 12000 supported by anything. 44100 and 48000 on the other hand, always supported. (Developers note)
In the end, all cards work, but, the fiddling, endless.
And, I havn't done enough on-air testing yet.

It's one thing to get WSJT compiled, another to see it RXing and TXing in real life.

Jan 2016 JT65-HF for Linux

JT65-HF for Linux