In order to probe a crystal’s response with decent resolution, I need a gadget to step a decent-quality sine wave by 0.01 Hz across the 10-to-100 kHz range and a logarithmic front end with a decent dynamic range. That’s prompted by looking at crystal responses through the SA’s 30 Hz resolution bandwidth:

Mashing a cheap AD9850/AD9851 DDS board against an Arduino Pro Mini, adding a knob, and topping with a small display might be useful. A Raspberry Pi could dump the response data directly into a file via WiFi, which may be more complication that seems warranted.
The DDS boards come with absurdly high-speed clock generators of dubious stability; a slower clock might be better. A local 10 MHz oscillator, calibrated against the 10 MHz output of the HP 3801 GPS stabilized receiver would be useful. If the local oscillator is stable enough, a calibration adjustment might suffice: dial for 10 MHz out, then zero-beat with the GPS reference, so that the indicated frequency would be dead on to a fraction of 1 Hz.
The HP 8591 spectrum analyzer has a better-quality RF front end than I can possibly build (or imagine!), but, at these low frequencies, a simple RF peak detector and log amp based on the ADL5303 or ADL5306 should get close enough. One can get AD8302 / AD8310 chips on boards from the usual low-budget suppliers; a fully connectorized AD8310 board may be a good starting point, as it’s not much more than the single-connector version.
With frequencies from 10 kHz to 100 kHz coming from a local oscillator, one might argue for a synchronous detector, formerly known as a lock-in amplifier. A Tayloe Detector might be a quick-and-dirty way to sweep a tracking-filter-and-detector over the frequency range. Because it’s a tracking generator, the filter bandwidth need not be very tight.
At some point, of course, you just digitize the incoming signal and apply DSP, but the whole point of this is to poke around in the analog domain. This must not turn into an elaborate software project, too.
I’m a little unclear on why you’d build a 10MHz oscillator and try to calibrate it when you can just use your existing GPS receiver’s 10MHz output.
The GPS time standard takes about three days to wake up, smell the satellites, stabilize the oscillator, and decide to be a real clock: it’s not an instant-on reference. Leaving it on all the time seems silly, because 1) Low usage and 2) A few dozen watts to keep the oven hot.
Soooo, for my simple & highly intermittent purposes, an ordinary clock with a known (and reasonably stable) error will do just as well. I have a bag of 50 MHz oscillator-in-a-can clocks, another sack full of random frequencies, and something should come close enough to being stable. Worst case: a little heater on the can to stabilize the offset.
Stipulated: closely akin to yak shaving.
The intertubes suggest that 3 days is way excessive; the docs spec 8 to 25 minutes for warmup and lock. You may have something going on there…
Right now, all that gear sits in a 55 °F basement; most of the variation surely happens in the craptastic FG085 DDS generator. After letting everything cook overnight, I lined up the marker on a peak, came back that afternoon, and it was off by enough to convince me to pay more attention to detail.
I think the 8591 gets “within specs” after half an hour, but continues to vary for the next day or two as the temperature of the surrounding hardware stabilizes.
I’m reasonably sure I’m being too fussy for my own good.
Nah, that’s what makes this blog such a good read! :)