Adventures in Linux & Ham Radio

I have been an avid Linux user since long before I got my ham radio license. Back in 1997 I started getting interested in Slackware Linux and ran it as my main desktop until eventually switching to Redhat, which was my daily driver for over a decade. From my first job as a mainframe systems programmer, which lead in a long and winding road into my current career as an identity and access management consultant, Linux has been a constant presence. I spent some years running MacOS as my main desktop and even dabbled in Windows 10 for a year, but I always return to Linux. Currently I run PopOS from System 76 as my primary desktop and Manjaro Linux on my ham radio PC.
Distribution Choice
Manjaro Linux is an odd choice for me. Given that most of the time these days I am in an Ubuntu/Debian based distribution my first instinct was to try and use Ubuntu, then Mint, even Fedora. All of them are fine but my criteria was as follows:
- Bleeding edge software package support – I like to run the latest and greatest in CRQLog, Fldigi, WSJT-X, etc and so this really pointed me toward a distribution that had a rolling release cycle as well as the ability to easily override the provided version. Arch’s aur repository gives me almost everything I need and once I figured out how to manage everything with the yay package manager, I was set.
- Easy audio interface support – this is key since I’m using my computer for everything from ft8, sstv, psk31, even mt63-2kl on the local VHF NBEMS net. I have multiple audio interfaces, and I want to be able to control the levels and individual app interaction with each of them. PulseAudio makes this easy, and while that is available on every distribution, I found Manjaro excelled out of the box at organizing all of this.
- Easy multi-monitor support – I am not convinced even two is enough. I want as much information available as possible so I’m constantly tweaking window locations, sizes, and such. Fedora for example was giving me trouble with two monitors so I did not spend much time trying to make it work.
- I had never really used an arch based Linux before and wanted to learn it. If I am being honest with myself, this probably had more to do with it than it should have.
Rig Control
I am controlling an FT-450D using hamlib‘s rigctld program. This is so that I can have multiple applications interacting with the radio, for example CQRLog, Fldigi, WSJT-X, even N1MM+ running in Wine. The latter led me to purchase a legitimate serial port card rather than the ubiquitous USB->RS323 cables out there. I have a few, all claim to be Prolific chipsets but there are so many clones out there it is hard to tell, and none of them really worked reliably. Additionally, it is much easier to configure wine (which N1MM+ must run under) to access a direct serial port.
My startup script is pretty simple:
#!/bin/bash
#
sleep 2
#
# Nothing to do if it is already running.
#
a=$(/bin/pidof rigctld)
if [ "$a" != "" ]; then
/bin/date >> /tmp/start.log
echo "Already running." >> /tmp/start.log
else
/bin/date >> /tmp/start.log
/usr/bin/rigctld -m 127 -r /dev/ttyS4 -t 4532 -s 38400 -C timeout=500 --set-conf=stop_bits=1 &
echo "Started." >> /tmp/start.log
fi
echo "-----------------------" >> /tmp/start.log
Basically the rigctld command specifies radio model 127 (FT-450) on ttyS4, TCP port 4532, a 500ms timeout, and stop bit setting to match the radio. I have found 38400 to be the best baud rate for my radio and computer by trial and error.
I have only two problems with this setup. N1MM+ does not support hamlib so I must shut down this daemon when running any contests (which is not a common thing for me). I also sometimes end up in a situation where when running split in WSJT-X it will not always switch back from VFO-B to VFO-A after transmitting. This is a minor issue that I suspect might be due to RF in the shack. I am running an end fed half wave antenna, so that comes with the territory.
Audio Interface
I have tried a couple things here. SignaLink, cheap USB sound card wired into the radio, and direct mic/line out connection from the computer’s sound card into the radio. All of them technically worked, but I have settled on the Signalink because (1) I already had it and (2) it is nice to have volume knobs. I do not use the VOX function at all, I prefer to use CAT PTT commands so delay is set all the way down but it is nice to be able to quickly drop my transmit audio if I am clipping and showing ALC without needing to dig into the PulseAudio sliders. I have used this interface both with my FT-450D on HF and my FTM-7250DR for VHF packet radio. For the latter I have built a simple A/B switch box for the mic and SignaLink so that I can switch between voice and data. In this configuration I am relying on VOX as the FTM-7250DR has no CAT control.
Logging
There are very few solid logging options on Linux, fortunately CQRLog is a very good option. It boasts tight rig integration via Hamlib, is simple and quick to navigate around (plenty of keyboard shortcuts), has lots of build in options like greyline mapping, cluster tracking, integration with wsjtx and fldigi, and ability to export to hrdlog, lotw, eqsl, clublog, and hamqth. It also supports importing QSL confirmations from eqsl and lotw.
Callbook lookup support exists for qrz but not exporting to qrz due to some longstanding feud between the authors of CQRLog and QRZ. Mildly annoying, but as qrz supports importing from lotw this is not really a problem.
I particularly enjoy (as a software developer) how well laid out the CQRLog database schema is and really appreciate the fact that the developers give you a built in SQL console to that database to quickly do your own queries and/or data corrections directly.
Digital Modes
WSJT-X
FT8 is a controversial topic in ham radio but I like it. Sure you could use wspr to test your antenna radiation but FT8 (and FT4) gives you actual contacts for doing so. Yes it is the ham radio equivalent of “ping” but it is popular, fun to collect new countries, and if you want to have a conversation there is always js8call. WSJT-X, more than anything, has taught me which bands work best at which time of day and what time of year. This is one application I will sometimes skip ahead of what is officially offered by Manjaro or the aur repositories to get the latest and greatest.
fldigi
I would like to say I use this primarily for psk31 but I have only used that rarely. I mostly use Fldigi to participate in CW contests where, while I am learning morse code, I am not NEARLY proficient enough to copy and send at 35+ WPM which seems to be the standard. So I use Fldigi to augment my own poor copying and a Winkey plugged into a USB port to send. CW purists are now closing this browser window in disgust but I swear I am working on getting there. When working NBEMS I will also use Flmsg from the software suite.
qsstv
I like slow scan TV. You never know what you are going to see, but in my experience it is mostly going to be classic muscle cars, pictures of radios, 70s/80s era clipart, and scandalously clad ladies (sears catalogue level) also with suspiciously 80s haircuts. I’m pretty sure SSTV peaked in the 80s and the ham radio community collectively decided to keep the images firmly rooted in this decade. qsstv is easy to set up in Linux for monitoring and transmitting, but setting up actual QSO templates is a bit more complicated and left as an exercise to the user with scant little documentation. I will probably do a blog post on just this in the future.
N1MM+
This is the ONLY Windows program I run on my ham computer. There is no open source equivalent so I run it in the wine emulator compatibility layer. Nothing fancy, no crossover office or special wrappers, just regular wine with winetricks running a 32bit windows 7 environment and not integration beyond rig control. I know it has nice winkey integration but we have already established I am using fldigi for this so the only real challenge is getting it running.
The authors of N1MM+ are constantly improving it, but this means it is a moving target as far as wine goes. Last month I needed to install dotnet 4.6 which was an ordeal itself just to be able to install latest update. Running in wine, it throws some harmless error messages on startup then runs perfectly for several hours before wine throws a memory leak error. I consider this my timer that I have been contesting too long and need a break.
I have installed TLF and plan to spend some time learning it to see if I can use it instead of N1MM+, but until I find the time to do so, I will continue keeping N1MM+ just barely running enough for me to contest with every couple months.
This is the series of commands I used to install the latest N1MM+ and related dependencies.
WINEPREFIX=~/.n1mm WINARCH=win32 wineboot --init
WINEPREFIX=~/.n1mm winetricks --force dotnet40 corefonts
WINEPREFIX=~/.n1mm winetricks win7
wget 'https://download.microsoft.com/download/C/3/A/C3A5200B-D33C-47E9-9D70-2F7C65DAAD94/NDP46-KB3045557-x86-x64-AllOS-ENU.exe'
WINEPREFIX=~/.n1mm wine ~/NDP46-KB3045557-x86-x64-AllOS-ENU.exe /q
WINEPREFIX=~/.n1mm WINEARCH=win32 wine Downloads/N1MM-Logger-FullInstaller-1.0.8954.exe
WINEPREFIX=~/.n1mm WINEARCH=win32 wine Downloads/N1MM-Logger-Update-1.0.8973.exe
Winlink
Honestly, this is what spurred me to write this blog post. I only got this working this morning and happily sent an email to my wife from my radio (she was slightly less impressed than I was). This has been a white whale for me for a long time, I was never able to even get this working when running Windows. I used two pieces of software, pat and ARDOPC and within an hour I had it working with rigcontrol and the webmail interface perfectly. Connecting easily to N3MLB‘s node in Perry County PA I was able to send and receive emails over the air. We did it everyone, we can close down the Internet now 🙂
This will also likely be the subject of a future blog post, but I am still learning the ins and outs of this. With the demise of winmor tnc I no longer need to worry about getting anything running in Windows/wine which greatly simplified this whole process.
Future Projects
I have a few plans I would like to implement. Beyond the TLF program I mentioned earlier and getting more acquainted with Winlink, I find myself developing some serious IC-7300 envy (or as more of a Yaesu guy, let us call it FTDX10 envy). Whatever you call it, I kinda see the benefit in having a panadapter with a waterfall display. Look, in general I am an old school tech guy, until last year my ONLY HF radio was a TS-820s with tubes. My guitar amp has tubes and several of my guitar pedals have tubes. The pre-amp I built for my record player has tubes. My youngest son’s ears even had tubes for a while (his audio was never what you would call “warm” however). But boy do I get tired of slowly turning the dial, hoping to catch a CQ call and if so, have the presence of mind to get the callsign (or hope he calls again). So to that end, let’s build a panadapter!
Raspberry Pi Pandapter
I have taken a Raspberry Pi 4 and slapped a 7″ touch screen on it. Connecting an RTL-SDL 3 to it gives me a poor man’s HF receiver when plugged into my antenna. Running gqrx turns the Raspberry Pi into a bandscope (and incidentally, a space heater), running the gqrx-hamlib-gui plugin lets me connect to hamlib on my ham radio PC and pull the frequency so I can now control gqrx from my radio. However, I still need to flip back and forth with my antenna switch to actually use the radio. Bandscope or transceiver, only one at a time.
So my next step is to install an IF tap into the FT-450D which will connect directly to the RTL-SDL and give me a real time bandscope without worrying about switching antennas (or splitting the signal and building in a cutoff when transmitting so as to not destroy the RTL-SDR. I have a hupRF board on its way as I type to install in the radio to give me the IF tap. Once it arrives, warranties will be voided and bands will be displayed visually.
Bandscope in action Raspberry Pi
So this all basically scratches the surface of what Linux software I use in the shack. I hope to have more in depth looks at some of this including my upcoming projects shortly.
73
Filed under: HF,Linux,Raspberry Pi,Software - @ February 24, 2021 3:26 pm
Tags: cqrlog, fldigi, hf, linux, manjaro, n1mm+, raspberry pi, sstv, winlink, wsjtx
I am planning to install Manjaro on a Dell e7470 laptop. I remember spending days and days trying to figure out how to get wsjt-x to work on Ubuntu 18.04. It seemed like I was forced to upgrade to 20.04 in order to get it to work and then ONLY by compiling the source code, something I have never done before. I had to install some MASSIVE thing called Qt5 or some such and I copied and pasted MANY cryptic commands from a webpage and, praise Yah, it actually worked!!
I just got a Dell e7470 to replace an aging laptop that I am using now (Asus K52F running Ubuntu 20.04). I am pretty new to Linux but want to try Manjaro. But if it is a nightmare to get wsjt-x and fldigi and such to work on it, I’ll have to consider something else.
But it sounds like you were able to do it so I am wondering if you could describe how you installed these packages on Manjaro for a newbie like me?
Thanks so Much!!
73 de W5ZAC
I’m probably not going to be a lot of help, I basically compiled everything from source to get it to work. It is much easier to get working on something like Ubuntu (I prefer a distro called Pop_OS which is similar)
BTW, I just tried to install Peppermint on it from a USB stick and it said it could not find a disk to install it on. It found something that was 23GB in size but it has a 250GB SSD in it so I’m not sure what Peppermint found.
Do I have to boot up in Win10 and format the drive first and then try to install??
It is possible it was only seeing a windows recovery partition. You may need to remove all partitions on the drive first. Most distributions give you an option to do this at install (or go into an advanced mode where they turn you loose with gparted to do that) but I’ve never installed Peppermint so I’m not sure how that one handles it.
Hello good soul,
I wonder if you could tell me how to make the FTDX10 recognized on the USB port in linux.
I see a device in the device list but I presume I have somehow to install the right driver for the CAT interface.
I am relatively new to UNIX so, steep learning curve.
A hint int the right direction would be greatly appreciated already.
Thank you in advance
Bernd
VA2VFF