Frequency drifting with FlightAware ProStick and OGN

We’re using a FlightAware ProStick with a Raspberry Pi 4 to track gliders at our club. It’s running software provided by OGN (Open GliderNetwork).

After being powered on, the system works and glider data is sent to OGN for 30-60 mins. I’ve been tracking it and the OGN receiver software is helpfully reporting some kind of “frequency offset” in the signals. That “frequency offset” is steadily increasing, and when that offset exceeds 20 kHz we stop getting glider data.

Interestingly, the “frequency offset” jumps at specific times. It’s not gradual. Today we ran a test and:

  • From 12:36pm, it was around -11 to -9 kHz.
  • From 12:48pm, it was around 0 to 2 kHz.
  • From 12:50pm, it was around 8 to 11 kHz.
  • By 1:07pm, it was just a little less than 20kHz.
  • From 1:07 until 1:24pm there was no data so we rebooted it.
  • From 1:24pm, we got data again and it was -11 kHz again.
  • From 1:29pm, it was back around 0 kHz.
  • From 1:35pm, it was around 8 to 11 kHz.
  • By 1:57pm, it was just a little less than 20kHz.From 1:57pm until 2:36pm there was no data.
  • etc.

Is this indicative of a fault in the FlightAware ProStick? Should we just be buying a new one? Is it something to do with the lack of TCXO?

1 Like

The prosticks do have a TCXO, and a 20kHz drift on a presumably ~800MHz signal is around 25ppm which is a lot more than the TCXO should see (for that matter, it’s more change than I’d expect from an uncompensated crystal, unless you’ve seeing large temperature changes). It’s suspicious that it immediately fixes itself if you reboot - if it’s temperature-related, I would not expect the crystal to cool down so fast that it reverses half an hour of heating.

I would suggest measuring drift via some other mechanism (e.g. maybe use kalibrate, or tune your spectrum-analyzer-of-choice to a narrowband signal and see if the signal’s frequency drifts over time) to see whether it’s really a hardware problem, or a software problem.

(note that dropped USB data can look something like a frequency shift, so it could possibly be that)

1 Like

Thanks for the response! This is really helping.

For what it’s worth, this ProStick has spent at least one winter outside in Alberta, so it has been subjected to -40c. The weather nowadays is mild, but maybe it’s internally damaged. If so, that’s obviously on us. :slight_smile: I’m hoping this is just user/config error though.

Your mention of ppm made me look at my OGN logs again, and I see some RF diagnostic reports that mention ppm every 5 minutes. This data may be easier to look at because it’s not dependent on having aircraft in the air.

Each report is a line like RF:-2+0.0ppm/+18.7dB. The -2 is a correction value which we calculated using a tool called gsm_scan. The ppm is what I’m focusing on because it increases up to around 48.3ppm if we leave the system running for hours. The point in the logs where the ppm exceeds roughly 35 seems to correlate with when we lose our glider signals.

Below is a log of those ppm values, with timestamps in local timezone, on a ~20c day. Each time it resets to 0 is because someone power-cycled the system.

Would this maybe be indicative of a hardware fault in the ProStick, or USB packet loss as you mentioned? Or should I maybe just re-configure the system by putting a correction of “-48” instead of “-2”?

Thanks again for your help!

Timestamp	PPM
12:39:07	0
12:44:07	0
12:49:07	12.1
12:54:07	21.1
12:59:07	27.9
13:04:07	32.9
13:09:07	39.6
13:14:07	43.4
13:19:07	43.4
13:27:03	0
13:32:03	12.1
13:37:03	21.1
13:42:03	27.9
13:47:03	33
13:52:03	36.8
13:57:03	39.6
14:02:03	43.3
14:07:03	44.5
14:12:03	45.4
14:17:03	45.4
14:22:03	46.6
14:27:03	47
14:32:03	47.3
14:38:28	0
14:43:28	12
14:48:28	12
14:53:28	27.8
14:58:28	32.7
15:03:28	36.6
15:08:28	36.6
15:13:28	41.6
15:18:28	41.6
15:24:54	0
15:29:54	12
15:34:54	12
15:39:54	12
15:44:54	12
15:49:54	21
15:54:54	27.7
15:59:54	32.7
16:04:54	32.7
16:09:54	32.7
16:14:54	36.4
16:19:54	36.4
16:24:54	36.4
16:29:54	36.4
16:38:31	0
16:43:31	12
16:48:31	12
16:53:31	12
16:58:31	20.9
17:04:59	0
1 Like

Digging around the OGN source code, it appears that RF:-2+37ppm would be parsed as:

rf_correction_manual    = the number we configured = -2
rf_correction_automatic = the number that changes  = +37

So for some reason, the system keeps ‘correcting’ the frequency, and converges on a combined correction of around 40.

1 Like

-2 ppm is more like what I’d expect from the TCXO (they’re factory-calibrated to close to 0).

The OGN code is a bit opaque, but it appears to be periodically monitoring for GSM as a frequency reference (much as gsm_scan presumably does) and adjusting the PPM correction based on that. I’d guess that something is going wrong with this process and it’s getting pulled off-frequency by something that’s not actually GSM, until eventually it’s so far off frequency that it can no longer hear the actual signal you want to hear.

Maybe there is some way to disable the live GSM-scanning behaviour? (I didn’t spend enough time in the code to track down if there was a config option for that)

2 Likes
    double Freq  =     0; config_lookup_float_or_int(Config, "RF.GSM.CenterFreq",   &Freq);    GSM_CenterFreq=(int)floor(Freq*1e6+0.5);
RF.GSM.CenterFreq = 0

In some config should disable GSM frequency correction.

2 Likes

Perfect. I found this line:

which confirms that if GSM_CenterFreq is zero or less then it will not try to auto-calibrate. I’ll fix that on our setup as soon as I can.

Thank you!

1 Like