MMDVM_HS_Hat or Dual_Hat: which modem to choose
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.
- MMDVM_HS_Hat — a single ADF7021 chip. One antenna. Simplex: at any given moment the board is either transmitting or receiving, but never both at once.
- MMDVM_HS_Dual_Hat — two ADF7021 chips on one board. Two antenna ports (TX and RX). Duplex: one chip transmits while the second listens at the same time — on different frequencies.
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.
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:
- 14.7456 MHz — the most common, best tested, and recommended one. It is what ZUMspot and most quality boards use.
- 12.288 MHz — also supported by the firmware, but it has seen less testing in the community.
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
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:
- Frequency drift. A cheap TCXO can introduce an initial offset of several hundred hertz — up to a kilohertz. The ADF7021 has no AFC for 4FSK modes, so the offset is not compensated automatically. The result: high BER or no decoding at all.
- Soldering quality. Poor soldering of the crystal or the ADF7021 is sometimes found. You can only check it in practice.
- Markings. Some clones ship with an incorrect TCXO value on the silkscreen. Ask the seller or measure with a frequency counter.
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.
Bottom line: what to get for DMRhub
For a personal node on the DMRhub network it's simple:
- You are a single user with one radio — get the MMDVM_HS_Hat. It runs on TS2 in simplex. Cheap, simple, sufficient. This is exactly the modem used in the RadioStar image.
- You want to serve two or more operators at once on different timeslots, or you are building a mini-repeater for a garage or club — get the MMDVM_HS_Dual_Hat. You will need two antennas and a correct duplex-frequency setup.
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
- MMDVM_HS_Dual_Hat repository (phl0), description of the duplex architecture — github.com/phl0/MMDVM_HS_Dual_Hat
- MMDVM_HS repository (juribeparada/CA6JAU), README with TCXO parameters and RXOffset/TXOffset calibration — github.com/juribeparada/MMDVM_HS
- MMDVM Multi-Mode Duplex Hotspot — explanation of how duplex works, TS1/TS2 — commswg.site
- Fixing a Chinese MMDVM_HS_Dual_Hat — hands-on experience with clones — noahstride.co.uk