A feature I'm missing in gpsd is the PPS sawtooth correction
(TIM-TP). I see some instances in the satpulse source code, but is
that information currently only collected or actually applied to the
PHC adjustments?
Yes, it is. It is not hugely noticeable with an F9T (because the sawtooth amplitude is small), but it does make a significant difference with an M8T.
Embarassingly, I had the sign wrong for a while. When I fixed that, it made quite a noticeable difference to the M8T:
If you want to see the difference it makes, you can turn it off by adding this to satpulse.toml:
[sync]
tracking.ignoreSawroothCorrection = true
This is also useful if you are talking to a GPSDO like the BG7TBL CM55 which gives you serial connection to an M8T, but gives you a disciplined PPS.
Apart from u-blox, I have implemented support for sawtooth correction for a couple of exotic Chinese GNSS timing modules (though I haven't yet verified that it actually improves timing performance for these).
I have sometimes wondered whether it would be possible to extend the refclock SOCK interface so that something like satpulse could provide sawtooth corrections when chrony is reading the PPS, especially with PHC extpps. Concretely, it would be an addiional kind of message giving the amount of the correction as a float and the true time of the pulse (e.g. UTC in ms) to which it applied.
James