Just wanted to follow up on this one.
The timing reference on the board is a 25MHz Crystal, and it’s not very precise (+/- 20ppm perhaps), and after reviewing the AP121 reference schematic, we found a test point that we could bluewire out to a freq counter locked to a rubidium time reference, and confirmed that the XTAL does wander a bit.
Looking at the 2.4GHz radio, we discovered that drift was quite a bit less and didn’t match up with the timing reference from the XTAL. Additionally, and this is weird, is that we didn’t see any timing adjustment - looking at adjtimex values which were steady, but drift against a stratum 1 NTP server showed that time would drift slightly and then correct, but busybox’s NTP server client was disabled, so something was adjusting, and it wasn’t software.
SW is a custom OpenWRT build off master with some 4G modem support.
Digging into the AR9331 docs, discovered that there is a VCO on board the chipset, so it uses either a 25MHz or 40MHz crystal as an input (for AR150 it’s 25MHz), and the chip uses the XTAL as input into the VCO, which then drives the rest of the timing for WiFi, Ethernet, USB, CPU, DDR, SPI for Flash, i2c, etc…
Which was interesting - and how to calibrate was even more cool - one uses the WiFi compared to a Golden Reference with the Atheros Radio Test v2 tool, and there, one sets the spectral mask and center freq, and nudge it left or right in 100Hz steps - so once the WiFi radio is set, this sets all the other clocks inside the chip.
It’s clever, as it simplifies cal at the factory during assembly and test, and keeps BOM cost very low - and the internal VCO accounts for time/temp drift, along with XTAL aging (they’ll drift over the long term, because crystals do)
As a side note - we did remove the XTAL, and deadbugged a very high precision single chip MEMS device (+/- 50 ppb) in place, and didn’t see any difference, which drove the exploration into the AP121 schematic and AR9331 docs.
Was a fun little project - learned quite a bit for the internals of the 9331 (and this would apply to 9531 as well, along with other Atheros devices built around the same architecture).