Before starting the project, I wanted to sketch out some thoughts on what success would look like. Here are some facets I think are important, in no particular order.
- Easily replicated. No proprietary or paid software. No expensive or exotic hardware.
- FT8. This one is a no-brainer: the mode is taking the ham world by storm, and it basically begs to be automated more than any other mode I know of.
- Low power. I think I will limit power to 25 watts at first so as to minimize any chance of disturbing others, and to simulate something closer to a sane power budget that might be typical of an off-the-grid installation.
- Baby steps: walk before running. One thing at a time, making incremental progress. I think getting the QSO automation correct and solid needs to come first. Other aspects, like the autonomous power supply, satellite connection, and so on can come later.
The Raspberry Pi is an obvious choice for automation control. The current model is a bit under powered, as I have discussed before, but its ubiquity is an unbeatable asset going forward. Also, the newer revisions look like they might have a bit more “oomph” and those are due out soon I think, so it should be an easy upgrade. There are other boards with more attractive specs, but none of them have anywhere close to the support or fan base that the Pi does.
I am aware there are some automation-enhanced forks to WSJT-X out there, but they seem to be Windows oriented, and I am looking to run Raspbian. Additionally, I want as few changes to the WSJT-X code base as possible. Just enough, actually, to permit a Python script to control the app. Why? I think Python will be easier for people to follow and adapt, it’s cross-platform, and it’s good to separate the automation logic from the modem software anyway.
First steps, then, will be to simply get a working build of WSJT-X, from source, on a Raspberry Pi running the latest Raspbian. After that, I need to look into how it might be controlled from a Python script. If anyone is aware of prior work, please let me know. I already use the UDP service to receive data from WSJT-X and parse it in Python, but I’m not aware of any method to send control data back.