MMDVM.ini explained: a breakdown of the key parameters

Category: CalibrationDifficulty: ★★★~11 minutes

The MMDVM.ini file is your hotspot's passport. Everything is baked into it: the callsign, the DMR ID, which board you are running, how the modem's signals are inverted, which server to connect to and what frequency corrections to apply. When something "won't take off" — the radio doesn't reach the network, the BER creeps up, the server refuses the connection — the answer almost always lives in this text file. Let's go through the key sections and parameters one by one: what they do, which values are safe, and where a single wrong digit turns a working hotspot into a brick.

Why bother getting into MMDVM.ini at all

The classic MMDVMHost (G4KLX's daemon that links the MMDVM modem to the digital networks) reads its configuration from exactly this ini file at startup. In the world of Pi-Star and WPSD a web front end usually generates it for you, so you never have to dig in by hand. But you still need to understand the structure: for when the panel "can't do" something, when you are diagnosing someone else's hotspot from the logs, or when a non-standard board needs manual edits to its inversions and offsets.

On the DMRhub network it is even simpler: the agent on the hotspot generates MMDVM.ini automatically from your account data and keeps it up to date over OTA. The server address, port, password and your DMR ID are all filled in for you. Normally you never need to edit the file by hand at all; this breakdown is so that you understand exactly what the agent writes there and why.

The [General] section: the hotspot's identity

This is "who I am and how I behave." There are four parameters here that get touched most often.

The [Modem] section: the heart of the hardware

The most dangerous section. This describes the MMDVM board itself and its RF fine-tuning. A mistake here doesn't produce an obvious error in the log — the hotspot just "seems to work," yet the radio hears nothing.

Port and board type

Inversions: TXInvert / RXInvert

TXInvert and RXInvert (values 0/1) flip the polarity of the signal. Different boards and different radio chips require different inversion. The symptom of a wrong inversion is classic: the hotspot transmits, the radio hears it, but it does not receive the reply from the radio (or vice versa). If everything works in one direction but the other is dead, the first thing to do is flip the corresponding Invert to the opposite value.

Offsets: RXOffset / TXOffset

These are frequency corrections in hertz that compensate for the inaccuracy of the modem's crystal. The goal is for the actual receive and transmit frequencies to match the declared one to within a few hundred hertz. They are not picked by eye but from the results of calibration. The process is described in detail in the articles on frequency calibration and MMDVMCal step by step.

Why a wrong RXOffset is dangerousIf RXOffset is off, the hotspot "hears" the radio on a shifted frequency. On a weak signal this immediately raises the BER and breaks reception, and with a large drift the radio simply isn't decoded at all — and meanwhile the hotspot's logs will be silent, as if you never pressed PTT. Don't borrow someone else's offsets "by analogy": they are individual to each specific board.

Levels: RXLevel / TXLevel

This is the modulation depth on receive and transmit (as a percentage, 0–100). Too low a TXLevel means weak deviation and the radio barely decodes. Too high means over-modulation and a rise in errors. These two parameters are directly tied to the health of the air: you tweak them to get the minimum BER. There's more in the breakdown of TXLevel and RXLevel, and on the target BER figures in the article what counts as a normal BER.

The [DMR] section: the mode you actually use

The [DMR Network] section: the link to the server

This is where the hotspot learns where to connect. The parameters:

On DMRhub the agent sets all three of the top parameters itself from your profile — this is the main reason manual editing is usually unnecessary and even harmful: on the next OTA update your changes will be overwritten with the correct ones.

Displays: [OLED] and [Nextion]

Purely cosmetic sections; they don't affect the RF side.

A mistake in these sections at most blanks the screen — the link will keep working.

Common mistakes

Mini cheat sheet: the dangerous parameters

If you remember only one rule out of the whole file, let it be this: the RF parameters from [Modem] (offsets, levels, inversions) are arrived at by measurement on your specific unit, not by copying. The details of measuring are in the guides on MMDVMCal and levels.

Don't want to edit the ini by hand?

On the DMRhub network the agent generates MMDVM.ini for your account itself and updates it over OTA — the address, port, password and DMR ID are filled in automatically.

Sources

  1. G4KLX, the MMDVMHost repository and the sample MMDVM.ini configuration — github.com/g4klx/MMDVMHost
  2. G4KLX, MMDVMCal — the modem calibration utility — github.com/g4klx/MMDVMCal
  3. Pi-Star documentation and forum on modem setup and configuration parameters — pi-star.eu
  4. Community guides on freeing up the UART on the Raspberry Pi for MMDVM HAT boards