Review of the Uputronics GPS/RTC Raspberry Pi Expansion Board

Hi everyone,

Disclaimer: this is a review of a free sample I got sent by Uputronics.

I recently spotted on Twitter that Uputronics had launched a GPS/RTS Raspberry Pi Expansion Board, and that they were looking for worthy projects to test it. I thought our Galileo/GPS/BeiDou/GLONASS monitoring project might be worthy and Uputronics agreed.

Relevant for our purposes, this is an actual ‘timing receiver’. Any GNSS chip will get you a location, but some of them go the extra mile to also deliver a very stable clock signal.

The expansion board contains an u-blox M8 device, which also enables access to raw GNSS messages. This in turn allows projects like us to use such a device to do orbit determinations and quality measurements.

Although many u-blox devices can be had cheaply, the actual timing variants are a lot harder to source. £41.99 is a pretty good deal. The u-blox timing receivers also grant access to the raw ‘correlator’ data, which enables you to get sub-nanosecond level resolution on satellite orbits and do Doppler measurements. It is quite hot. Be the envy of other major space agencies!

The board does not come with an antenna. I tried my high-ish end super nice dual frequency antenna, and that worked. I also tried a cheap one, that also went reasonably well, so it is not picky. The nicer antenna did however deliver better reception, so don’t skimp on the RF part.

The expansion board comes with all the screws, standoffs and headers you need to mount it on your Raspberry Pi. Assembly was easy on my Raspberry Pi 4. A satisfying ‘click’ is involved.

Getting the device to work requires some configuration on the Raspberry. Out of the box, the instructions supplied did not work for my Pi 4. It turns out that I had to run raspi-config, pick Interfacing Options, Serial and then disable login shell on serial, but do enable the hardware serial port.

The device then became available on /dev/serial0, at the default baudrate of 9600.

Changing the built-in baudrate on u-blox devices is a bit finnicky, so I decided to enhance the galmon code with logic to do so robustly. Normally, 9600 bps is enough to receive all GPS messages, but the M8 is so powerful and can observe so many different satellites that it can generate data at a higher rate than that.

If you decide to use the Uputronics GPS/RTS Raspberry Pi Expansion Board, you can launch the ubxtool like this:

$ ubxtool -p /dev/serial0 --gps --galileo --beidou -n 115200 -u 1 

The -u 1 part is different from most USB-connected u-blox devices - we are not talking to the chip via USB but via UART1.

Add --stdout | navdump to verify that it all works:

You can pick GPS, Galileo, BeiDou or GLONASS, but not all four. There are two receivers internally, GPS and Galileo share a frequency, so you get both of them in one slot. To that you can add either BeiDou or GLONASS. Or if you are in that state of mind, you could pick BeiDou and GLONASS, and nothing else.

To use the expansion board as a very precise PPS time source, further instructions can be found on this page by Phil Randal.

All in all, this expansion board seems like a pretty neat device. I also got great support (on IRC no less!), and I am happy to report the Uputronics board is now station 1 in