Analoge FM-Relais im Amateurfunk digital vernetzen

Durch die Überalterung unserer Bevölkerung, sowie im Amateurfunk,  gibt es immer mehr FM-Sprachrelais im Amateurfunk, die nicht mehr genutzt werden. Die neue Generation nutzt lieber die neuen digitalen Betriebsarten wie C4FM, DMR und D-Star.

Weitere Infos zu den digitalen Betriebsarten gibt es unter :
https://projekt-pegasus.net/ . Dort findet man weitreichende Infos zu dem Pegasus Projekt, welches verschiedene Technologien und digitale Betriebsarten in einen Verbund geschaltet hat. Nun wird es an der Zeit analoge Funktechnik, die nicht schlechter sein muss, in eine Digitalisierung zu bringen.

Problematik:

Eine Digitalisierung ist notwendig. Warum ?

  • Weil Bereich Amateurfunk Nachwuchssorgen hat um junge Menschen zu begeistern
  • FM-Relais werden nicht mehr genutzt und verwaisen
  • Alte Relais werden nicht mehr gepflegt und mit neuer Technik ausgestattet
  • Sehr gute Relais Standort gehen verloren
  • und vieles mehr …

Herausforderung :

Wie bekommen wir es hin, junge Menschen für Sprechfunk und Amateurfunk zu begeistern, indem wir Möglichkeiten schaffen der Kommunikation mit Vernetzung. Junge Menschen haben alle ein Smartphone und da ist Vernetzung mit Messenger normal. Es muss für Sprachrelais die in FM senden eine Möglichkeit der Vernetzung geben. Ich rede hier ganz bewusst NICHT von „C4FM, DMR, D-Star“ die bereits digitale Betriebsarten sind. In diesem Artikel soll beschrieben werden, wie analoge Sprache, digitalisiert wird und damit eine Möglichkeit des Transports via Internet gehen könnte. HALT da kommt gleich wieder der Einwand der alten Funkamateure: „Funkbetrieb über das Internet hat nichts mit Amateurfunk zu tun“. Diese Aussage ärgert mich jedes Mal so massiv, dass ich mir das Aussterben dieser Analogen Dinosaurier wünsche. Aber wir brauchen die leider noch, da im Amateurfunk massive Nachwuchsprobleme herrschen.

Lösung:

Nun bin ich die Tage auf eine Software aufmerksam gemacht worden mit den Namen „SvxLink“.

SvxLink wurde von Tobias (SM0SVX) 2002 ins Leben gerufen und wird fortlaufend weiterentwickelt.
Es besteht aus einem Haupt- bzw. Kernprogramm und sogenannten Logiken, die beliebig kombinierbar sind. Jeder Logik kann verschiedenen Modulen zugeordnet werden. Echolink ist ein Modul, welches nur eines von vielen anderen vorhandenen Modulen ist, somit unterscheidet sich SvxLink vom klassischen Echolink  erheblich. Der Betrieb ist nicht nur auf ein einzelnes Relais/Simplex-Link beschränkt, sondern  theoretisch beliebig viele Relais/Links unabhängig voneinander konfigurieren und betrieben werden.

Eine Stereo-Soundkarte kann mit beiden Stereokanäle getrennt genutzt werden. Z.B. der linke Kanal steuert ein 70cm-Relais, der rechte Kanal ein 23cm-Relais und beide selbstverständlich unabhängig voneinander oder auch miteinander.
Die Präsentationsebene wird durch ein in SvxLink implementiertes Ereignisbehandlungssystem realisiert. Bei jedem nur möglichen Ereignis wie z.B. Öffnen oder Schließen der Rauschsperre,  wird eine TCL-Funktion aufgerufen, in die der SvxLink-Betreiber eigene Routinen bauen kann.

In dem nachfolgenden Video, zeige ich einen kleinen Einblick wie es funktioniert wenn es fertig ist.

Digitalisierung von analogen FM Sprachrelais
Dieses Video ansehen auf YouTube.

 

Technische Umsetzung:

Erstaunlicherweise habe ich für den Raspberry Pi ein fertiges Software Paket im Repository gefunden.
Zu installieren geht es mit:

sudo apt install svxlink-server

Nun konfigurieren jetzt die zentrale Steuerdatei im Verzeichnis „/etc/svxlink/svxlink.conf“

###############################################################################
#                                                                             #
#                Configuration file for the SvxLink server                    #
#                                                                             #
###############################################################################

[GLOBAL]
#MODULE_PATH=/usr/lib/arm-linux-gnueabihf/svxlink
LOGICS=SimplexLogic
CFG_DIR=svxlink.d
TIMESTAMP_FORMAT="%c"
CARD_SAMPLE_RATE=48000
#CARD_CHANNELS=1
LOCATION_INFO=LocationInfo
#LINKS=LinkToR4

[SimplexLogic]
TYPE=Simplex
RX=Rx1
TX=Tx1
MODULES=ModuleHelp,ModuleParrot,ModuleEchoLink,ModuleTclVoiceMail,ModuleMetarInfo
CALLSIGN=DG8RAD
SHORT_IDENT_INTERVAL=60
LONG_IDENT_INTERVAL=60
#IDENT_ONLY_AFTER_TX=4
#EXEC_CMD_ON_SQL_CLOSE=500
EVENT_HANDLER=/usr/share/svxlink/events.tcl
DEFAULT_LANG=de_DE
RGR_SOUND_DELAY=5
REPORT_CTCSS=123
#TX_CTCSS=ALWAYS
MACROS=Macros
FX_GAIN_NORMAL=0
FX_GAIN_LOW=-12
#ACTIVATE_MODULE_ON_LONG_CMD=4:EchoLink
#QSO_RECORDER=8:QsoRecorder
#ONLINE_CMD=998877
#MUTE_RX_ON_TX=1
#MUTE_TX_ON_RX=1
#STATE_PTY=/var/run/svxlink/state

[RepeaterLogic]
TYPE=Local
RX=Rx1
TX=Tx1
MODULES=ModuleHelp,ModuleParrot,ModuleEchoLink,ModuleTclVoiceMail,ModuleMetarInfo
CALLSIGN=MYCALL
SHORT_IDENT_INTERVAL=10
LONG_IDENT_INTERVAL=60
#IDENT_ONLY_AFTER_TX=4
#EXEC_CMD_ON_SQL_CLOSE=500
EVENT_HANDLER=/usr/share/svxlink/events.tcl
DEFAULT_LANG=de_DE
RGR_SOUND_DELAY=0
REPORT_CTCSS=136.5
TX_CTCSS=SQL_OPEN
MACROS=Macros
#SEL5_MACRO_RANGE=03400,03499
FX_GAIN_NORMAL=0
FX_GAIN_LOW=-12
#QSO_RECORDER=8:QsoRecorder
#NO_REPEAT=1
IDLE_TIMEOUT=30
OPEN_ON_1750=1000
#OPEN_ON_CTCSS=136:2000
#OPEN_ON_DTMF=*
#OPEN_ON_SQL=5000
#OPEN_ON_SEL5=01234
#OPEN_SQL_FLANK=OPEN
#OPEN_ON_SQL_AFTER_RPT_CLOSE=10
IDLE_SOUND_INTERVAL=3000
#SQL_FLAP_SUP_MIN_TIME=1000
#SQL_FLAP_SUP_MAX_COUNT=10
#ACTIVATE_MODULE_ON_LONG_CMD=4:EchoLink
#IDENT_NAG_TIMEOUT=15
#IDENT_NAG_MIN_TIME=2000
#ONLINE_CMD=998877
#STATE_PTY=/var/run/svxlink/state

[LinkToR4]
CONNECT_LOGICS=RepeaterLogic:94:SK3AB,SimplexLogic:92:SK3CD
#DEFAULT_ACTIVE=1
TIMEOUT=300
#AUTOACTIVATE_ON_SQL=RepeaterLogic

[Macros]
1=EchoLink:9999#
9=Parrot:0123456789#
03400=EchoLink:9999#

[QsoRecorder]
REC_DIR=/var/spool/svxlink/qso_recorder
#MIN_TIME=1000
MAX_TIME=3600
SOFT_TIME=300
MAX_DIRSIZE=1024
#DEFAULT_ACTIVE=1
#TIMEOUT=300
#QSO_TIMEOUT=300
#ENCODER_CMD=/usr/bin/oggenc -Q \"%f\" && rm \"%f\"

[Voter]
TYPE=Voter
RECEIVERS=Rx1,Rx2,Rx3
VOTING_DELAY=200
BUFFER_LENGTH=0
#REVOTE_INTERVAL=1000
#HYSTERESIS=50
#SQL_CLOSE_REVOTE_DELAY=500
#RX_SWITCH_DELAY=500

[MultiTx]
TYPE=Multi
TRANSMITTERS=Tx1,Tx2,Tx3

[NetRx]
TYPE=Net
HOST=remote.rx.host
TCP_PORT=5210
#LOG_DISCONNECTS_ONCE=0
AUTH_KEY="Change this key now!"
CODEC=S16
#SPEEX_ENC_FRAMES_PER_PACKET=4
#SPEEX_ENC_QUALITY=4
#SPEEX_ENC_BITRATE=15000
#SPEEX_ENC_COMPLEXITY=2
#SPEEX_ENC_VBR=0
#SPEEX_ENC_VBR_QUALITY=4
#SPEEX_ENC_ABR=15000
#SPEEX_DEC_ENHANCER=1
#OPUS_ENC_FRAME_SIZE=20
#OPUS_ENC_COMPLEXITY=10
#OPUS_ENC_BITRATE=20000
#OPUS_ENC_VBR=1

[NetTx]
TYPE=Net
HOST=remote.tx.host
TCP_PORT=5210
#LOG_DISCONNECTS_ONCE=0
AUTH_KEY="Change this key now!"
CODEC=S16
#SPEEX_ENC_FRAMES_PER_PACKET=4
#SPEEX_ENC_QUALITY=4
#SPEEX_ENC_BITRATE=15000
#SPEEX_ENC_COMPLEXITY=2
#SPEEX_ENC_VBR=0
#SPEEX_ENC_VBR_QUALITY=4
#SPEEX_ENC_ABR=15000
#SPEEX_DEC_ENHANCER=1
#OPUS_ENC_FRAME_SIZE=20
#OPUS_ENC_COMPLEXITY=10
#OPUS_ENC_BITRATE=20000
#OPUS_ENC_VBR=1

[Rx1]
TYPE=Local
AUDIO_DEV=alsa:plughw:1
AUDIO_CHANNEL=0
SQL_DET=VOX
SQL_START_DELAY=0
SQL_DELAY=0
SQL_HANGTIME=2000
#SQL_EXTENDED_HANGTIME=1000
#SQL_EXTENDED_HANGTIME_THRESH=15
#SQL_TIMEOUT=600
VOX_FILTER_DEPTH=20
VOX_THRESH=400
#CTCSS_MODE=2
CTCSS_FQ=123
#CTCSS_SNR_OFFSET=0
#CTCSS_OPEN_THRESH=15
#CTCSS_CLOSE_THRESH=9
#CTCSS_BPF_LOW=60
#CTCSS_BPF_HIGH=270
SERIAL_PORT=/dev/ttyS0
SERIAL_PIN=CTS
#SERIAL_SET_PINS=DTR!RTS
#EVDEV_DEVNAME=/dev/input/by-id/usb-SYNIC_SYNIC_Wireless_Audio-event-if03
#EVDEV_OPEN=1,163,1
#EVDEV_CLOSE=1,163,0
#GPIO_SQL_PIN=gpio30
#PTY_PATH=/tmp/rx1_sql
#HID_DEVICE=/dev/hidraw3
#HID_SQL_PIN=VOL_UP
#SIGLEV_DET=TONE
SIGLEV_SLOPE=1
SIGLEV_OFFSET=0
#SIGLEV_BOGUS_THRESH=120
#TONE_SIGLEV_MAP=100,84,60,50,37,32,28,23,19,8
SIGLEV_OPEN_THRESH=30
SIGLEV_CLOSE_THRESH=10
DEEMPHASIS=0
#SQL_TAIL_ELIM=300
PREAMP=3
PEAK_METER=1
DTMF_DEC_TYPE=INTERNAL
DTMF_MUTING=1
DTMF_HANGTIME=40
DTMF_SERIAL=/dev/ttyS0
#DTMF_PTY=/tmp/rx1_dtmf
#DTMF_MAX_FWD_TWIST=8
#DTMF_MAX_REV_TWIST=4
#1750_MUTING=1
#SEL5_DEC_TYPE=INTERNAL
#SEL5_TYPE=ZVEI1
#FQ=433475000
MODULATION=FM
#WBRX=WbRx1

[WbRx1]
#TYPE=RtlUsb
#DEV_MATCH=0
#HOST=localhost
#PORT=1234
#CENTER_FQ=435075000
#FQ_CORR=0
#GAIN=0
#PEAK_METER=1
#SAMPLE_RATE=960000

[Tx1]
TYPE=Local
AUDIO_DEV=alsa:plughw:1
AUDIO_CHANNEL=0
PTT_TYPE=NONE
PTT_PORT=/dev/ttyS0
PTT_PIN=DTRRTS
#HID_DEVICE=/dev/hidraw3
#HID_PTT_PIN=GPIO3
#SERIAL_SET_PINS=DTR!RTS
#PTT_HANGTIME=1000
TIMEOUT=300
TX_DELAY=500
#CTCSS_FQ=136.5
#CTCSS_LEVEL=9
PREEMPHASIS=0
DTMF_TONE_LENGTH=100
DTMF_TONE_SPACING=50
DTMF_DIGIT_PWR=-15
#MASTER_GAIN=0.0

[LocationInfo]
APRS_SERVER_LIST=euro.aprs2.net:14580
STATUS_SERVER_LIST=aprs.echolink.org:5199
LON_POSITION=12.10.00E
LAT_POSITION=51.10.00N
CALLSIGN=EL-DG8RAD
FREQUENCY=432.800
TX_POWER=5
ANTENNA_GAIN=3
ANTENNA_HEIGHT=5m
#ANTENNA_DIR=-1
PATH=WIDE1-1
BEACON_INTERVAL=10
TONE=123
COMMENT=SvxLink by SM0SVX (svxlink.sourceforge.net)

 

Als Hardware hab ich einen Raspberry Pi 3, USB-Soundkarte, SD-Speicherkarte, Portabler Lautsprecher im Einsatz, sowie ein Funkgerät, wo ich aber nur den Audioausgang nutze im Augenblick für den Testaufbau.

Hardware Setup für SvxLink
Hardware für einen Testaufbau

Wenn die USB-Soundkarte angesteckt wird, sollte ein weiteres Gerät sichtbar sein.
Prüfen geht mit „aplay -l“ und es sollte folgende Ausgabe vorhanden sein :

Soundkarte 1
Soundkarte 1

Es sollte die Karte 1 zu sehen sein damit die Konfiguration oben mit „/etc/svxlink/svxlink.conf“ funktioniert.
Hinweis: Wenn die Karte eine andere Nummerierung hat, wird SvxLink nicht starten.

Nun müssen wir noch die Deutschen Sprachfiles installieren, damit die Sprachausgaben in Deutsch erfolgen können.

Download des Archivfiles:
https://www.dropbox.com/sh/j7oy376qnuaa8q0/AACWQ5pbwZRnXtZ68gZBPU8ua?dl=0

sudo mkdir /usr/share/svxlink/sounds/de_DE
cd /usr/share/svxlink/sounds/de_DE
sudo gzip -d deutsch.tar.gz
sudo tar -xvf deutsch.tar  

Nun verkabeln wir die ganze Sache :

Soundkarte – Mikrofon -> Funkgerät Audio Ausgang
Soundkarte – Lautsprecher -> BT-Lautsprecher mit Kabel verbinden

Nun passen wir die Datei „/etc/svxlink.d/ModuleEchoLink.conf“ an, damit wir direkt EchoLink Betrieb machen können. Zu beachten ist hierbei „CALLSIGN“, „PASSWORD“ und „SYSOPNAME“ mit Deinen Parametern ersetzt werden muss, sonst startet SvxLink nicht.

[ModuleEchoLink]
NAME=EchoLink
ID=2
TIMEOUT=1200
ALLOW_IP=192.168.10.0/24
#DROP_INCOMING=^()$
#REJECT_INCOMING=^()$
#ACCEPT_INCOMING=^(.*)$
#REJECT_OUTGOING=^()$
#ACCEPT_OUTGOING=^(.*)$
#REJECT_CONF=0
#CHECK_NR_CONNECTS=2,300,120
SERVERS=servers.echolink.org
CALLSIGN=DEINCALL-L
PASSWORD=XXXXX
SYSOPNAME=Joachim
LOCATION=[Svx] Munich, Raspi
#PROXY_SERVER=the.proxy.server
#PROXY_PORT=8100
#PROXY_PASSWORD=PUBLIC
#BIND_ADDR=10.20.30.40
MAX_QSOS=10
MAX_CONNECTIONS=11
LINK_IDLE_TIMEOUT=1200
#AUTOCON_ECHOLINK_ID=9999
#AUTOCON_TIME=1200
USE_GSM_ONLY=1
DEFAULT_LANG=de_DE
DESCRIPTION="You have connected to a SvxLink node,\n"
            "a voice services system for Linux with EchoLink\n"
            "support.\n"
            "Check out http://svxlink.sf.net/ for more info\n"
            "\n"
            "QTH:     Munich\n"
            "QRG:     Simplex link on 432.800 MHz\n"
            "CTCSS:   123 Hz\n"
            "Trx:     FT-857\n"
            "Antenna: Mobile\n"

ModuleEchoLink.conf (END)

Starten von SvxLink mit folgendem Befehl:

sudo -u svxlink svxlink 

Wenn alles richtig konfiguriert ist, sollte die Bildschirmausgabe wie unten angezeigt aussehen.

Nun drücken wir „*“ und „#“ und schon sollte aus dem Lautsprecher eine Stationansage ausgegeben werden.

Startbildschirm für SvxLink
Ausgabe bei Start von SvxLink

Wir installieren nun auf unserem Smartphone die App „EchoLink“ aus dem Google Playstore

https://play.google.com/store/apps/details?id=org.echolink.android&hl=de

Damit können wir jetzt unseren eigenen SvxLink Server via EchoLink verbinden.
Unter der „Node Types“ wählen wir „Links“ aus und suchen unser eigenes Rufzeichen. in meinem Fall ist es „DG8RAD-L“ wobei das Suffix „L“ für Link steht, sofern es richtig in der ModulesEchoLink.conf eingetragen wurde.  Ab sofort kann man eine Echolink Verbindung zu anderen Echolink Usern aufbauen ohne das Funkgerät zu benötigen. 

 

Echolink Verbindung via SvxLink-Server

Damit der Dienst SvxLink startet, geben wir folgenden Befehl ein und dannach können wir uns auf dem Raspberry Pi via SSH wieder abmelden. Der Dienst läuft automatisch im Hindergrund weiter.

sudo /usr/bin/svxlink --pidfile /home/svxlink/svxlink.pid --runasuser svxlink --logfile /home/svxlink/svxlink.log --daemon

Wenn auf der Konsole „7385#“ eingegeben wird, verbindet man sich z.B. mit dem Echolink Relais DB0EL in München. Über die Echolink App auf dem Smartphone können hier bereits Funkverbindungen (QSO’s) aktiv durchgeführt werden. Deshalb hier der Hinweis: Achtung bei Verbindungen zu anderen Echolink Relais oder Konferenzräume , es wird aktiv übertragen mit Deinem Rufzeichen.

Die Anbindung an ein Funkgerät mit automatischer PTT Schaltung, Squelch Steuerung und Mikrofon Anbindung zur Soundkarte fehlt in diesem Statium noch komplett. Dies wird vermutlich die Tage in einem weiteren Blogartikel erfolgen. SvxLink ist eine sehr mächtige Software die noch weitaus mehr kann, aber im Detail gar nicht in einem einzigen Blogartikel beschrieben werden kann.

Viel Spaß beim Hobby Amateurfunk und basteln, wünscht Joachim

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.