Over the past nine months or so I’ve been working on a project that I’ve called Bald Yak. If you’re unfamiliar, the Bald Yak project aims to create a modular, bidirectional and distributed signal processing and control system that leverages GNU Radio.
One of the, admittedly many, challenges I’ve set myself is getting data from a radio receiver into GNU Radio across the network, preferably the Internet. Today I can report a small step in the right direction and frankly I can’t contain my excitement.
Now, I need to acknowledge that I’m geeking out here. It’s hard to contain excitement when you find something that seems to speak your language. It also means that I realise that I run the very real risk that I’m going to lose you before you get to why this is a milestone, so let’s put that up front before I explain why.
To whet your appetite, yes, you can access a KiwiSDR across the Internet and record raw data from it and control the process externally. This is a very big chunk of the problem I’ve been working on and turns out to actually be live and ready to play with.
Fair warning this is technical, there are moving parts. I’ll do my best to explain, but if I miss any, feel free to get in touch, you have my address, cq@vk6flab.com.
In passing, recently I made mention of the KiwiSDR community and tools that could potentially allow access to a remote receiver, although at the time I pointed out that I wasn’t sure if the tools I found could access remote receivers, or if they were intended to access hardware locally.
KiwiSDR is one of a group of so-called Web SDR tools. Essentially a website where you can access a remote receiver and tune to the radio signals it can hear. SDR, or software defined radio, is a way to convert incoming antenna signals into the digital realm where computers, and in this case, the Internet, live.
Turns out that a tool called “KiwiClient” takes a hostname and a port as a parameter, so much so that the in-built help shows this as the first example. What this means is that you can essentially run a copy of KiwiClient on your own computer and use it to access a KiwiSDR across the Internet.
The first commit was on the 8th of May 2017 and thanks to the efforts of about 14 developers, KiwiClient is the software equivalent of a KiwiSDR multi-tool. This is exciting all by itself, but this gets better.
You can specify more than one server. This means that you can record two, or more, signals from across the globe, and capture these simultaneously.
You can set the decode mode, which I immediately used to tune to a local broadcast station and recorded it from two different receivers across the Internet, allowing me to not only compare the difference in delay between the signals, but also the reception differences. It’s fascinating to hear the same station from two receivers, one in each ear, all manner of different propagation artefacts become apparent.
Then I got a little more adventurous and discovered that one of the supported modes is I/Q, which means that I can, and did, download raw sample data across the network, which can then be used within GNU Radio. This is important because the aim for Bald Yak is to process the signals separately from the receiver.
It gets better.
There is a radio fax receiver that automatically saves pages as they are processed, something that you could use to access weather fax services.
Then there’s a tool you can link to “WSJT-X”, which you might recall is an application that can decode weak signals. Not only that, the tool supports “fldigi”, a digital radio mode application. Both those applications can control the radio using Hamlib rigctl, which means that KiwiClient supports changing frequencies of the receiver, across the Internet, though truth be told, I haven’t yet tested that … my available computing resources are still strictly limited.
Oh, the software also has the ability to record waterfalls, do scanning, and provides tools to analyse waterfalls in jupyter notebooks.
Getting this to work wasn’t too hard. The instructions on the KiwiClient GitHub repository are pretty good. I’ve made an initial Dockerfile on my own GitHub repository to download and install the software. It’s unimaginatively called “kiwiclient-on-docker”. I’ve yet to discover a good way to add or update Dockerfile functionality to existing projects, feel free to make suggestions.
Now I absolutely understand that this level of excitement might not universally translate and that’s fine. It’s yet another example of how rich and diverse our amateur radio community really is.
What gets your excitement levels going?
I’m Onno VK6FLAB