I use the PPS driver accessing GPIO PPS as well, plus gpsd or some external source for seconds numbering. Once used the RPi’s serial port as well, but too many manual steps making that available for replications, so don’t do that anymore. The u-blox’s USB port is a good, easier alternative for native NMEA, vs. the RPi’s UART. Or a USB-UART bridge.
Might be a timing issue. One of them, I think the timekeeping daemon, needs to first set up the SHM segments before the other can use them. So if they start in the wrong order, the communication doesn’t work.
I don’t think that is a problem. PPS is essentially about taking a timestamp of system time when a pulse occurs, and whether chronyd/ntpd does that, or gpsd does it and ships that info to the timekeeping daemon shouldn’t make much of a difference. It’s just seeing some design choices by the gpsd maintainer in other places I have looked at that don’t instill much confidence that they are not trying to do something “smart” in this area as well. But that’s my personal reason for not fully trusting gpsd.
But in general, more layers of software just doesn’t help transparency. And I am concerned that PPS sample processing in other drivers might just not be as good as in the dedicated PPS driver. But that is just a feeling, no evidence/hard indications that PPS processing in non-PPS drivers might be substantially worse than in the dedicated driver. Still, e.g., off the top of my head, I am not sure about what gpsd ships in case of a combined signal, whether it is shipping the raw PPS and NMEA info, just within the same data stream, and the timekeeping daemon then “sees” and processes them differently. Or whether gpsd already preprocesses the two streams and combines them into a new, synthesized signal, and that “cooked” data is then shipped to the timekeeping daemon. In the latter case, as you point out, I would always assume the timekeeping daemon to better handle the combining of the two than some external component whose primary purpose isn’t timekeeping.
I am not entirely sure whether “combining” in gpsd is done in the sense of synthesizing a new signal, or just shipping the two signals in a single data stream. At least in the former case, I’d assume the timekeeping daemon to do better in “combining” the signals vs. some external software doing that.
When you use gpsd, the pps device appearing is just a side effect, giving a hint, but not strictly a necessity (unless when you rely on that device because you want to access it directly, which you typically don’t when using gpsd). The crucial thing is whether gpsd is able to pick up the PPS signal.
A good indication that maybe it wasn’t ldattach
that was triggering the creation of the pps device before, but gpsd
.