As Evan says, the 25mhz crystal oscillator on the si5351 is out of calibration.
Such an error will create a frequency difference that is proportional to the operating frequency.
You say your rig is operating 700 hz above the the dial frequency when at 3.7mhz.
The VCO in the Si5351 operates at 875mhz.
So we need to tell the si5351bx routines that? variable si5351bx_vcoa is
? ? 875000000*700/3700000 = 165540 hz
above where it currently thinks it is.
<rant>
Farhan added a level of indirection to the si5351bx code with the "calibration" variable.
(The routine set_calibration() is not used.)
The value of "calibration" gets added to the default VCO frequency of 875000000
and is then stored in si5351bx_vcoa.? The value of "calibration" is also saved to eeprom
so we can use it again the next time we power up.
(I would prefer to adjust (and store to eeprom) the value of si5351bx_vcoa directly, easier to understand.)?
Currently available menu functions screw up on making calibration simple and accurate to do.
See posts 35235,? 44278,? 44515? if? somebody wants to hack their favorite flavor of uBitx firmware
into something easier to use.? There are several other issues addressed, such as bfo placement and
centering the 45mhz filter.? ?But since the error at 7mhz is double the error of 3.5mhz, this is?
mostly a matter of calibrating the si5351 reference oscillator.
Quickest thing to do might be to recompile, with si5351bx_vcoa hard coded to be a constant of 875165540
This assumes the value of "correction" stored in eeprom is zero.
In function initOscillators()? in file ubitx_si5351.ino of the stock uBitx code, change one line of code:
? <??si5351bx_vcoa = (SI5351BX_XTAL * SI5351BX_MSA) + calibration;
? >??si5351bx_vcoa = 875165540;
If the eeprom value of "calibration" isn't currently zero, you may need to make another pass
at calculating si5351bx_vcoa?after measuring any new error in the display frequency.
Perhaps somebody with more patience than I can tell you how to do this from the menus.
</rant>
Jerry, KE7ER