Skip to main content

Frequency adjustment of uBITX (Si5351) - How to calibration

Frequency adjustment of uBITX (Si5351)
How to calibration for Frequency fine adjusting

This document describes how to precisely adjust the frequency of the Si5351 module
Applies to all devices that use the Si5351 module, such as uBITX
I used a very old instrument to show the difference in frequency for verification of this post.
Advanced instruments are not required if there is a way to check the frequency. You only need a calculator.

Be sure to read the following two articles before calibrating uBITX.

An example of calibration is performed using uBITX Manager

1.This document is for anyone who knows the frequency error of uBITX
There are many ways to figure out how wrong your uBITX frequency is
There are quite a few other ways to use the frequency counter, signal generator, oscillater the frequency with the VCO, use programs such as Wsjt-x, use different HF transceivers, WWV, already known popular beacon signal.
I will not discuss how to measure frequency error here

2.PLL Frequency
(also called VCO in uBITX source code, called PLLA  in Si5351 Manual,
Exactly, PLL stands for Phase Locked Loop, For compatibility with the Si5351 manual and uBITX source code, I will call it PLLA here)


Clock generators such as the Si5351 have a  PLLA or PLLB frequency (Referecnce frequency). For uBITX, if you have not made any modifications, it will be 850Mhz
In order to make your radio more precise than a commercial product, you must remember the PLL Frequency.
The PLL frequency is used to create the desired frequency.

3.About Calibration value
It is not a necessary this part to adjust the frequency of uBITX.
You can skip this part and read 4 only

uBITX used a 25Mhz crystal to operate the Si5351's PLLA at 875Mhz.
However, 875Mhz is not generated correctly due to X-tal error.

Let's take a simple example.

There are devices that generate frequencies.
The device manual states that the PLLA operates at 10000 Hz.
The programmer wrote a program to generate one clock per 1000Hz to create 10Hz.
PLLA (10000Hz) / Output (10Hz) = 1000 (div)
PLLA (10000Hz) / 1000 (div) = Output (10Hz)

The programmer thought the PLLA was operating at 10000Hz.
But what happens when the PLLA runs at 15000Hz?
If a PLLA running at 15000Hz generated 1Clock every 1000Hz, then perhaps 15Hz would have been generated.
PLLA (10000Hz) / Output (10Hz) = 1000 (div) (Programmer's predictions)
PLLA Real Freq (15000Hz) / 1000 (div) = Output (15Hz), error : 5Hz (Real)

An error has occurred as much as the difference between the PLLA operation of the programmer and the PLLA actually operating.

So what do we do here?

There are two ways
The first way is to fix the PLLA.
The PLLA is modified to operate at 10000 Hz.

Second way.
But there is a little easier way.
The programmer is changing the predicted 10000Hz to 15000Hz.
Perhaps firmware then generates 1 clock every 1500hz to generate 10Hz.

The second method allows you to generate the correct frequency without modifying the hardware.

Do I have to program each of the devices by measuring the actual frequency of the PLLA on every device?
No. We can use EEProm

The difference between the frequency of the PLLA that the programmer thinks and the frequency at which the actual PLLA operates is put into the EEProm.

In the above example, the value stored in EEProm is 5000.
As the device boots, it gets the value in EEProm and adds it to the programmer's thought PLLA frequency.

5000 (from eeprom) + 10000 (Values from the manual)  / 10Hz = 1500 (div)
PLLA Real Freq (15000Hz) / 1500 (div) = 10Hz

Yes, that's right. Here, the value of eeprom is the calibration value

Final summary.
The firmware is written assuming that the PLLA operates at 10000hz.
Actually, the PLLA operates at 15000hz, The result is 15hz.
To do that, we put 5000 in the EEProm (Calibration value), 15hz -> 10hz

Important Points Increasing the Calibration value has lowered the frequency

4.How to adjust the frequency in uBITX
Describe any unmodified uBITX based on (use 25Mhz x-tal)
The PLLA frequency of uBITX is 875Mhz (875000000Hz)

As the calibration value increases, the output frequency of uBITX decreases.
Decreasing the calibration value increases the output frequency of uBITX.

What should you do if your uBITX is below 100Hz?
Yes. I need to increase the calibration value.
So how much should we increase it?

Here we must think of one more.
What frequency did you test?

If you test at 7Mhz and the actual frequency is below 100Hz, test at 14Mhz,
Perhaps the result is that the actual frequency will be transmitted below 200Hz.
That is, as the frequency to be tested increases, the error range will also increase.

The formula for obtaining Master Calibration from uBITX is shown below.

875000000 / Test Frequency * Error Hz => Calibration value

EX1 - for Si5351)
  Current status :
  Master calibration value : 0
  Test Frequency       : 14,001,000
  Frequency Counter  : 14,000,900
  875000000 / 14001000 * (14,000,900 - 14,001,000) => -6250

EX2 - for uBITX (or SSB Transceiver))
  Current status :
  Master calibration value : 150000
  VFO Frequency       : 7,050,000
  VFO Mode             : USB
  CW Tone               : 1000
  CW-Straight Key Send => : 7,051,000 Send
  Frequency Counter  : 7,051,650
  875000000 / 7050000* (7051650 - 7051000) => 80674

  Adjust calibration : 150000 + 80674 = 230674
(Before Calibration Value + Adjust Calibration value = new Calibration value)

This is experiment with my uBITX, I removed the calibration value of my uBITX for the experiment.

Set Master Calibration value to 0 for test

CW transmission at 14.000.000 Mhz
(CW Tone : 1000 => Send 14.001.000 Mhz)

Measured frequency : 14003460
Error : 2460hz

Calibration value :
875000000 / 14001000 * (14003460- 14001000) => 153,739
PLLA        /  Test Freq * (Measured Freq - Send Freq) => Adjust value

Set Calibration value : Before Calibration Value + Adjust value (0 + 153739 = 153739)

Perfect calibrated



  1. Replies
    1. Enjoy Ham with uBITX :)
      Thanks for comment

  2. Thank you for this post. It finally gave me the missing piece to get my unit calibrated. Tests now show that I am on frequency down to 1 hz. Perfect tones on WWV, tested with tone output on another rig and fed the Ubitx into an audio analyzer. got the WWV 1000 hz tone right at 1000 hz USB and LSB, checked it outputting cw from my other rig at 800hz. got it nailed down.

    1. Great!!!

      I knew you would do it nicely. Because your uBITX is better than mine :)
      I sometimes use my smartphone's audio spectrum to check the LSB, USB's tone.

      Thank you for freedback.

      Ian KD8CEC

  3. I also have to thank you for this great post.

    This made my uBITX functional at last. After building it and playing around with the menu my alignement (Frequency and BFO) was off so much that using it was not possible. And I just could not reconstruct it.

    I tried to do the calibration with the method described by Farhan - without success.

    Your instruction gave me the way how to do it with my calibration equipment. And this little thing works like a charm now

    Sascha, DL5SMB

  4. hello Ian.
    please check my version calibration uBitx.
    look here:,,,20,1,60,0::recentpostdate%2Fsticky,,,20,2,0,22017282&jump=1


Post a Comment

Popular posts from this blog

Release CEC Firmware v1.200 for uBITX All version(include V2, V3, V4, V5)

Release CEC Firmware v1.200 for uBITX All Version (include v2, v3, v4, v5) I did the firmware work for v5 when uBITX V5 was released, but I release it now. I received the feedback from a thankful beta tester and tested it myself by converting my uBITX v3 to v5 but I was not sure. I ordered the uBITX V5 and delivered the correct uBITX V5, so I made a little more fine-tuning. If you use V2, V3, V4, you do not need to update this firmware.

Introducing UV-K5 Version 0.1P (CW)

  Introducing UV-K5 Version 0.1P (CW Mode) CW-related functions have been added to version 0.1P. The spectrum function has been removed but is maintained in the source code. Later, when the source code is distributed, you can activate it and use it if necessary. This version is for testing purposes only. It will be redistributed as the stable version 0.2 in approximately 1-2 weeks. If you don't want to beta test, you can wait a week or two and download 0.2

Introduction to UV-K5 HF Fullband receive version 0.3

Introduction to UV-K5 HF Fullband receive Version 0.3 This is an introduction to UV-K5 HF full-band reception firmware 0.3HF using SI4732-A10. This version is released separately from the existing UV-K5 CEC firmware version. because space is needed to store a large PATCH file to use SI4732-A10's SSB. 0.3HF added several functions to use SSB for shortwave radio and amateur radio.