We seek to understand and document all radio transmissions, legal and otherwise, as part of the radio listening hobby. We do not encourage any radio operations contrary to regulations. Always consult with the appropriate authorities if you have questions concerning what is permissible in your locale.

Author Topic: How many DGPS stations can you receive at the same time?  (Read 3169 times)

Offline ChrisSmolinski

  • Administrator
  • Marconi Class DXer
  • *****
  • Posts: 31106
  • Westminster, MD USA
    • View Profile
    • Black Cat Systems
How many DGPS stations can you receive at the same time?
« on: August 20, 2016, 1446 UTC »
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.
 
Chris Smolinski
Westminster, MD
eQSLs appreciated! csmolinski@blackcatsystems.com
netSDR / AFE822x / AirSpy HF+ / KiwiSDR / 900 ft Horz skyloop / 500 ft NE beverage / 250 ft V Beam / 58 ft T2FD / 120 ft T2FD / 400 ft south beverage / 43m, 20m, 10m  dipoles / Crossed Parallel Loop / Discone in a tree

Offline skeezix

  • Global Moderator
  • Marconi Class DXer
  • *****
  • Posts: 5545
  • Minneapolis, MN
  • What does 'RNO stand for?
    • View Profile
Re: How many DGPS stations can you receive at the same time?
« Reply #1 on: August 20, 2016, 1635 UTC »
That is seriously cool.

I'd be interested in trying that when its ready. Can it read I/Q files made by Perseus or Studio1?

As far as the messages go, do they transmit time? If so, would be interesting to correlate the time they broadcast with their relative position in the file. And along with their position, calculate the propagation delay. Or something.
Minneapolis, MN

Offline GTBecker

  • Newbie
  • *
  • Posts: 1
    • View Profile
    • Email
Re: How many DGPS stations can you receive at the same time?
« Reply #2 on: August 20, 2016, 2056 UTC »
> ... do [DGPS] messages transmit time?

Each DGPS message carries a two-word header (each 30 bits) that contains a 14-bit field called the Modified Z-Count.  The MZC is the time of the beginning of the next word, but its resolution is 0.6 seconds and the count spans only one hour.

Several years ago I asked both Leica and Trimble (then principal DGPS equipment suppliers) if the data sent to the DGPS transmitter modulator was synchronized to a timebase (i.e. each bit was aligned to an accurate clock).  The answer then was no.

Further, the propagation path lengths change between daytime groundwave and nighttime skywave of an unknown number of hops.

My guess is that DGPS signal relative time-of-arrival doesn't provide much useful information.


Tom
Cape Coral

Offline skeezix

  • Global Moderator
  • Marconi Class DXer
  • *****
  • Posts: 5545
  • Minneapolis, MN
  • What does 'RNO stand for?
    • View Profile
Re: How many DGPS stations can you receive at the same time?
« Reply #3 on: August 20, 2016, 2112 UTC »
Thanks for the explanation. That's too bad. Guess I'll continue to wait for eLORAN.

Minneapolis, MN

Offline ChrisSmolinski

  • Administrator
  • Marconi Class DXer
  • *****
  • Posts: 31106
  • Westminster, MD USA
    • View Profile
    • Black Cat Systems
Re: How many DGPS stations can you receive at the same time?
« Reply #4 on: August 24, 2016, 1810 UTC »
I've released version 0.3.0 of mySdrPlayback, which includes DGPS decoding, plus a few misc bug fixes and improvements: http://www.blackcatsystems.com/software/sdr_iq_recording_playback_program.html
Chris Smolinski
Westminster, MD
eQSLs appreciated! csmolinski@blackcatsystems.com
netSDR / AFE822x / AirSpy HF+ / KiwiSDR / 900 ft Horz skyloop / 500 ft NE beverage / 250 ft V Beam / 58 ft T2FD / 120 ft T2FD / 400 ft south beverage / 43m, 20m, 10m  dipoles / Crossed Parallel Loop / Discone in a tree