A temperature compensated crystal oscillator for the popular RTL-SDR

Similar projects worth following
This project was inspired by the work of /dev/ttyS0, who came up with this method of generating 28.8MHz for the RTL-SDR from a standard value crystal oscillator.

The idea is to use a standard value off-the-shelf 19.2MHz TCXO to generate a clock source for an RTL-SDR in order to achieve better frequency stability over a wide temperature range.

The standard RTL-SDRs (and especially ones in a smaller case) drift quite a lot in frequency until they have warmed up. This makes receiving narrow band signals (in the HF bands, using an upconverter) quite hard without periodically readjusting the tune frequency.

A simple fix to this problem is using what is called a temperature compensated crystal oscillator (TCXO).

The problem with the oscillator circuit that drives the R820T(2) tuner and RTL chipset is that it operates at a frequency of 28.8 MHz, which is a non-standard frequency and not easily available from popular electronics distributors.

The idea is to use a 19.2 MHz oscillator and divide that frequency by 2 using a 74AC74 D-type flip flop to 9.6 MHz. As the output of the flip flop will be a square wave, it will contain a significant amount of odd-order (3rd, 5th, 7th etc) harmonics of the 9.6 MHz fundamental frequency. We can use a bandpass filter to filter out the 3rd harmonic of 9.6 MHz which is at the needed frequency of 28.8 MHz.

/dev/ttyS0 actually built a complete oscillator circuit himself, using a 19.2MHz crystal and an inverter biased for linear operation. He then added a capacitor with negative temperature coefficient as part of the resonant circuit to stabilize the output frequency.

I decided to simply use an off the shelf 19.2MHz TCXO, which is an easily available frequency normally used for WiFi or GPS applications. This also means that I don't have to tune the resonant circuit in order to get the desired stabilization.

The circuit is super simple and doesn't need a lot of further explanation. I added a 3.3V low noise LDO from TI and made the PCB as wide as the PCB in the RTL-SDR. This should allow the PCB to be mounted on the backside of the RTL-SDR and allow the original case to still be closed.

The PCB also allows for an edge-launch SMA connector to be soldered in place which could be useful for building an external TCXO.

The Gerber files used to order the PCBs for this project. Currently revision A.

Zip Archive - 18.43 kB - 04/03/2016 at 14:08


  • 1 × 74AC74 Logic ICs / Flip-Flops, Latches, Registers
  • 1 × TPS793 (3.3V) Power Management ICs / Linear Voltage Regulators and LDOs
  • 1 × EPSON X1G004131001612 19.2MHz TCXO manufactured by EPSON

  • Rev. A boards received and assembled

    Elia04/15/2016 at 18:37 2 comments

    I have received the Rev, A boards today and they look good as all the OSHpark boards do. The shipping for OSHpark boards seems to have got significantly faster, it took the boards only one week to arrive.

    The image below shows a fully assembled board riding piggy back on one of my RTL-SDR dongles. I have yet to clean off the flux residue from the board. I currently remove flux residue using Q-tips and isopropyl alcohol but that leaves white streaks on the board. Any suggestions on what might work better?

    As you can see I did have to add a bit of a bodge to the circuit. The problem was that the output of the TCXO is only about 1V peak-to-peak, which is not enough to trigger the clock input of the D flip flop. The bodge adds two 10k biasing resistors to the clock input of the 74AC74 and the TCXO signal is AC coupled to the clock input via a 4.7uF capacitor.

    I had actually thought of this when doing the schematic, but somehow I was under the impression that the output amplitude of the TCXO would be high enough after looking at the datasheet. I probably misinterpreted the amplitude given in the datasheet.

    The image below shows the waveform on the clock input of the 74AC74 at 19.2MHz, you can see the 1.7V offset and the 1Vpp TCXO signal:

    The output of the 74AC74 looks a little less pretty, with some overshoot on the rising and falling edges. I couldn't get rid of that even probing with the little springy grounding tip:

    And finally the 28.8MHz output after the band pass filter:

    The output signal has quite a bit of jitter and you can clearly see that there are still higher order harmonics contained in the signal. It still kind of looks like a triangle wave with rounded corners rather than a pure sine, but it seems to work fine at least after a quick test.

    The dongle is also fine with the 400mVpp input signal, which according to the R820T datasheet is in the specified range of 150mVpp to 3.3Vpp.

    That's all for now. In the future I have to check the temperature stability versus an unmodified dongle and make some pretty graphs. Before I do that however, I need to finish my GPSDO project, so I have a stable reference time base for my frequency counter.

  • PCBs ordered from OSHpark

    Elia04/03/2016 at 14:18 0 comments

    I have ordered the Rev. A PCBs from OSHpark. I'm curious as to how long it will take for the PCBs to arrive in Germany after they have shipped.

    The PCBs I had ordered for a different project three weeks ago already arrived, which seems to be much faster than what I was used to from OSHpark. Either they changed something on their end with shipping or the German customs office for once decided to actually handle mail that they receive in a reasonable time frame (it used to take 4 to 5 weeks usually until the boards were in my hands).

    I will post an update once I have the PCBs assembled and tested.

View all 2 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates