MMDVMHost Installieren und Einrichten

Wer mit einem Hotspot am Raspberry Pi, oder ähnlichen Single Board Computern arbeiten möchte, und die volle Kontrolle über die Software behalten will, kommt um eine Installation von G4KLX’s MMDVMHost nicht herum.


Daher werde ich hier Schritt für Schritt zeigen, wie das ganze am Raspberry Pi installiert wird.
Vorausgesetzt wird ein fertig installiertes Raspbian.


Wer den Raspi nur als Hotspot nehmen möchte, kann auch Raspbian Lite nehmen, welches dann ohne jegliche grafische Oberfläche läuft. Damit nimmt das System weniger Platz ein und ist Ressourcen sparender.


System vorbereiten

Bei Raspberry Pis ab dem 3B und neuer muss, zum problemlosen Betrieb der Hotspot Hats, Bluetooth deaktiviert werden.

Dazu editieren Wir die Start Konfiguration des Raspi.
Alles folgende führen Wir auf der Konsole des Systems aus.

sudo nano /boot/config.txt

Im sich öffnenden Editor fügen Wir dann folgenden Eintrag hinzu :

dtoverlay=pi3-disable-bt

Jetzt speichern Wir mit STRG+O die Datei und beenden den Editor mit STRG+X.

Auch die Serial Port Konsole müssen Wir deaktivieren, den Hardware Port aber aktiv lassen.
Dies funktioniert am einfachsten über das Tool Raspi-Config, welches Wir jetzt aufrufen.

sudo raspi-config

Navigiert wird hier mit Tab, Pfeiltasten und Enter.

Hangeln Wir uns nun durch das „Menü“ zu den richtigen Einstellungen.

Wir navigieren jetzt zum Menü 5 Interfacing Options und gehen mit Enter hinein

Dort navigieren Wir zu P6 Serial ,und bestätigen wieder mit Enter.

Hier wählen Wir mit der TAB-Taste <Nein> aus, und bestätigen dies mit Enter.

Im jetzt erscheinenden Fenster wählen Wir <Ja>, und bestätigen wieder mit Enter.

Auch hier bestätigen Wir einfach mit Enter.

Jetzt beenden Wir Raspi-Config und anschließend starten Wir den Raspi neu.

sudo reboot now

Jetzt das System aktualisieren und auf den neuesten Stand bringen.

sudo apt-get update && sudo apt-get upgrade -y

Wenn dieser Schritt fertig ist, installieren Wir die benötigten Pakete, um MMDVMHost kompilieren zu können.

sudo apt-get install git build-essential cmake automake nano screen

Ramdisk einrichten

Um Schreibzugriffe auf der SD-Karte zu minimieren, richten Wir jetzt eine Ramdisk im System ein, auf der dann die Logfiles vom MMDVMHost abgelegt werden.

Als erstes erstellen Wir einen Mountpoint für die Ramdisk, also ein Leeres Verzeichnis, in dem die Ramdisk Daten „Virtuell“ liegen werden.

sudo mkdir /mnt/ramdisk

Nun legen Wir fest, welche Größe die Ramdisk bei jedem Systemstart bekommen soll, und verweisen das System auf den eben angelegten Ordner.
Dazu editieren Wir die Datei fstab.

sudo nano /etc/fstab

In der sich jetzt öffnenden Datei tragen Wir am Ende, in der letzten Zeile jetzt folgendes ein:

tmpfs /mnt/ramdisk tmpfs nodev,nosuid,size=64M 0 0

Anschließend speichern wir mit STRG + O und verlassen den Editor mit STRG+X .

Nun mounten Wir die neu erstellte Ramdisk, binden Sie also aktiv im System ein.

sudo mount -a

Mit df -h fragen Wir jetzt die Laufwerke ab.

Dateisystem          Größe    Benutzt    Verf.       Verw%    Eingehängt auf
/dev/root                29G   1,9G       26G        7%         /
devtmpfs                484M   0         484M        0%         /dev
tmpfs                   488M   0         488M        0%         /dev/shm
tmpfs                   488M   6,5M      482M        2%         /run
tmpfs                   5,0M   4,0K      5,0M        1%         /run/lock
tmpfs                   488M   0         488M        0%         /sys/fs/cgroup
tmpfs                    64M   25M        40M        39%        /mnt/ramdisk
/dev/mmcblk0p1   253M    52M   202M                  21%        /boot
tmpfs                    98M   0          98M        0%         /run/user/1000

In dieser Liste sollte jetzt unsere Ramdisk auftauchen, hier im Beispiel, der dritte Eintrag von unten.
Die gröbsten System arbeiten haben Wir jetzt bereits geschafft.


MMDVMHost installieren und kompilieren

Jetzt wechseln Wir in das Verzeichnis, in das Wir den MMDVMHost installieren wollen, in diesem Beispiel /opt , und laden uns die aktuelle Version des MMDVMHost aus dem Github runter.

cd /opt

sudo git clone https://github.com/g4klx/MMDVMHost

Wechseln Wir jetzt in das neu erstellte Verzeichnis MMDVMHost.

cd MMDVMHost

Nun kompilieren Wir uns den MMDVMHost.

sudo make

Das ganze braucht jetzt ein Weilchen, und Ihr seht den Erstellungsprozess Live im Terminal.


Konfigurieren der MMDVM.ini

Öffnen Wir uns jetzt die MMDVM.ini, die Konfigurationsdatei des MMDVMHost im Editor.

sudo nano MMDVM.ini

Im Abschnitt [General] Stellen Wir jetzt erst mal unsere nötigsten Daten ein.

[General]
Callsign=<Rufzeichen> <- Euer Rufzeichen
Id=<DMRID> <- Eure DMR-ID
Timeout=180
Duplex=<1|0> <- Bei Single Slot 0 (z.B. DVMega, HS_Hat), Bei Dual Slot 1 (z.B. HS_Dual_Hat)
# ModeHang=10
RFModeHang=10
NetModeHang=3
Display=None
Daemon=0

Nun bearbeiten Wir die Abschnitte [Info] und [Log].

[Info]
RXFrequency=435000000 <- Empfangsfrequenz Eures Hotspots
TXFrequency=435000000 <- Sendefrequenz Eures Hotspots
Power=1
Latitude=0.0 <-
Longitude=0.0 <- Geokoordinaten Eures Hotspots, damit dieser z.B. in Der Brandmeister Karte richtig angezeigt werden kann
Height=0 <- Höhe Eures Hotspots
Location=Nowhere <- Standort Eures Hotspots
Description=Multi-Mode Repeater <- Beschreibung Eures Hotspots
URL=www.google.co.uk <- Eure Website oder QRZ.com Seite

Achtung !!! Bei Single Slot Hats, müssen Sende- und Empfangsfrequenz gleich sein !!!

[Log]
# Logging levels, 0=No logging
DisplayLevel=1
FileLevel=1
FilePath=/mnt/ramdisk/ <- Hier wird die erstellte Ramdisk eingetragen
FileRoot=MMDVM

Jetzt bearbeiten Wir die Sektion [Modem].

[Modem]
# Port=/dev/ttyACM0
Port=/dev/ttyAMA0 <- Normalerweise der Standard Port bei Aufsteckplatinen
#Port=\\.\COM4
Protocol=uart
# Address=0x22
TXInvert=1
RXInvert=0
PTTInvert=0
TXDelay=100
RXOffset=0
TXOffset=0
DMRDelay=0
RXLevel=50
TXLevel=50
RXDCOffset=0
TXDCOffset=0
RFLevel=100 <- Steuert die Sendeleistung einiger Hotspots (z.B. OpenGD77)
# CWIdTXLevel=50
# D-StarTXLevel=50
# DMRTXLevel=50
# YSFTXLevel=50
# P25TXLevel=50
# NXDNTXLevel=50
# POCSAGTXLevel=50
# FMTXLevel=50
RSSIMappingFile=RSSI.dat
Trace=0
Debug=0

Bei den meisten Hostspots, wie HS_Hat oder HS_Dual_Hat, müssen die Werte wie RXOffset und TXOffset bzw. RXDCOffset und TXDCOffset noch mit einem SDR, oder experimentell ermittelt werden, bis die Geräte die Geringste Fehlerrate (BER) aufweisen.
Bei einem DVMega entfällt dieser Aufwand.

Wer mit China DMR Geräten, wie z.B. dem TyT MD380 arbeitet, sollte den Wert TXLevel auf 60 setzen, da einige mit dem Default Wert (50) Schwierigkeiten haben.

Nun ist die Sektion [DMR] zu Bearbeiten.

[DMR]
Enable=1 <- Zum Aktivieren 1, zum deaktivieren 0
Beacons=0
BeaconInterval=60
BeaconDuration=3
ColorCode=1
SelfOnly=0
EmbeddedLCOnly=0
DumpTAData=1
# Prefixes=234,235
# Slot1TGWhiteList=
# Slot2TGWhiteList=
CallHang=3
TXHang=4
# ModeHang=10
# OVCM Values, 0=off, 1=rx_on, 2=tx_on, 3=both_on
# OVCM=0

Weiter geht es mit der Sektion [DMR Network].

[DMR Network]
Enable=1 <- Zum Aktivieren 1, zum deaktivieren 0
Type=Direct <- "Direct" um ein einzelnes Netz ohne Gateway zu benutzen, "Gateway" bei Betrieb mit dem DMRGateway,um mehrere Netze zu nutzen.
Address=master1.bm262.de <- Adresse des zu nutzenden DMR Master Server
Port=62031 <- Port des zu nutzenden DMR Master Server
#Jitter=360
# Local=62032
Password=PASSWORD <- Passwort des zu nutzenden DMR Master Server, oder Euer selbst gesetztes Hotspot Passwort (Brandmeister)
# Options= <- Optionszeile bei Nutzung eines DMRplus IPSC2 Server
Slot1=1
Slot2=1 <- Bei Single Slot Hostspots nur Slot2 mit 1 aktivieren, bei Dual Slot Slot 1 und 2
# ModeHang=3
Debug=0

Die Brandmeister DL Server findet Ihr unter folgenden URLs:
Master 1: master1.bm262.de
Master 2: master2.bm262.de

Für DMRplus gibt es mehrere IPSC2 Server, stellvertretend sei hier der Hotspot IPSC2 von DG9FFM genannt:
IPSC2-DL-Hotspot: ipsc2-dl-hotspot.xreflector.net
Hier ist dann auch der Port auf 55555 zu ändern und das Passwort auf „passw0rd“.

Genauso könnt Ihr auch mit allen anderen Modes verfahren, da Ich diese selbst aber nicht nutze, kann ich daher nicht näher darauf eingehen. 😉

Die Grundeinrichtung ist damit geschafft.


MMDVMHost starten und nutzen

Nun könnt Ihr den MMDVMHost das erste mal starten.

sudo ./MMDVMHost MMDVM.ini

Achtung ! Startet Ihr MMDVMHost ohne Übergabe des MMDVM.ini Pfades, sucht der Host die .ini automatisch im Verzeichnis /etc !

Nun seht Ihr im Display die „Startsequenz“ laufen, sobald die Meldung Logged into the Master successfully ist der Hotspot erfolgreich im DMRNetz angemeldet.
Ihr könnt dann im Display auch Kommende und Gehende Rufe sehen.

Sollte nichts zu sehen sein, weder Fehler, noch Start-/Aktivitätsmeldungen, prüft bitte in der MMDVM.ini den Eintrag daemon=0/1 . Steht dort daemon=1 fährt der MMDVMHost als Hintergrunddienst, ohne jegliche Bildschirmausgabe.

daemon=0 startet ihn als normales Programm, mit Ausgabe aller relevanten Daten am Bilschirm. Diese Einstellung macht am meisten Sinn, da Ihr sonst auch in einer Screensession lediglich ein schwarzes Bild bekommt.


Autostart des MMDVMHost in einer Screen Session

Jetzt wollen Wir den Host aber nicht jedes Mal von Hand starten, und im Falle eines Falles auch auf seine Konsole zugreifen können.
Dazu nutzen Wir Systemd und den Terminal Multiplexer Screen.

Zuerst erstellen Wir eine „Systemd-Unit“, die den Start des Host automatisiert.

sudo nano /etc/systemd/system/mmdvmhost.service

In die sich jetzt öffnende, leere Datei Tragen Wir folgendes ein :

[Unit]
Description=MMDVM Host Service
After=syslog.target network.target

[Service]
User=root
WorkingDirectory=/opt/MMDVMHost
ExecStart=/usr/bin/screen -S MMDVMHost -D -m /opt/MMDVMHost/MMDVMHost /opt/MMDVMHost/MMDVM.ini
ExecStop=/usr/bin/screen -S MMDVMHost -X quit

[Install]
WantedBy=multi-user.target

Nun muss die neu erstellte systemd-Unit aktiviert werden.

sudo systemctl daemon-reload
sudo systemctl enable mmdvmhost.service

Ab sofort startet der MMDVMHost bei jedem Systemstart automatisch im Hintergrund.
Wenn nötig können Wir den Dienst über Systemd auch von Hand Starten, Stoppen, neu Starten oder seinen Status abfragen.

Befehle für Systemd :

sudo systemctl start mmdvmhost.service <- Startet MMDVMHost

sudo systemctl restart mmdvmhost.service <- startet MMDVMHost neu

sudo systemctl stop mmdvmhost.service <- stopt MMDVMHost

sudo systemctl status mmdvmhost.service <- Zeit den Status des MMDVMhost

sudo systemctl disable mmdvmhost.service <- deaktiviert den Autostart von MMDVMHost

sudo systemctl enable mmdvmhost.service <- aktiviert den Autostart von MMDVMHost

Um in die Terminal Ausgabe des MMDVMHost zu schauen, ruft Ihr diesen in seiner Screen Session auf.

sudo screen -r MMDVMHost

Ihr seht nun die Terminal Ausgabe des Hosts.
Um diese zu beenden gebt Ihr die Tastenkombination CTRL+A gefolgt von D ein.
Ihr kommt dann auf den normalen Kommandozeilen Prompt zurück, ohne den Host zu beenden.

Fertig !

Euer MMDVMHost ist jetzt konfiguriert und startet automatisch bei Starten Eures Raspberry Pi.

Wer mag kann jetzt zum Beispiel noch das DG9VH Dashboard, den DMRGateway oder andere Tools installieren