Build your own homebrew MMDVM hotspot

Software part - HotSpot firmware

Compiling and MMDVM firmware loading

The STM32F103 board will receive the firmware. The installation must be able to be done with Windows, but some sudden complications for the installation of the drivers, I propose you to compile and load the firmware from your Raspberry Pi. Switch on the Raspberry Pi, connect it to the power supply and  to the network (initially RJ45)

The firmware to load is MMDVM HS which is dedicated to HotSpot


We load from the console opened remotely on the Raspberry Pi (I use Putty. exe as explained in Raspberry Pi documentation).

Log in to your Raspberry Pi.

Download MMDVM HS

First of all, let’s install some prerequisites.

  • An update of installation resources

  • And module installations

Confirm by Yes


  • And installation of git to download directly the GitHub ressources

  • In /opt directory

  • Downloading HS MMDVM

  • Download the STM32F103 library

Firmware compilation and loading

First of all, let’s make sure that the configuration file validates all the functions necessary for the HotSpot.

The default configuration normally corresponds to our needs. Here is the expected file.

Let’s now start compiling MMDVM HS with bootloader (  bl option)

The compilation must end by indicating that the files  outp.hex  et outp.bin  have been generated.

To load the firmware, we use an RS232 TTL USB TTL adapter. When plugged into a USB port on the Raspberry Pi, a  /dev/ttyUSB0 port must appear  ( ls /dev/tty* ).

To load the firmware and bootloader on the STM32F103, we need to move one of the two jumpers (the BOOT0, positioned at the top, on side of pins B11, B10, B1) to position 1 (to the right).

The BOOT0 jumper is positioned on 1

Start the loading command.

Let’s return the jumper BOOT0 to position 0 (the two jumpers are in position 0, on the left). Restart the STM32F103 with a short press of the RESET button (close to the jumpers). The red LED of the STM32 starts flashing (rapidly then slowly).

Firmware update

If you want to update the firmware at another time, you will no longer need the USB interface or to set jumper BOOT0 to 1. Indeed, since the bootloader is already in place, the update is done directly via the USB link from the STM32F103 to the Raspberry Pi, the one that we will be in use for HotSpot normal operation. This is the serial port /dev/ACM0

In this case, to make the update, here are the commands, BOOT0 to 0 and via USB connection.

Installation and configuration MMDVMHost


We download MMDVMHost.

Configuring the MMDVM. ini file

Changes to the configuration file concern:

  • your callsign of course
  • the hotspot is simplex (Duplex=0)
  • simplex frequencies (TX and RX)
  • the MMDVM modem is connected to the Raspberry Pi via /dev/ACM0
  • in DMR, your identifier (ID)
  • the DMR (Master) server to connect


For DMR, the Brandmeister server configuration is based on the FR Master . You can find this information online at 

You can of course set other modes (D-Star, Fusion, P25) your HotSpot will be multi-mode.

Save your changes by quitting the editor with  CTRL-X  then   Yes


If you know the MMDVM repeater, you know what this phase of setting the transmission is. In the case of our HotSpot,  no calibratio required. The ADF7021 module will be emitted correctly from the outset.

First check of good functioning

We are now ready to launch the startup order for MMDVMHost, which will put our HotSpot into operation.

On the start page you will see a reminder of the Modem settings.

After the line  Opening the MMDVM , the firmware of the STM32F103 is read and tells you what its version is.

Your HotSpot is ready to transmit you…

For myself, my HotSpot only serves me in DMR, I added channels dedicated to the frequency of my Hotspot on my DMR radio (a Retevis RT3 equivalent to TYT MD380).

The radio on the simplex 435 MHz frequency

To finish the installation, I invite you to follow the article specifically dedicated to the automatic startup of MMDVMHost.

In the same way as I do, you could add DG9VH’s Dashboard monitoring software to help you check that the HotSpot is working properly. For my part I installed it in a subdirectory  /var/www/html/MMDVM/ in order to access it simply from   http://HotSpot.lan/MMDVM/  .

Hotspot connected wireless

When you’re on the go, it’s often easier to access the Internet via a wireless Wi-Fi network than a copper cable and an RJ45 plug. That’s why, using a Raspberry Pi version 3, or even the tiny Raspberry Pi 0 Wifi, I explain how to easily access the internet thanks to the installation of RaspAp.

Raspberry Pi Zero with Wifi

By sharing your 3G or 4G mobile internet connection in wifi, you will connect your HotSpot powered on a USB power pack. You will be completely mobile…


If you would be interested to participate in a possible future new grouped order (MMDVM board, SvxLink Card), leave your email below to be reported!

17 thoughts on “Build your own homebrew MMDVM hotspot

  1. Bonjour,
    très beau tuto Christian, merci !


    Very nice tutorial Christian, thanks !


  2. Hello, I have been reading your very informative website, as I am in the process of setting up my Hotspot.
    The question I have is what UHF frequency do you set your MMDVM to?

    Is it a special simplex frequency which is also programmed into your P25 ,DMR, Fusion, D-Star radios?

    Or is it a UHF frequency of a local reflector to your QTH.

    Sydney Australia

    Bonjour, J’ai lu votre site très instructif, car je suis en train de mettre en place mon Hotspot.
    La question que j’ai est : quelle fréquence UHF définissez-vous votre MMDVM?

    Est-ce une fréquence simplex spéciale qui est également programmée dans vos radios P25, DMR, Fusion, D-Star?

    Ou est-ce une fréquence UHF d’un réflecteur local à votre QTH.

    Sydney, Australie

    1. Hello Colin,

      The frequency of the hotspot is to be programmed in your stations in simplex (RX = TX).
      For example 435000

      Bonjour Colin,

      La fréquence du hotspot est à programmer dans vos postes en simplex (RX=TX)
      Par exemple 435000

  3. where is the PCB info file for gerbers and or also where can the PCB be made
    où est le fichier d’information PCB pour les gerbers et ou aussi où le PCB peut-il être fait?

  4. What is the current usage of the adf and stm and it be connected to the pi by a usb connection

    Quelle est la consommation actuelle de l’adf et du stm et lorsqu’il est connecté au pi par une connexion usb?

    1. Trent,

      I just measure, the electrical power consumption of this hotspot using a Raspberry Pi 3 is 0,36A under 5,25V. When disconnecting the hotspot (remains alone the pi), then the current is down to 0,34A.



      Je viens de mesurer, la consommation électrique de ce hotspot fonctionnant avec un Raspberry Pi 3 est de 0,36A sous 5,25V. Lors de la déconnexion du hotspot (seul le pi reste) le courant est réduit à 0,34A.

  5. Il suffit de bien suivre Le tuto et ça fonctionne.
    L’ensemble “zumspot libre” ainsi programmé fonctionne très bien logiciel pi-star.
    73 à tous F5jwx.

    Just follow the tutorial and it works.
    The “free zumspot” set thus programmed works very well pi-star software.
    73 to all F5jwx

  6. Bonjour
    Merci pour tous vos tutos.
    J ai une question sur le module RF7021SE.
    Serait il possible de utiliser ce module en RX dans un relai mmdvm afin de remplacer un TRX Motorola ou autre. Est il suffisamment sensible ?
    Merci de votre retour
    Manu f4flq

    Thank you for all your tutorials.
    I have a question about the RF7021SE module.
    Would it be possible to use this module in RX in a mmdvm repeater to replace a Motorola TRX or other. Is he sensitive enough?
    Thank you for your feedback
    Manu f4flq

    1. Bonjour Manu,

      La datasheet du composant ADF7021 indique une bonne sensibilité théorique de -122 dBm, soit 0,18 µV (pour modulation 2FSK). J’ai donc l’impression que cela doit pouvoir être un bon récepteur.

      Pour en faire un relais, il vous faudra fonctionner MMDVM_HS en mode duplex, avec 2 ADF7021. Voici un exemple.
      MMDVM Full duplex
      Vu sur

      Hello Manu,

      The datasheet of component ADF7021 indicates a good theoretical sensitivity of -122 dBm, i. e. 0.18 µV (for 2FSK modulation). So I have the impression that it must be a good receiver.

      To make it a repeater, you will need to run MMDVM_HS in duplex mode, with 2 ADF7021. Here is an example.

      Viewed on

  7. Excellent tutorial. I have made mine on a piece of strip board. The trouble is is that the ADF7021 does not seem to work. Your board looks slightly different to mine. Can you provide a closeup of the TXCO please? Maybe I have soldered the oscillator on upside down!

    Keep up the good work,


    Excellent tutoriel. J’ai monté le mien sur un bout de plaque d’essai. Le problème est que l’ADF7021 ne semble pas fonctionner. Votre platine est légèrement différente de la mienne. Pouvez-vous fournir un gros plan du TXCO s’il vous plaît? J’ai peut-être soudé l’oscillateur à l’envers!

    Continuez le bon travail,


    1. Hello John,

      Thanks for greatings.
      Here is a closeup; Pin 1 on the TCXO is left down (printed dot). This corner have no connected pin (according to the TCXO datasheet)


      Je vous remercie.
      Voici le gros plan. Pin 1 est en bas à gauche sur le TCXO. A ce coin, il n’y a pas de pin connecté (voir la fiche constructeur du TCXO)


      1. Thank you, I think I just need to recheck my soldering

        Merci, je crois que j’ai juste besoin de revérifier ma soudure.

  8. Bonjour,

    Existe-t-il à votre avis un logiciel qui tourne sous Android pour utiliser avec ma tablette.?
    Merci de votre réponse

    Do you think there is a software that runs under Android to use with my tablet.?
    Thank you for your answer

    1. Bonjour Marc,

      Vous pouvez accédez au tableau de bord RaspAP par un navigateur internet depuis votre tablette.

      Hello, Marc,

      You can access the RaspAP dashboard via a web browser from your tablet.

Leave a Reply

Your email address will not be published. Required fields are marked *