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.