/ gps

GPS module measurements, part 3


To pick up from part 2: I wanted to test one of u-blox's TCXO based modules to see if that improves getting a signal.

I'm also comparing these modules to each other to see how closely they agree on the current time. Expectations for GPS modules are to agree around +/- 20 nanoseconds, but that isn't a guarantee.

TCXO based modules!

Two GPS modules

I bought two u-blox TCXO based modules: a NEO-7N and a NEO-M8N. The main difference between the two is the 8 series adds support for Galileo and BeiDou satellites. They both support the GPS and GLONASS satellites.

I bought them off of two random vendors shipped from China. I suspect the NEO-7N I got was counterfit because I couldn't update its firmware. I peeled back the labels to see if the RF shields matched what other people said of their counterfit modules, and my NEO-7N did match their description. The NEO-M8N looks legit to me, and I was able to update its firmware.

Comparing the 7N with the M8N

Despite all this, these two modules agreed with each other pretty well:

GPS time difference

This is slightly higher than I would have expected, so I compared the time offset data to a few different things. Altitude difference had an amazingly large correlation with the time offset:

Time difference compared to Altitude difference

This is probably from two factors: I'm using an indoor antenna - an outdoor one would have a better signal, and I'm using standard GPS modules instead of a timing one.

If I take the altitude difference (in light-nanoseconds) and remove it from the time difference, I get this graph:

Time difference with Altitude difference removed

Which is much better, and pretty close to my measurement limit.

Extra graph

This is the reported frequency of the GPS module's TCXO:

GPS modules TCXO

I shifted the NEO-7N's line down by 457ppb to make it easier to compare the two. The M8N's frequency was much more stable, but the 7N was pretty decent even if it was counterfit.

Summary of M8N vs 7N

The M8N also had better satellite reception, on average it saw 1 more signal than the 7N. Both of them reported a full 3D navigation lock over this entire time period, so it wasn't a large difference. Because the M8N supports more satellite systems, has a better TCXO, and had slightly better reception, I'd recommend it over the 7N.

Other GPS modules

I also compared a few other GPS modules:

Navspark-GL vs Adafruit GPS (MTK MT3339)


NEO-M8N vs Adafruit GPS


All of these modules also had an altitude based additional error. Comparing the altitude difference with the time difference with the M8N/Adafruit pair:

Time difference compared to Altitude difference

And comparing the time difference with the altitude difference removed:

Time difference with Altitude difference removed

To show that it isn't just one of the modules having large changes in altitude, here's a comparison of both of the GPS modules against what I believe is the "true altitude".

Altitude differences

Final words

I've learned I need to change my expectation of these modules being within +/- 20ns of each other! However, GPS modules being within +/-100ns of each other seems like a reasonable expectation that would be true most of the time.