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,die Stellenweise auch zusätzliche TGs vorhalten, stellvertretend sei hier der IPSC2-DMR-DL genannt:
ipsc.dmr-dl.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