Re-reading your last post, I realize some of what I wrote was old news, e.g., the gpio-pps kernel module being available as package. And the need for a custom build of chronyd to enable PPS support. In that context:
In my understanding, chronyd currently doesn’t support NMEA natively. Rather, some other piece of software is needed, e.g., gpsd
, or Miroslav’s ntp-refclock
, with the latter wrapping just ntpd
’s refclocks into a program without all the NTP protocol and timekeeping stuff, and have either of them feed the parsed information to chronyd
, e.g., via its SHM refclock driver, or the SOCK one (gpsd
only). gpsd
has the advantage in this context that it is already packaged by the OpenWrt project. Not sure whether they carry ntp-refclock
as well.
In one approach, I think that is easier than it might seem. Many GNSS modules, e.g., the cheap u-blox ones, or u-blox clones, often come with pin headers already soldered, or you might need to do a bit of soldering there. Similar for the FTDI-based USB-to-serial adapters. Then all you need is some Dupont cables to wire them up. The pins are typically labeled, so that is largely self-explanatory (except that RX from one device gets connected to TX on the other device, and vice versa - and make sure you get 3.3V power from the adapter, not 5V). Only when routing the PPS signal through the adapter to avoid fiddling with the device tree, as mentioned previously, one small challenge is that the DCD signal unfortunately is not on the pin header of the FTDI-based boards, so a bit of soldering is needed. Or you take a bit thicker cable (or a Dupont-tip bent appropriately) and squeeze it into the hole so it makes contact, and secure the cable, e.g., with some glue.
Or you connect the PPS signal directly to your chosen GPIO pin in case the device tree stuff turns out to not be as challenging as it may currently seem.
Concerning the u-blox boards, many are intended for positioning in hobby UAV applications which don’t require the PPS signal, so make sure you pick a board that explicitly breaks out the PPS signal.
Some boards come with an attached ceramic antenna, which may be insufficient when indoor reception isn’t good and you can’t place the receiver outdoors (especially with the older generations 6 or 7, but depending on circumstances also with more recent generations). Thus I prefer boards that have an antenna connector, either by itself, or in addition to an attached ceramic antenna. Then one can attach a separate wired puck antenna (or better if desired) and place it outdoors while the receiver stays inside. Often, the connector on the board is a miniature iPEX one, requiring an adapter to connect to an SMA connector common with puck antennas. But nowadays, many boards also come with an SMA connector already on the board, sometimes even in addition to an iPEX connector. Such a board obviously is most comfortable for attaching an external antenna.
Most u-blox chips also support USB natively in addition to one or more serial other interfaces, and some boards expose that interface through a USB connector. That has the advantage of providing higher-rated power directly to the receiver without going through the USB-to-serial adapter. And one can use that to access the NMEA data, fully obviating the need for the separate adapter. Or you use both to feed data to two devices (the PPS signal can typically also be fed to two devices simultaneously). Or even the same one. E.g., I sometimes connect the PPS signal both to the RPi and a USB-to-serial adapter attached to the RPi as well, just to see the lag between the two, and potentially compensate for it.
All in all, I think things don’t need to be too complicated on the hardware side. When choosing the right components, it can be as easy as plugging in one or more Dupont cables, one USB cable, and connecting one external puck antenna.
Anyway, hope some of the above will be helpful to you. Good luck, and have fun!