====== Raspberry Pi XO Replacement ======
Context:
* https://raspberrypi.stackexchange.com/questions/74482/switch-out-the-x1-oscillator-on-a-rpi-2-3/109074#109074
==== Success! ====
Made an initial attempt on the evening of 2023-03-26 on a Pi 2 B. Drop in replacement is working surprisingly well right off. Have not performed any longitudinal testing yet, but initial tracking numbers are positive.
^ Pi 2 B with replaced XO ^ Pi 2 B with stock XO ^
| {{::pib-newxo-tracking.png?400|}} | {{::pib-stockxo-tracking.png?400|}} |
==== Notable Test Points ====
* https://ozzmaker.com/testing-points-raspberry-pi/
PP3 GND
PP4 GND
PP5 GND
PP6 GND
PP7 5V after polyfuse
PP8 3V3
PP9 1V8
==== Pi 3 B v1.2 Stock XO ====
Marked AEL19.2
* http://www.farnell.com/datasheets/2860337.pdf
As far as I can tell, the Pi 2B through 3B+ all use this part, as well as a number of the A models. The Pi 4B uses two AEL crystals, one at 25MHz, the other at 54MHz. I have not yet experimented with replacing these parts.
==== New TCXO ====
* [[https://www.digikey.com/en/products/detail/iqd-frequency-products/LFTVXO079052/9739101|IQXT-205-3-18]] or
* [[https://www.digikey.com/en/products/detail/taitien/TXETBLSANF-19-200000/6127626|TXETBLSANF-19.200000]]
====== Quantifying Results ======
There are a number of different methods for quantifying the results of this sort of modification. A few that I am exploring will be detailed below.
==== chrony tracking =====
(Graphs coming eventually)
==== Python Frequency Generator ====
* [[https://sourceforge.net/p/raspberry-gpio-python/wiki/PWM/]]
* [[https://gist.github.com/boseji/7296415]]
#!/usr/bin/python
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setup(10,GPIO.OUT)
p=GPIO.PWM(10,1140)
p.start(20)
sleep(3600)
p.stop()
GPIO.cleanup()
exit()
==== WiringPi GPIO_CLOCK ====
The WiringPi toolset has a function to use the SoC's PLLs to generate a precise clock using the GPIO_CLOCK function. This can be initiated easily from the linux userspace by first setting the pin mode, then the output frequency. Only WiringPi Pin 7 (GPIO 4) supports this mode.
gpio mode 7 clock
gpio clock 7 1000000 # frequency in Hz