I’ve long been interested in the physics of RF, but never had a chance to play with it until recently. This post covers my experiments with the propagation of 7MHz signals; the equipment, the setup, the code, the results and the science.
The Setup
My setup is at home, where I’ve got an ancient HF radio (ICOM 738), plugged in to a 20m dipole antenna on my roof and a laptop doing WSPR with the wsjt-x program for this experiment.
If you’re interested in more detail of the setup … otherwise skip this part. The antenna is borrowed from Wicus (thanks dude!) and consists of two 10m wires coming into a balun which connects to the coax (RG58) feed line. The balun effectively filters out unwanted signals that are picked up by the coax sheath (I think, still trying to grok these fully). It’s jury-rigged to what I had in the house at the time, a piece of too-thin PVC cable tied to a telescopic painter’s pole. The radio is too old to do digital modes (which WSPR is), so I’ve got a homebrew SignalLink-like device which routes sound out of the radio to a USB soundcard for input (thanks ZS6SKY). For output, wsjt-x converts the digital signal to audio which is sent via the microphone input of the radio (a proprietary 8-pin ICOM plug). There’s also a serial cable that triggers the push-to-talk (PTT) pin of the microphone input (by pulling RTS down to GND).
This is focused on 7Mhz signals, because I had to start somewhere, it’s where my antenna has the lowest SWR ratio (1:1) (aka signals are efficiently radiated via the antenna, and nothing is reflected back down again) and I need another USB to RS232 serial converter to auto-control my rig to switch frequencies while also triggering the microphone to transmit.
I’m also using the WSPR digital mode for three reasons. Firstly, I’m based in a suburban area, which means the noise floor is *terrible* (using the S-measure of signal strength my noise is sitting at a 9 with the preamp on and a 6 with it off, which is terribad!). This means I can barely hear traditional analog voice contacts through the noise. Secondly, digital modes are much less susceptible to RFI, and can encode the info more efficiently on narrower bandwidths which a DSP can pick out. Lastly, WSPR is designed to work even in really poor signal conditions.
My setup does two things. First, it monitors for signals from others and uploads these “spots” to WSPRnet. These are done in two minute windows (about 110s). WSPR is a very narrow digital mode (about 6Hz), so the radio’s output can include several at once and the software can pick out even very weak signals (that’s the point of WSPR).
Then my setup broadcasts a signal every six minutes or so. I vary the power of the transmitted signals between 2W and 10W (as I wanted to see how power affects things) but the default is 5W. Other stations monitoring for WSPR signals will report when they see me.
The WSPR signal includes some very basic information:
- Your callsign (I’m ZS6HAK)
- Your location as a maidenhead grid location
- Your transmit power level
These get encoded into 50bits; 28 bits for callsign, 15 for locator, 7 for power level (I’m using a 6 digit grid locator so it’s more complex). I’m still learning what the signal looks like exactly. You’ll notice that it’s completely spoofable, but at the moment they just rely on an honour system not to pollute the data.
The Results
Before running this, I had tried a couple of voice contacts and hadn’t gotten much farther than PMB (about 400km away). I could sometimes barely hear a friend of mine from Cape Town (about 2000km away) thanks to the noise issue I spoke about, so I didn’t think I’d get much further than a few hundred kilometers.
When I first started running this, one afternoon two weekends ago, I thought I had messed something up. I was spotting other local ZA transmission (even one in Cape Town!) but nobody was spotting me. Then, in the early evening I suddenly got spotted by Russia and large parts of Europe (furthest contact was over 9000km). When I woke up the next morning, I saw that I had made contacts as far away as Wisconsin America (over 14 000km away), and by the next evening I managed by furthest contact at 16 941km in California!
Looking at lines of text is pretty dry. However, WSPRnet gives you a pretty map where you can see who’s seen your signal and whose signals you’ve seen. What you’ll notice is that most of the contacts (in the 40m band we’re looking at) were made between two night-side stations. Here are some example pictures:
However, I thought it would be really cool to visualise these changing over time in a video, so you could see how the day/night change affect things. I figured it would be a couple lines of code and a few minutes of work. Instead it took me about 6 hours, 231 lines of code and python and JavaScript to get it done over a few nights. The code is here if you’d like. Here’s a video of the last two days of activity from my stations, neatly showing how day/night affects the propagation.
But Why?
This three pager from the American Amateur Radio League explains it better than most other references I’ve seen. Essentially, at night, the ionosphere thins, and starts reflecting 7MHz signals back to earth. This reflection can be anywhere between 2000–4000km (depending on the frequency of the signal and the state of the ionosphere at the time). The 17000km contacts are due to multiple bounces where it gets reflects back to earth, then bounces back to the ionosphere multiple times. This works particularly well over the Atlantic because the sea reflects better than say, the Sahara.