Bild "Nutzung:military-662861_640.jpg"

Installation des YSFGateway

Voraussetzungen

Wir gehen der Einfachheit halber davon aus, dass man das YSFGateway zu einem bereits laufenden MMDVMHost auf einem Raspberry Pi mit Debian Jessie installiert.

Installation

Damit die Quelldateien bezogen werden können und später auch kompiliert werden können, ist die Installation von git sowie den build-essentials notwendig, was man mit

> sudo apt-get update
> sudo apt-get install build-essential git

erledigen kann.

Anschließend legt man sich in seinem Home-Verzeichnis praktischerweise ein Unterverzeichnis "src" an:

> mkdir src

In dieses Verzeichnis wechselt man hinein und erstellt eine lokale Kopie des Repositories von G4KLX:

> git clone https://github.com/g4klx/YSFClients.git

Dieser Befehl legt ein neues Verzeichnis "YSFClients" innerhalb des Verzeichnisses "src" an und kopiert dorthin die Quelldateien.

Im Anschluss wechselt man mit

> cd YSFClients/YSFGateway

in das YSFGateway-Verzeichnis und übersetzt das Gateway mit

> make clean all

Nach dem Compiler-Lauf kopiert man die ausführbare Datei mit

> sudo cp YSFGateway /usr/local/bin

in das entsprechende Systemverzeichnis. Dann legt man noch ein Konfigurationsverzeichnis an mit

> sudo mkdir /etc/YSFGateway

und kopiert die Muster-Konfigurationsdatei mit

> sudo cp YSFGateway.ini /etc/YSFGateway

dort hinein.

Konfiguration

Anschließend öffnet man die Konfigurationsdatei mit

> sudo nano /etc/YSFGateway/YSFGateway.ini

in einem Editor und passt die Konfiguration folgendermaßen an die eigenen Bedürfnisse an:

[General]
# Hier bitte das eigene Rufzeichen eintragen
Callsign=DG9VH
# Für Repeater wählt man RPT, für einen Hotspot ND
# Suffix=RPT
Suffix=ND
#Hier trägt man die DMRID ein
Id=2625094
RptAddress=127.0.0.1
RptPort=3200
LocalAddress=127.0.0.1
LocalPort=4200
WiresXMakeUpper=1
WiresXCommandPassthrough=0
Debug=0
Daemon=0

[Info]
# Korrekte Sende-Empfangs-Frequenzen eintragen
RXFrequency=433612500
TXFrequency=433612500
# Sendeleistung nicht vergessen
Power=0.01
# Hier kommen die geographischen Daten rein
Latitude=49.231993
Longitude=6.834816
# Hier die Höhe der Antenne (über Grund, NICHT über NN)
Height=7
# Der Standort
Name=Voelklingen
# Eine kurze Beschreibung der verwendeten Hardware z.B.
Description=DVMEGA

[Log]
# Logging levels, 0=No logging
DisplayLevel=1
FileLevel=2
FilePath=/var/log/YSFGateway
FileRoot=YSFGateway

[APRS]
Enable=1
Address=127.0.0.1
Port=8673
Description=DVMEGA
Suffix=Y

[Network]
Startup=DE Germany
InactivityTimeout=300
Revert=1
Debug=0

[YSF Network]
Enable=1
Port=42000
Hosts=/etc/YSFGateway/YSFHosts.txt
ReloadTime=5
ParrotAddress=127.0.0.1
ParrotPort=42012
YSF2DMRAddress=127.0.0.1
YSF2DMRPort=42013
YSF2NXDNAddress=127.0.0.1
YSF2NXDNPort=42014
YSF2P25Address=127.0.0.1
YSF2P25Port=42015

[FCS Network]
Enable=1
Rooms=/etc/YSFGateway/FCSRooms.txt
Port=42001

[GPSD]
Enable=0
Address=127.0.0.1
Port=2947

[Remote Commands]
Enable=0
Port=6073


Nun muss man noch die YSFHosts-Datei mit

> sudo cp YSFHosts.txt /etc/YSFGateway

in das Konfigurationsverzeichnis kopieren.

Wichtiger Hinweis: Seit dem 30.09.2016 hat die YSFHosts.txt ein geändertes Format weil die YSFGateways seit dem Tag die Reflektoren nicht mehr eigenständig abfragen, sondern die Statusabfrage zentral durch die Registrierungsdatenbank erfolgt und die Gateways den Status der Reflektoren über die Hosts-Dateien ermitteln.

Es empfiehlt sich also in regelmäßigen Abständen, vielleicht alle 10 Minuten, die Hosts-Datei per Cron-Job wieder vom Server zu aktualisieren. Eine Beispielzeile, wie man diese mit sudo crontab -e hinterlegen kann ist folgende:

*/10 * * * * wget -qO /etc/YSFGateway/YSFHosts.txt http://register.ysfreflector.de/export_csv.php

Diese bewirkt, dass alle 10 Minuten per wget die YSFHosts.txt aktualisiert wird.

Automatischer Start beim Booten

Damit das Gateway als "Daemon" laufen kann (wie in der General-Sektion angegeben mit Daemon=1), muss man noch entsprechend einen Benutzer im System anlegen mit

> sudo groupadd mmdvm
> sudo useradd mmdvm -g mmdvm -s /sbin/nologin

Ebenso muss man noch das Logverzeichnis anlegen mit

> sudo mkdir /var/log/YSFGateway

und mit

> sudo chgrp mmdvm /var/log/YSFGateway

die Gruppe korrigieren. Nun noch mit

> sudo chmod g+w /var/log/YSFGateway

der Gruppe Schreibrechte geben und das wars.

Automatischer Start mit System-V (veraltet)

Um nun das Gateway auch automatisch starten zu können beim Systemstart, Bedarf es noch eines Startscriptes in /etc/init.d mit dem Namen YSFGateway.sh und folgendem Inhalt:

#!/bin/bash
### BEGIN INIT INFO
#
# Provides:             YSFGateway
# Required-Start:       $all
# Required-Stop:        
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Example startscript YSFGateway

#
### END INIT INFO
## Fill in name of program here.
PROG="YSFGateway"
PROG_PATH="/usr/local/bin/"
PROG_ARGS="/etc/YSFGateway/YSFGateway.ini"
PIDFILE="/var/run/YSFGateway.pid"
USER="root"

start() {
      if [ -e $PIDFILE ]; then
          ## Program is running, exit with error.
          echo "Error! $PROG is currently running!" 1>&2
          exit 1
      else
          ## Change from /dev/null to something like /var/log/$PROG if you want to save output.
      sleep 20
          cd $PROG_PATH
          ./$PROG $PROG_ARGS
          echo "$PROG started"
          touch $PIDFILE
      fi
}

stop() {
      if [ -e $PIDFILE ]; then
          ## Program is running, so stop it
         echo "$PROG is running"
         rm -f $PIDFILE
         killall $PROG
         echo "$PROG stopped"
      else
          ## Program is not running, exit with error.
          echo "Error! $PROG not started!" 1>&2
          exit 1
      fi
}

## Check to see if we are running as root first.
## Found at http://www.cyberciti.biz/tips/shell-root-user-check-script.html
if [ "$(id -u)" != "0" ]; then
      echo "This script must be run as root" 1>&2
      exit 1
fi

case "$1" in
      start)
          start
          exit 0
      ;;
      stop)
          stop
          exit 0
      ;;
      reload|restart|force-reload)
          stop
          sleep 5
          start
          exit 0
      ;;
      **)
          echo "Usage: $0 {start|stop|reload}" 1>&2
          exit 1
      ;;
esac
exit 0
### END

Dieses Script muss entsprechend noch ausführbar gemacht werden:

> sudo chmod +x /etc/init.d/YSFGateway.sh

Damit dieses Skript auch beim Start aktiviert wird, muss man es mit

> chkconfig YSFGateway.sh on

aktivieren. Evtl. ist auf dem System der Befehl chkconfig noch nicht installiert, das kann man mit

> sudo apt-get install chkconfig

nachholen.

Im Anschluss sollte mit

> sudo /etc/init.d/YSFGateway.sh start

das YSFGateway zu starten sein. Um beim Boot Probleme mit einer evtl. noch nicht ganz vollständigen Netzwerkverbindung zu vermeiden, wurde beim Start eine 20-sekündige Pause (sleep 20) eingebaut. Das kann natürlich individuell variiert werden.

Automatischer Start mit Systemd

Um per Systemd zu starten, legt man sich zunächst das Startscript an unter /etc/systemd/system/ mit dem Namen YSFGateway.service und folgendem Inhalt:

[Unit]
Description=YSFGateway
After=network.target

[Service]
ExecStartPre=/bin/sleep 30
Type=simple
Restart=always
ExecStart=/usr/local/bin/YSFGateway /etc/YSFGateway/YSFGateway.ini

[Install]
WantedBy=multi-user.target


Anschließend mittels folgender beiden Befehle den Service an sich aktivieren für den Start beim Boot und anschließend starten:

> sudo systemctl enable YSFGateway.service
> sudo systemctl start YSFGateway.service


Logfiles

Die Logs des Gateways finden sich im Verzeichnis /var/log in Dateien beginnend mit YSFGateway und dem Tagesdatum in ISO-Schreibweise, also z.B. YSFGateway-2016-07-05.log. Diese kann man ganz einfach mit

> tail -f /var/log/YSFGateway-2016-07-05.log

endlos mitlaufen lassen. Es wird für jeden Tag eine neue Datei angelegt.

Aktualisierung des YSFGateways

Hin und wieder wird man mal die YSFGateway-Software aktualisieren wollen, um eben die neuesten Entwicklungen zu nutzen. Hierzu wechselt man mit

> cd ~/src/YSFClients/YSFGateway

in das YSFGateway-Verzeichnis und ruft ein

> git pull

auf. Anschließend gleicht git die lokale Kopie mit dem Repository ab. Wenn Änderungen vorhanden sind, fährt man fort wie oben unter Installation mit einem

> make clean all

und kopiert wie oben beschrieben, die ausführbare Datei nachdem man mit

> sudo /etc/init.d/YSFGateway.sh stop

den Dienst gestoppt hat, in das Zielverzeichnis. Ggf. muss man noch neue Parameter in die YSFGateway.ini einarbeiten. Hierzu sollte man die Muster-Ini mit der eigenen am besten vergleichen und die Änderungen eintragen.


Letzte Änderung 14.11.2022, 18:00:09