No, Really, the cat ate the GPS

Had fun this last Sunday building my first Stratum 1 NTP server. Got a couple NEO 7m GPS units from eBay, wired one up to an RPi3B+, and followed (not carefully enough) Phil Martin’s excellent tutorial on building a Stratum 1 server on a Raspberry Pi.

In preparation, I deployed one of my magnetic hockey-puck GPS antennas out on the balcony, and draped the coax run back to the bench. Soldered the SMA female on the GPS board. Wired the GPS to the RPi board. Screwed on the coax to the board. Applied power to all and got a CLI. Then … nothing. No lock. Picked up the board, inspected my soldering job, and as I was moving the board around, the GPS went into lock. Ah, something’s loose or cold solder joint.

Figure 1 – Successful stratum 1 NTP server using RPi and a $7 NEO-7m GPS

But no. Definitely touchy. Connected the uBlox app to the board, all the GPS signals, if there at all, were 30 dB down from where I’d expect them. A whole constellation of them, above the apartment, and none of them much more than 15 dB SNR. Moving the GPS module around, with its built-in ceramic antenna, helped, but still really poor.

Decided to drag the whole thing out on the balcony, and while following the coax cable that was supposed to be connected, in a single run, between the GPS SMA connector and the GPS antenna, discovered that it was now in two pieces. One connected to each device, but not to one another.

Damn cat(s) chewed through the coax. I think it was Sancho, but I don’t have the evidence to prove it.

Stratum 1 server now up and running flawlessly. As far as I can tell!

Figure 2 – ntpq -p output from the Raspberry Pi NTP server


I connected the “High-Precision AD/DA Board” to the RPi. Got PiPyADC up and running. Noticed when I ran the or code the PPS LED on the GPS would stop blinking, though I’d get the following kind of output (see Figure 3).

Figure 3 – PiPyADC output

Discovered that this board uses P0 – P4 for control. Was causing the P1 line to do weird things. Moved the GPIO for the PPS input from the GPS from BCM18 (GPIO P1, header pin 12) to BCM24 (GPIO P5, header pin 18). A reboot and all is good.

The Pi is now running a Stratum 1 NTP server, direwolf decoding APRS packets on 144.39 MHz, and reading the ADCs on the AD/DA board. Now to figure out how to get the ADC data into APRS telemetry packets.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.