Raspberry Pi Asked on November 5, 2020
Just like a lot of people I’m using a RPi as a NTP server (more info about the basic setup here: https://framkant.org/2017/03/stratum-1-ntp-server-with-freebsd-on-raspberry-pi/)
I have found that the stability is really bad and it’s especially sensitive to temperature changes. Even me walking out the door in the morning changes the indoor temperature enough to affect the timekeeping.
In order to resolve this I would like to change the X1 oscillator to something more stable like a TCXO or OCXO. But I not really sure what I need to know/think about before doing this.
For reference, here is a graph of the timekeeping today with a spike from me making dinner in a room approx 10m away. 😀 (The scale is microseconds (milli*milli))
It is entirely possible to do this with a bit of careful rework (magnifier and hot air gear is required to remove the old crystal) and you do get very significant improvement in performance.
I took an RPi3 B+ with NTP and a Trimble GPS receiver, removed the stock crystal and replace with a $10 TCXO
As a 3V3 part it needed AC coupling via a 1nF capacitor, and the DC level setting with 240K & 100K resitors, but the results speak for themselves.
The stock performance is shown in these graphs, where you can see the temperature changes in my home office lead to ~6ppm variation in the crystal frequency, and during periods of faster change, this yields up to 150us wander (while NTP is good at compensating for frequency offset, it takes it time to spot and compensate for drift).
Swapping to the TCXO gives these graphs
Superficially this might look worse, until you realise that the scales for offset and frequency cover ranges which are two orders of magnitude smaller! The worst case wander is reduced to less than 1us, with the RMS being around 300ns, and the frequency variation is reduced to ~30ppb. (The bottom "Wander" graph is at 0 for the TCXO system, because the ntpq data I was scraping only reports to the us resolution, and the actual wander is much less than 1us.)
All in all a very nice cheap, compact, low power, high performance NTP server / frequency reference!
If anyone wants more info on the mod, let me know.
(Pictures of the cased system, with GPS board, TCXO, and 1pps + 10MHz outputs below. TCXO is covered with foam tape to provide insulation and reduce rate of temperature change.)
Correct answer by colintd on November 5, 2020
This is a not a very fruitful idea, for several reasons.
The clock circuit on an embedded device like the PI is not designed for accuracy or stability, there are more elements than the
XO that will affect jitter and drift.
PLL) inside the Broadcom CPU which generates the core clock
Additionally, Any hand rework, even with good equipment, runs the risk of wiping out any improvement from a better spec'd oscillator. They are very sensitive parts.
The improvement in temperature stability switching to a different XO in the same package is marginal, you are buying better tolerance and matching characteristics that reduce clock drift and temperature dependence for the device class, but physically speaking all crystals will expand/contract with temperature changes and all will experience clock drift, very hard to compensate for this.
In the end its unnecessary, if you want to run an NTP node it will work regardless, if you want to function as a (local) time standard you will need to interface external equipment, Like a GPS, thermally stable clock, cesium clock, etc...
However, If you want to experiment with stabilizing the on-board oscillator this I would suggest and alternative approach
Clock references in precise equipment are usually in a constant temperature oven, and require some time to stabilize. These "ovens" provide a constant temperature (not necessarily HOT), usually controlled by a Peltier Element
These devices are known as Oven Controlled Crystal Oscillator (
OCXO). Unfortunately they require a significant change to the circuitry and are not drop in replacements.
To experiment, you could replicate some of the stability of an
OCXO by putting a Thermo-Electric Cooler (TEC aka Peltier Element) to keep the
XO and the broadcom CPU at a constant temperature.
In other words, eliminate the temperature issue by keeping the Raspberry PI at constant temperature.
Answered by crasic on November 5, 2020
You'll need one with exactly the same circuit characteristics as the stock XO.
If you're skilled with a hot-air rework station, and have all the right tools and equipment, it's not too hard. It's virtually impossible if you don't, though.
Likely not. NTP is designed to work around variable system clocks through network consensus, so changing the XO won't give you much. Using a GPS's PPS signal effectively gives you a GPS/Multi-GNSS Disciplined Oscillator, so as long as you have skyview, you've got atomic clock accuracy even without a network. If you don't have skyview or network, it wouldn't be impossible to piece something together based on a used rubidium frequency standard — but even the cheapest of those have fearsome power requirements and are far from plug-and-play.
Answered by scruss on November 5, 2020
Get help from others!