My MMDVM Hotspot

Publish date: Apr 12, 2020
Tags: ham radio mmdvm hotspot nextion dmr c4fm equipment

This article was first published as a page on March 15 2020. I moved this page to the post section on April 12 2020 to keep a compact menu line on the top.

The content of this article may change continuously. This website does not reflect an up-to-date state of my hotspot but it gives an idea of my current setup.
This page is totally outdated. Development is quick, the reflections to this website are not. Sorry for now, but I’ll keep track of this in the upcoming year…


April 12 2020

March 15 2020

General information

My Hotspot runs on a Raspberry Pi 4B with 4GB RAM. It is stable most of the time and the temperature is around 38-40°C normally – if PHP runs crazy it went up to 52°C sometimes. But since I disabled the option extended lookup (show names) in the dashboard it stays pretty much on 40°C. I also disabled the option that shows talk group names.

I only run MMDVMHost connected to the IPSC2-OE-DMO server. IPSC2 holds some of the Brandmeister talkgroups like 2327 so I thought I will ditch DMRGateway. The connected 7 inch screen displays the five last heard stations (Callsign, Name, Time, Duration, Slot, Talkgroup). An online dashboard is also available – I use the dashboard made by Kim DG9VH.

I made another post when I did my first setup with Pi-Star.


my hotspot

The Dashboard

Dashboard by Kim DG9VH


Raspberry Pi 4B

The main unit is probably the Raspberry Pi 4B. I got myself the version with 4GB RAM.

My RaspberryPi 4B


This is the duplex variant of MMDVM_HS_Hat. It uses MMDVM_HS by Andy CA6JAU.


Nextion Display

I got myself a 7 inch screen from Nextion and built it into a metal plate that I bent and welded.

7 inch dashboard



Makefile Makefile.Pi - wiringPi installed

sudo apt-get install wiringpi

Don’t ask me if you need this. I thought it won’t harm if I install it.

Make MMDVMHost with the Pi-Makefile.

make -f Makefile.Pi


I had this once running but I ditched DMRGateway because I did not use any other Brandmeister talkgroup than 2327 – which is also available on the IPSC2 network.

If you use DMRGateway you want to use localhost as the DMR Network server in your MMDVM.ini file.


DAPNET is a cool thing to play with, but it is not really the way I want messages delivered. Sometimes messages did not arrive, or days later. Also you won’t be able to talk on DMR if POCSAG/DAPNET was just sending out messages (well, that is what MultiMode is).

Besides that, my pager died.

MMDVM Firmware

Warning! When I had the beta firmware flashed I had to reset the modem with that little SMD button on the platine first to use M/m mode (DMR Simplex 1031Hz test pattern (CC1 ID1 TG9)). Otherwise it hang and I wasn’t able to stop the transmitter (even when I killed MMDVMCal).

This site is a good resource if you are new to this.

I guess the best thing here is to read along the links on the github repo. Also have a look for files that end with .md – those are Markdown files and contain useful information most of the time.

#if !defined(CONFIG_H)
#define  CONFIG_H

#define ENABLE_ADF7021
#define DUPLEX
#define ADF7021_12_2880
#define AD7021_GAIN_AUTO
#define STM32_USART1_HOST
#define I2C_ADDR 0x22


Make the modem flashable

Flashing will fail when you try to flash the firmware without this connection.


But it helps when you got a pair of tweezers in your house. Just make sure to get good contact to the metal.

Flashing will fail if you cannot hold this steady for the whole flashing process!

When it fails, just flash again until you get 100%. Reboot the device after that.

Once you cloned the firmware repository you can select the version v1.4.8 by checking out the tag v1.4.8.

git checkout v1.4.8


At the moment the hotspot sits behind the window and works quite good.

Another picture #1

The screen is not working 100% but I try my best to improve it every now and then. It is very hard to have all the used timers set up correctly and I’m still not sure how precise these timers work – I have mixed feelings about this and I think that they are not as precise as I would need them :)

Another picture #2

It’s not perfect but hey, we’re hams right?