1. Starting MMDVMCal
  2. TX and RX Adjustment
  3. mmdvmcal
  4. Bessel Tuning
  5. RSSI
  6. References

MMDVMCal send test tones, adjust TX levels for proper deviation.

Starting MMDVMCal


TX and RX Adjustment

TX Adjustment:
For TX the best way is to use a spectrum analyzer to observe the TX RF directly. If a spectrum analyzer is not available then an SRD configured as a spectrum analyzer or a radio with a spectrum screen that can operate in the 70cm band, such as an IC705 can be used.

The MMDVCal program provides a 1.2kHz tone which deviation on the RF signal should be adjusted on a level where the "Bessel zero" is clearly visible: Set the spectrum analyzer to 1kHz RBW and tune to the RF TX frequency. Use MMDVMCal to switch the repeater to TX and emit the DMR cal signal. While slowly turning the TX deviation pot on the DVM board observe the sidebands of the RF signal on the analyzer. When you've hit the right deviation level, you will notice that the carrier in the center of the RF spectrum shows a clearly visible dip. This is the "Bessel zero" where the deviation of both tone sidebands "zero out" the carrier. Adjust the pot to where the dip shows maximum depth.

RX Adjustment:
For the RX use a scope to check the incoming RX signal chain from the repeater to the DVM board. These are Test poibtas 1,2,and 3 on the Repeater Builder board. This should be first adjusted using the clip LED on the board and then fine tuned with the scope to create a 1,65V DC offset at TP3, which is the STM32 input. Key you radio (on TG9 or similar...) and observe the audio on TP3 pin overlaying the DC offset. (I've used the rising edge of the receiver's RSSI signal for triggering the scope onto the data bursts of my portable radio)

The RX pot on the DVM board must be adjusted so that the peak amplitude of the audio signal does neither reach the zero line nor the 3.3V maximum or +/- 1.65v. Keep a margin of 0.3 to 0.4V to both limits to be safe! It must be assured that the ADC on STM32 is never overdriven by the audio signal.

With these HW adjustments you should have a suitable basic setting for operation. For a fine tuning you may play with the TX / RX settings in the MMDVM.ini, but I found this was not necessary when the HW tuning has been performed properly as above.



This is the calibration program to be used with the MMDVM and MMDVM_HS:
H/hDisplay help
W/wEnable/disable modem debug messages
IToggle transmit inversion
iToggle receive inversion
OIncrease TX DC offset level
oDecrease TX DC offset level
CIncrease RX DC offset level
cDecrease RX DC offset level
P/pToggle PTT inversion
RIncrease receive level
rDecrease receive level
TIncrease transmit level
tDecrease transmit level
dD-Star mode
DSet DMR Deviation Mode. Generates a 1.2Khz Sinewave. Set radio for 2.75 Khz Deviation
L/lDMR Low Frequency Mode (80 Hz square wave)
ADMR Duplex 1031 Hz Test Pattern (TS2 CC1 ID1 TG9)
M/mDMR Simplex 1031 Hz Test Pattern (CC1 ID1 TG9)
aP25 1011 Hz Test Pattern (NAC293 ID1 TG1)
NNXDN 1031 Hz Test Pattern (RAN1 ID1 TG1)
K/kBER Test Mode (FEC) for D-Star
bBER Test Mode (FEC) for DMR Simplex (CC1)
BBER Test Mode (1031 Hz Test Pattern) for DMR Simplex (CC1 ID1 TG9)
JBER Test Mode (FEC) for YSF
jBER Test Mode (FEC) for P25
nBER Test Mode (FEC) for NXDN
gPOCSAG 600Hz Test Pattern
S/sRSSI Mode
V/vDisplay version of MMDVMCal
<space>Toggle transmit


Bessel Tuning

In DMR, the frequency modulation deviation must be 2.75 kHz ans 3.3 volts peak to peak. MMDVMCal generates a signal of 1200 Hz. The Bessel J0 appears null when the modulation index (x) is equal to 2.4. Whe the line J0 disappears, the operating point is set to deviation of 2.88 kHz (index = 2880/1200 = 2.4). We then reduce the TX Level (in mmdvm.ini file) by 5% to set the required deviation.

For example, if we have a TXLevel of 85% in MMDVMCal, we will set it in mmdvm.ini to (85*0.95 =) 81%

Source:Bessel Functions. Excerpt from Work Practical Electronics,École Polytechnique de l’UNS (in french)

Fundamental frequency with amplitude J0

The frequency modulation spectrum with a 1200Hz BF signal (J0, J1, J2, J3 and J4 are present)

Optimum adjustment of the DMR emission, the line J0 has disappeared

For original material see:





Glenn Lyons VK4PK
Ver:gnl20220101 - pre published v0.9