Du quartz nu au pseudo-TCXO#
Pourquoi#
Le Raspberry Pi 5 n’embarque aucun oscillateur de qualité métrologique : un quartz nu (XO) cadence le SoC, sans le moindre circuit de compensation en température. Les mesures de ce serveur le confirment : environ 3,8 ppm d’écart de fréquence entre 38,5 et 57,5 °C, avec des pentes locales de 0,06 à 0,2 ppm/°C selon la zone. C’est un ordre de grandeur au-delà de ce que tolérerait la spécification d’un TCXO, et c’est cohérent avec la courbe en S caractéristique d’un quartz à coupe AT (une inflexion a d’ailleurs été observée vers 38,5-39 °C).
Ce chapitre récapitule comment les étapes de ce guide, prises ensemble, reconstruisent en logiciel ce que le « TC » d’un TCXO fait en matériel, puis situe le résultat dans la hiérarchie des oscillateurs, coût compris.
Comment : les cinq étapes du pseudo-TCXO#
Rien ici n’est nouveau : chaque étape renvoie à un chapitre déjà appliqué. C’est leur combinaison qui constitue le pseudo-TCXO.
- Mesurer avant d’agir. La journalisation
log tracking measurements tempcomp(chapitre Chrony) fournit des couples température/fréquence horodatés : la matière première de tout le reste. Sans plusieurs jours de données, aucune des étapes suivantes ne peut être calibrée honnêtement. - Supprimer le cycling du ventilateur. Le profil PWM à 4 paliers avec hystérésis larges, actif en continu dès 40 °C (chapitre Firmware), fige le point de fonctionnement thermique au lieu de laisser la température osciller au gré d’un thermostat marche/arrêt.
- Isoler le quartz. La mousse polyuréthane entre le quartz et le boîtier lisse les transitoires rapides. Contrepartie mesurée : elle retarde aussi la réponse du quartz par rapport à la sonde du SoC, ce qui rend trompeuses les mesures prises pendant un choc thermique (chapitre Chrony, section tempcomp).
- Tenir une consigne (optionnel). La charge CPU contrôlée
ntpheat(chapitre Stabilisation thermique) vise une température fixe au prix d’environ 1 W permanent ; ce guide la laisse désactivée par défaut. - Compenser le résidu. La directive
tempcompet sa table de points, reconstruite quotidiennement partempcomp-refit(chapitre Chrony), retranchent la part prévisible de la dérive avant même que la boucle de discipline n’ait à la corriger.
Résultat mesuré en production : Residual freq de l’ordre de 0,01 à
0,02 ppm (chapitre Vérification chrony) et RMS offset passé de ~1,7 µs à
~0,2-0,4 µs sur les premiers relevés (des instantanés, à confirmer dans
la durée).
La hiérarchie des oscillateurs#
| Famille | Principe | Tenue en température (ordre de grandeur) | Coût indicatif | Sans modification matérielle ? |
|---|---|---|---|---|
| XO (celui du Pi 5) | quartz nu | quelques ppm à quelques dizaines de ppm sur 0-70 °C (mesuré ici : ~3,8 ppm sur 19 °C) | < 1 € | déjà en place |
| TCXO | quartz + circuit de compensation intégré | ±0,1 à ±2,5 ppm sur -30/+85 °C | 2 à 20 € | non |
| OCXO | quartz maintenu dans un four thermostaté | ±0,001 à ±0,01 ppm | 50 à 300 €, plus 1 à 3 W de chauffe permanente | non |
| CSAC | horloge atomique miniaturisée (césium) | ~±0,0005 ppm | 4 000 à 6 000 €, ~120 mW | non |
| Rubidium (RbXO) | référence atomique Rb disciplinant un quartz | ~±0,0001 ppm | 500 à 2 000 €, ~10 W | non |
| **Pseudo-TCXO ** | XO + ventilation à paliers + isolation + tempcomp | ~0,01 à 0,02 ppm de résiduel après compensation (Residual freq, mesuré à +0,016 ppm en production) | ~0 € de matériel en plus (le ventilateur sert déjà) | oui |
Deux lectures de ce tableau :
- En stabilité brute, le pseudo-TCXO ne joue pas dans la cour des OCXO et des références atomiques, et n’y prétend pas. Sa borne réelle est ailleurs : le PPS GNSS ramène l’horloge sur l’heure vraie en permanence, l’oscillateur local n’a besoin d’être bon qu’entre deux corrections, soit quelques secondes.
- En coût marginal, il est imbattable : tous les composants existaient déjà (le ventilateur est nécessaire de toute façon, la sonde thermique du SoC est de série), il ne reste à investir que du temps de mise au point, réutilisable à l’identique sur n’importe quel autre Pi.
Un meilleur oscillateur ne remplacerait pas le GNSS : il ne connaît pas l’heure, seulement la cadence. Son vrai apport serait le holdover, la capacité à rester juste pendant une panne GNSS prolongée. Avec le pseudo-TCXO, le mode orphelin (chapitre Chrony) dégrade honnêtement le stratum ; avec un rubidium, le serveur tiendrait des jours en dérivant de quelques microsecondes. C’est ce critère, et lui seul sur ce projet, qui justifierait de monter en gamme.
Erreurs à éviter#
- Comparer des chiffres de datasheet à des mesures de terrain. Le tableau mélange par nécessité des spécifications constructeur (TCXO, OCXO, CSAC) et des mesures réelles (XO du Pi, pseudo-TCXO). Une spécification est une enveloppe garantie au pire cas, une mesure est un point dans des conditions données : les ordres de grandeur sont valides, les comparaisons fines n’auraient pas de sens.
- Oublier que la sonde mesure le SoC, pas le quartz. Toute la
compensation repose sur
/sys/class/thermal/thermal_zone0, à distance du cristal et derrière la mousse. En régime stable, l’écart est un simple décalage que la table absorbe ; pendant un transitoire rapide, les deux températures divergent et les mesures deviennent trompeuses. - Croire le travail terminé. Un quartz vieillit (dérive lente, de
l’ordre du ppm sur la première année, puis décroissante) : c’est
précisément pourquoi la table
tempcompest recalculée en continu, et relue à chaque redémarrage, plutôt que figée à la première calibration.
Vérifier#
# Le résidu après compensation : Residual freq doit rester proche de 0
chronyc -h /run/chrony/chronyd.sock tracking | grep -E "Residual|Skew|RMS"
# La compensation appliquée en continu (colonne Comp., non nulle)
tail -5 /var/log/chrony/tempcomp.log📚 Pour aller plus loin
- John R. Vig, Quartz Crystal Resonators and Oscillators, A Tutorial : la référence libre et encyclopédique sur les courbes fréquence/température des coupes de quartz (dont la cubique de la coupe AT), le vieillissement et les familles d’oscillateurs.
- Chapitres liés : Firmware (profil ventilateur), Stabilisation thermique (
ntpheat), Chrony (tempcompet sa table dynamique).