History
I have a Raspberry Pi 1B from 2012. I thought it would make a nice X terminal but it turned out to be too weak for that. I have also used it as a print server and CD writer server with dubious success. Eventually it got superseded by a Raspberry Pi 2, which was better but still not powerful enough for an X terminal. Also I could not run some x86 software on the ARM processor (the ARM repositories were not as complete then). Eventually I bought a NUC which is also powerful enough to run Virtualbox and is my current desktop.
So the Pi 1B slumbered forlorn in the spares box. I bought a breakout board for it, hoping to use it for hardware experiments in conjunction with WiringPi but soon discovered that 1. it interfaced 3.3V devices so not compatible with old logic chips, and 2. the Arduino was more convenient.
This is not novel
There are heaps of projects connecting to a GNSS module from MCUs including a few on Hackaday. But I decided not to use whatever-duino because it's not so that I can shout "yay, I can show the time from a satellite on the serial console". I want it to be part of home environment and eventually be a low power server for time and messages to devices. And I want to spend little effort on the boring bits and have more fun learning the interesting bits.
GNSS module
I saw u-Blox 7N GNSS modules for sale on eBay cheap. It's the previous generation, the datasheet is from 2014, but it's far more capable than I need anyway. With that I can get accurate time without Internet connectivity. That hardly ever goes down and I don't really need sub-second accuracy, so this project is not essential for accurate time, just an excuse for me to tinker.
But after I received the modules, I discovered that silly me, I should have done more research. What I had purchased was just the chip which is meant to be surface mounted on a board. I thought: I'll just solder some wires for power and the UART lines. Tricky at 1.1 mm spacing but doable. What about the antenna though? It turns out that there is a pin for an external antenna. I should have realised that the chip alone would not receive adequate signals. So I went back to the Internet and ordered a u-Blox 6M GNSS module on a breakout board along with a ceramic antenna. That also solves the soldering problem as the 4 lines are brought out to a pin header. The 6M is two generations behind, but more than adequate for hobbyists. Oh well, the 7N was only a few bucks and maybe someday I'll be able to make use of the 7N modules elsewhere.
DietPi OS
I've decided to use DietPi instead of Raspberry Pi OS (formerly Raspbian) lite to get a small memory footprint. It's also Debian based (currently Buster) and maintained. As it turned out I have plenty of RAM (512MB) but it's also nice to have enough space on the 4GB SD card. (I know, I can get a bigger one cheap.)
gpsd for the server
Eric Raymond (that one) and others maintain gpsd, which unifies access to a variety of GNSS devices from other programs, such as ntpd. It's a standard package in Debian.
Progress
I'll write a log for each significant step.
Results
The Raspberry Pi 1B has been successfully fitted with a u-Blox 6M GNSS module through the GPIO port and is now a time source on my intranet with accuracy in the milliseconds which is far more than I need. As mentioned, I really don't even need GNSS time as my Internet connection seldom goes down; this was just an excuse to tinker with GNSS and put an idle piece of gear to use.