Mictronics - DIY Electronic projects and more.

ADLAM-Pluto OCXO Modification

About OCXO #

A crystal oven is a temperature-controlled chamber used to maintain the quartz crystal in electronic crystal oscillators at a constant temperature,
in order to prevent changes in the frequency due to variations in ambient temperature.
An oscillator of this type is known as an oven-controlled crystal oscillator (OCXO, where "XO" is an old abbreviation for "crystal oscillator".)
The oven-controlled oscillator achieves the best frequency stability possible from a crystal. The short term frequency stability of OCXOs is typically
1×10^−12 over a few seconds, while the long term stability is limited to around 1×10^−8 (10 ppb) per year by aging of the crystal.

See Wikipedia for details.

Details #

This modification exchanges the original ADLAM-Pluto crystal oscillator by an temperature-controlled crystal oscillator.

The original oscillator (RXO3225M) is rated with a temperature stability of +-25 ppm.

The replacement temperature-controlled oscillator is rated with +-20 ppb or 0.02 ppm (1 ppb = 1x10^-9).
A Connor-Winfield DOCSC series OCXO is used, type DOCSC022F-040.0M, available from
Digikey order number CW884CT-ND.

AN2093 System Design Information and Printed Circuit Board Layout Guidelines for OCXO Oscillators

In addition a 3.3V linear regulator and two capacitors are required. In fact the ADLAM-Pluto doesn't provide 3.3V for the OCXO anywhere on its PCB.
So we have to convert down from 5V USB supply. The linear voltage regulator is a LT1117-3.3 in this modification. But any other will do as long as
it can handle the power/current requirements.

The OCXO requires up to 3W power supply, hence up to 1A @ 3.3V

My measurements on two units showing 680mA drawn from 5V on power up for few seconds when the OCXO initally heats up. Current then drops down to
~170mA depending on enviroment and Pluto internal temperature. The current drawn decreases with raising temperature and vice versa.

Preparation #

Original crystal oscillator Y3
Original crystal oscillator Y3
The original crystal oscillator Y3 on Pluto PCB must be removed. Warranty will be lost!
The original crystal oscillator Y3 on Pluto PCB must be removed. Warranty will be lost!

Modification v1 #

Example modification. The LT1117-3.3 requires a small heat sink.

Modification v2 #

A second modification taking into account some recommendations from above linked AN2093.

OCXO foam tape isolated, LDO soldered to PCB
OCXO foam tape isolated, LDO soldered to PCB
ADLAM-Pluto in hackRF enclosure
ADLAM-Pluto in hackRF enclosure

Schematic #

See pluto_ocxo_mod_schematic.pdf for details.

Only valid for LT1117-3.3 regulator! The MCP1826S33 has a different pinout. See datasheet.

Calibration #

Each ADLAM-Pluto unit is factory calibrated for the installed crystal oscillator. However, this calibration is usually way off for the new OCXO and
has to reverted.

Calibration is done by setting the xo_correction environment variable in Pluto bootloader. See last command on this page

Step by step:

  1. Connect to Pluto by ssh: ssh -l root use password analog
  2. Set enviroment variable: fw_setenv xo_correction 40000000
  3. reboot or cycle Pluto power.

All environment variables can be printed with fw_printenv.

Alternative way:

Open config.txt in Pluto's USB mass storage device. Edit or add xo_correction in system section if not exists. Then eject the device.

xo_correction = 40000000

In case you have a precise measurement tool, for example a spectrum analyzer, then you can calibrate your Pluto at the desired operating
frequency and fine tune the value for xo_correction. In that case, wait at least 30min, keep the Pluto powered on during that time, to heat up
and temperature stabilize the entire unit.


Keep in mind that any OCXO minimal offset increases with Pluto TX frequency due to internal multiplication.
For example, changing the calibration value xo_correction by 1Hz will change the offset by 25Hz @ 1GHz TX frequency. (1GHz / 40MHz = factor 25)

Maximum CPU activation #

The Pluto has a dual core cpu but only a license for one core, this command will activate both cpu cores while ssh access is active:

fw_setenv maxcpus

👈 Home