MMDVM_HS_Hat or Dual_Hat: which modem to choose

Category: HotspotsDifficulty: ★★☆~8 min

When you pick the hardware for a hotspot, the first question is usually the same: should you grab a plain MMDVM_HS_Hat board or pay extra for a Dual_Hat? The difference is not in the brand or the plastic — it is in the number of radio chips and in how DMR works. Let's settle it once and for all.

What's inside: one chip versus two

Both modems are built around the ADF7021 chip from Analog Devices — a narrowband transceiver capable of operating in the 80–650 MHz and 862–1000 MHz bands, supporting the 4FSK modulation that DMR requires.

Important detailThe Dual_Hat works in simplex mode too — it simply uses only one of the two ADF7021 chips. But there is no point in paying more just for simplex.

Simplex and duplex: what the difference means for DMR

DMR Tier II (the repeater standard) works in duplex: the repeater receives the radio on one frequency and simultaneously retransmits on another, shifted by a fixed offset (usually 600 kHz for 70 cm). That is exactly how real repeaters operate.

A personal simplex hotspot is a simplification. It works on a single frequency: first it hears the radio, then it replies. This happens fast enough that the link feels normal, but technically transmit and receive do not overlap in time. The DMR protocol then operates in DMR Tier III (TDMA) mode on a single timeslot.

For a personal DMRhub node this is perfectly sufficient: you are alone, you have one radio, traffic is low. Simplex on TS2 is a working solution.

A duplex hotspot gives you two independent timeslots at once: TS1 and TS2 work in parallel. You need this if two people connect to the node simultaneously with different radios, or if you are building something like a mini-repeater for a small group.

About duplex frequenciesOn a duplex hotspot, TX and RX must be separated by at least 10 MHz, otherwise your own transmitter desenses the receiver. On the 70 cm band (430–440 MHz) this is technically feasible, but it requires two antennas or at least a single diplexer.

TCXO: 12.288 or 14.7456 MHz

Both board variants use a temperature-compensated reference oscillator (TCXO) for the ADF7021. Two nominal values are found:

The TCXO value affects the initial frequency offset and how the firmware calculates deviation. When flashing, it is important to specify the correct board type — otherwise the offset will be large from the start and will require correction.

Firmware: CA6JAU and the g4klx branch

The official firmware for MMDVM_HS boards (the ADF7021 variant) is maintained in the g4klx/MMDVM_HS repository. The CA6JAU build (José Hector CA6JAU) is also widely used — a popular fork with improved support for Chinese clones and a more convenient build procedure. Pi-Star and WPSD can flash both variants through the web interface.

When choosing firmware, check the board type in the settings:

# /etc/MMDVM.ini, [Modem] section
Hardware=/dev/ttyAMA0   # GPIO-UART (HAT)
# or
Hardware=/dev/ttyUSB0   # USB connection

TXOffset=0              # corrected during calibration
RXOffset=0              # corrected during calibration
GPIO vs USBThe HAT form factor connects via GPIO (UART on pins 14/15 of the Raspberry Pi). Some Chinese variants are sold as a separate module with a USB cable — that works too, but a HAT is physically more reliable and needs no separate wire.

Chinese clones: usable, with caveats

The vast majority of boards on the market are Chinese clones of the original mathisschmieder/MMDVM_HS_Hat and phl0/MMDVM_HS_Dual_Hat designs. The schematics are open, production is cheap. They work, but there are some nuances:

All of this is fixed by calibration — see the section below and the dedicated article linked at the end.

Frequency offset calibration

After installation and first power-on, always check the BER (Bit Error Rate) in the Pi-Star/WPSD or RadioStar dashboard. If the BER is above 2–3% or the radio does not decode at all, you need to correct RXOffset and TXOffset in MMDVM.ini.

The quick way is MMDVMCal. Run it on the same Pi:

sudo systemctl stop mmdvmhost
MMDVMCal /dev/ttyAMA0

In the interactive menu you select DMR mode, listen to a tone through the radio and adjust the offset in steps of 100 Hz down to the minimum BER. Then write the resulting values into the config.

ImportantDo not try to "tweak" the radio's frequency to match the hotspot's drift — the radio must stay on the channel's official frequency. It is the hotspot that gets corrected, via RXOffset/TXOffset.

Bottom line: what to get for DMRhub

For a personal node on the DMRhub network it's simple:

A Chinese clone for 700–1000 rubles from AliExpress is perfectly usable — after calibration it works reliably. An original ZUMspot costs more, but its TCXO is more accurate and calibration may not be needed at all.

A ready-made image for your hotspot

Don't build the system from scratch. The RadioStar image already contains a flashed MMDVM, a configured host and a connection to the DMRhub network — just write it to a microSD and power up. MMDVM_HS_Hat (simplex) is supported out of the box.

Sources

  1. MMDVM_HS_Dual_Hat repository (phl0), description of the duplex architecture — github.com/phl0/MMDVM_HS_Dual_Hat
  2. MMDVM_HS repository (juribeparada/CA6JAU), README with TCXO parameters and RXOffset/TXOffset calibration — github.com/juribeparada/MMDVM_HS
  3. MMDVM Multi-Mode Duplex Hotspot — explanation of how duplex works, TS1/TS2 — commswg.site
  4. Fixing a Chinese MMDVM_HS_Dual_Hat — hands-on experience with clones — noahstride.co.uk