Summer isn't a great time for long wave listening. But it is a good time to get ready for the fall and winter DX season, with construction projects. Not just new antennas, but also new software. I've spent some time this summer working on some apps for decoding DGPS (Differential Global Positioning System) transmitters located in the 285 to 325 kHz band. These stations transmit corrections to GPS signals allowing users to improve accuracy. They also make great DX targets, as each station transmits an ID. The transmissions are sent via FSK at either 100 or 200 baud, and contentiously operate.
I've written several decoders for DGPS, it is built into my MultiMode app for Mac OS X (which decodes a number of other modes as well, like CW, RTTY, PSK31, SSTV, FAX, etc):
http://www.blackcatsystems.com/software/cw-rtty-sstv-fax-psk31-packet-decoding-software.html I also have dedicated apps for the iPhone/iPad:
http://www.blackcatsystems.com/ipad/iPad_iPhone_DGPS_Decoder_App.html and Android:
http://www.blackcatsystems.com/droid/dgps.html the latter is also available on the Amazon App store for Kindle Fire devices:
https://www.amazon.com/Black-Cat-Systems-DGPS-Decoder/dp/B01KBHX21A/I realized that an SDR can record the entire DGPS band and save it to an I/Q recording file, which could then be later analyzed. If you record a 50 kHz bandwidth, centered at 305 kHz, you record 280-330 kHz, which nicely encompasses the entire DGPS band.
I've been working on an app to demodulate and decode multiple DGPS transmissions. It is presently an additional window in the mySdrPlayback app for Mac OS X I wrote to analyze and play back SDR recording files:
http://www.blackcatsystems.com/software/sdr_iq_recording_playback_program.html (note that it is
NOT currently in the release version, so don't download a copy yet if you want to try decoding DGPS transmissions, I hope to get a beta out shortly).
Here is what the software does:
It creates 82 separate demodulators and DGPS decoders. For each of the 41 DGPS frequencies, two sets are created, one for 100 baud and one for 200 baud. This allows different IF filters for each, so they can be optimized.
The recorded I/Q data from the file is read and fed through each demodulator and decoder, in parallel.
Each decoder slides the demodulated audio through a detector which looks for the preamble byte that marks the start of a DGPS message. It does this, rather than just trying to generate bits at this point, to improve detection under noisy conditions, where it is uncertain where bit edges may be. This is computationally more intensive, but helps with weak signals. When a preamble is found, then the entire 30 bit message is demodulated, and the parity (checksum) is computed and compared to what was sent. If it matches, then the message is further checked to weed out some false decodes:
First, the station ID is used to check and see what station was received, and is used to look up the actual frequency this station transmits on. If it does not match the received frequency, the message is discarded.
Second, the baud rate of the message must match the baud rate that beacon uses.
Third, only message types 6 and 9 are accepted, others are discarded. These are the most common message types sent, and I found that decodes of other message types were usually bogus.
Even doing this, there are still some obviously bogus decodes (I think they're bogus, it would be be great to receive India on long wave over a mostly daytime path, but I don't think that is likely to happen). In general, if there is just one decode from a given station, I assume it was most likely due to a corrupted message with so many bit errors that it was not caught by the parity, or by the other checks the software performs. The more decodes of a given station, the more likely I believe it is that the station was actually received.
If a message is accepted as valid, then the timestamp of reception is added to an array for that particular station. That allows me to keep track of the number of decodes of each station. I am adding the ability to view a list of all of the reception times for messages for a particular station. I have noticed from monitoring these stations in real time that you will usually get several decodes in a row for a station as it fades in, this makes sense, it is much like listening to any DX station, propagation favors reception for a period of time, before the station fades out again. If there are several decodes of a station in a row, then I believe it is more likely that station was actually received, vs just being a series of corrupted messages that have exactly the right bit errors to generate a false decode.
Below is a screenshot of the app's window, after processing a recording file from last night that was almost 2 1/2 hrs long, starting at 0531 UTC, or 1:31 AM local time here on the east coast of the US. The first column shows the number of messages decoded for that station. Following that are the three IDs for that station, then the frequency, baud rate, station location as city and country as well as latitude and longitude, and then the calculated distance and bearing to that station from my location. In case you're interested, that file took 17 minutes to process on my 4 GHz i7 quad core iMac.
Again, many of the decodes are suspect, especially those with just 1 message. But others are more interesting. 60 and 73 messages from the stations in Panama, I think that means they really were received. 301 Khz is dominated by the Annapolis MD station. I find the decodes from the stations in TX and GA to be rather dubious. Likewise the two other stations on 286 kHz, dominated by Sandy Hook. There are a few frequencies with no decodes. Some of them have a constant carrier from a NDB station.
Only one decode form Hawk Run PA on 291 kHz is curious, I used to receive that station very well. It is possible that it is off the air. I noticed the station from Moriches NY going on and off the air last night, perhaps they were doing some work on the transmitter. No decodes from NM on that frequency, but my 200 ft antenna runs to the NW, so it would tend to be less sensitive to the west coast, which might explain the general lack of stations from there. I hope to lengthen the antenna, which might improve reception overall.
I'm very interested in any comments from others about this project, including ideas for additions and improvements, and in particular ways to further reject corrupted messages. I hope to have a public version of the app out soon, however it will be Mac only.