Debian as a Ham Radio Station Laptop
Categories: Hacking
This post is part of [tj]’s blog more in June challenge. You should join us and take part - just make 4 posts in June!
As part of the general move to do more radio / do radio in a field, I’ve been doing radio in a field instead of preparing for it.
This laptop was first set up and somewhat extensively tested at home, and then used in the field to prove it worked.
Hardware
I’m using an Acer Chromebook R11 converted to run Linux with a coreboot UEFI.
For audio I have a cheap USB audio interface from Ebay that’s been through the wars. It’s currently held together with electrical tape and hope.
OS
I am, true to form, running Debian Testing - I take an active part in working on the Debian Hamradio packages, so dogfooding it a good thing to do.
We have convenient metapackages to install everything quickly here - you can apt install
these on Ubuntu and Raspberry Pi OS too, but they are a little behind what’s on offer in Debian.
All of the applications I use below are packaged for Debian and can be installed with apt, which is really cool!
Rig Control
Control of the Yaesu FT-891 is achieved using CAT over the inbuilt USB Serial port.
On Debian, the radio enumerates as 2 devices - /dev/ttyUSB0
, for control and /dev/ttyUSB1
which is… useless as far as I can see.
Both are SILabs CP210x I think. It spits out plenty of errors in to dmesg
but it’s mostly stable enough.
I use FLRig as a single point of control for all other applications. It uses Hamlib under the surface to handle communication with the radio, and presents all the knobs, whistles and options I could want to fiddle with the radio.
FLRig is helpful as everything else can interface with it - it’s in hamlib as a radio, I believe.
Data Modes
WSJT-X
I’ve been using WSJT-X to do FT-8 and FT-4 communication.
FT-8 is nice, it gives short bursts of data, allows for QSOs over really long distances in unfavourable conditions and has been quite fun to use. QSOs are simple - you exchange callsigns & gridsquares, signal reports in dB (I assume dB relative to carrier or normalised audio) and you move on. It also gives maps like this on PSKReporter:
Audio has been a huge frustration here - Pulseaudio and this program are friends, but only under some circumstances, and debugging can waste an hour of time trying different configurations to get it working.
I have FLRig set up as my “Radio” in WSJT-X, and that manages control of the radio for me.
I have packaged WSJT-X for Debian in the past - it can be a little finnicky to use. The developer ships it with the latest snapshot of Hamlib, which is now quite far ahead the most recent release (3.3 at time of writing), and they are actively developing to the HEAD. It means I get some error messages on Debian sometimes - this is something to watch out for when debugging issues. The Debian team does now ship snapshots of Hamlib to step around this problem.
JS8Call
JS8Call takes the ideas and strengths of the FT-8 mode and extends them into a mode of communication that allows more for keyboard-keybaord communication. This allows for a more personal, interesting contact. It’s also been extended to allow for 1-many and many-1 messages and signal reports, and there are now interconnects with APRS for grid reports and messages.
JS8Call Utilities extends the tool to better support GPS to APRS, or I think winlink email. I’ve seen people do HF Mobile APRS on 40m with this, it’s a really cool suite.
I have FLRig set up as my “Radio” in JS8Call, and that manages control of the radio for me.
FLDigi
FLDigi is a piece of software that’s been in my toolbox for years. It allows for a range of keyboard-keyboard data modes - RTTY and PSK31/63 are the most common, but I’ve used it for Feld Hell in the past, which is pretty cool!
FLDigi talks natively to FLRig!
QSSTV
QSSTV has so far been used to receive video on 20m - 14.230MHz. It works perfectly, but I’ve not yet got together a collection of pictures to send to other people!
APRS
I’ve done some APRS on 10m using Direwolf and Xastir -
Direwolf hasn’t yet gone through FLRig, but I think that’s a me problem.
My Direwolf config file looks like:
ACHANNELS 1
CHANNEL 0
MODEM 300 7@30
PTT RIG 136 /dev/ttyUSB0
AGWPORT 8000
KISSPORT 8001
Audio is being quietly routed through pulseaudio and it works great. Rig Control is going direct from direwolf, but I think I route it through FLRig as PTT RIG 4
.
The key line here is MODEM 300 7@30
spawns 7 different pairs of listeners, at 30Hz spacings - 1600 & 1800 are pair 4, then 3 are above and 3 below. This allows for slight detuning of the radio, or wiggles in the atmosphere.
My dial frequency on the radio is 10.147600 MHz, as the target tones for HF APRS in Europe are 10.149200 MHz and 10.149400 MHz - this is simply 1600&1800Hz added to 10.1476 MHz.
I’ve received stations from Greece and Italy so far, but not been heard on the continent sadly… Once I get back out with the backpack I can try again on a better antenna in a quieter area.
Logging
I’ve experimented with Logging for years - in the past I’ve used pyQSO for simplicity, but these days I want a little bit more from my logging software.
Recently, I’ve been using cqrlog - it has a remote interface with wsjtx and fldigi to log the contacts I’m making in real time. I can also type a callsign and see a history of communication with them - this is good for voice contacts, as I can remember names and details using the notes section.
Frustrations
Pulseaudio, and audio routing on linux in general has been a huge frustration on this. When it works, it’s perfectly fine, but when it doesn’t work it’s infuriating.
Sometimes X crashes. So far this is a combination of LXQT, WSJT-X and cqrlog. I’ve not yet debugged the issue, but I think moving back to dwm has solved it so far.
FLRig is fine, but it’s not hugely resilient. When RF gets back down my coax, sometimes the USB link with the radio resets, and FLRig panics along with everything connected to it. I’m not sure how to solve this, but it’s something I’ve bounced against a few times.
The intention was to run this all on a Raspberry Pi and remote desktop to it. I don’t think it’s all stable enough for me to do that confidently yet. Maybe as I use it more, debug my issues and submit them as bugs things will get better. The other issue I had with Raspberry Pi OS is that my radio is somewhat new, and the support in Raspbian stable isn’t good compared to Testing. I don’t know whether to wait for a new release, roll my own or dist-upgrade to Testing.
These things aside, it’s pretty fun to use and works well enough for the moment!
Tags: Radio Radio In a Field Linux Debian