Build Your Own Gateway Navigation:
Build Your Own Gateway – Welcome
Build Your Own Gateway – Part 1: What You’ll Need
Build Your Own Gateway – Part 2: Installing SVXLink
Build Your Own Gateway – Part 3: Configuring SVXLink
Build Your Own Gateway – Part 4: Connecting To The Radio
Build Your Own Gateway – Part 5: Programming the Radio
Build Your Own Gateway – Part 6: Connecting to the Reflector
Build Your Own Gateway – Part 7: Adjusting Audio Levels

Configuring your SVXLink node

Once SVXLink has been installed on your Raspberry Pi, or Debian host you can go ahead and configure it. I’d recommend using a tool such as WINSCP to connect to your host to make editing files easy.

  1. Download the following svxlink.conf template file to your PC and open it in notepad: svxlink.conf template file
  2. Edit the following sections highlighted in red below with your details

    To enter your LAT/LONG in the config file, use google maps to find your LAT/LONG and then use the following calculator to convert your LAT/LONG to Degrees Minutes Seconds (6 digits in total): LAT LONG Calculator
###############################################################################
#                                                                             #
#                Configuration file for the SvxLink server                    #
#                                                                             #
###############################################################################

[GLOBAL]
MODULE_PATH=/usr/lib/arm-linux-gnueabihf/svxlink
#LOGICS=SimplexLogic,ReflectorLogic
LOGICS=ReflectorLogic,TetraLogic
#LINKS=ReflectorLink
CFG_DIR=svxlink.d
TIMESTAMP_FORMAT="%d.%m.%Y %H:%M:%S"
#TIMESTAMP_FORMAT="%c"
CARD_SAMPLE_RATE=48000
#SignalinkCard_Channels=1
#R12020_Card_Channels=2
CARD_CHANNELS=1 #Change this to CARD_CHANNELS=2 if using R1 2020 soundcard
LOCATION_INFO=LocationInfo
LINKS=LinkToDMOTetra
DEFAULT_LANG=en_US
DEBUG=2

[ReflectorLogic]
TYPE=Reflector
HOST=dashboard.vktetra.com
PORT=5300
CALLSIGN="YourCallSign-L" # example: VK2CJC-L
AUTH_KEY="ReflectorPasswordHere" # You will receive this password from me in step 5
DEFAULT_TG=505
MONITOR_TGS=91,214,235,262,505++
JITTER_BUFFER_DELAY=250
TG_SELECT_TIMEOUT=30
ANNOUNCE_REMOTE_MIN_INTERVAL=300
EVENT_HANDLER=/usr/share/svxlink/events.tcl
NODE_INFO_FILE=/etc/svxlink/node_info.json
MUTE_FIRST_TX_LOC=0
MUTE_FIRST_TX_REM=0
DEFAULT_LANG=en_US
#TMP_MONITOR_TIMEOUT=3600
AUDIO_CODEC=OPUS
UDP_HEARTBEAT_INTERVAL=15
OPUS_ENC_COMPLEXITY=10
QSY_PENDING_TIMEOUT=10
OPUS_ENC_BITRATE=300000
OPUS_ENC_VBR=1

[TetraLogic]
TYPE=Tetra
#RX=TetraRx
RX=Rx1
TX=Tx1
TIME_FORMAT=24
DEBUG=3
MODULES=ModuleParrot,ModuleMetarInfo,ModuleEcholink
CALLSIGN=YourCallsign # example: VK2CJC
BAUD=9600
PORT=/dev/ttyUSB0
ISSI=9999
GSSI=1
MNC=16383
MCC=901
INIT_PEI=AT+CTOM=1;AT+CTSP=1,3,131;AT+CTSP=1,3,130;AT+CTSP=1,3,138;AT+CTSP=1,2,20;AT+CTSP=2,0,0;AT+CTSP=1,3,24;AT+CTSP=1,3,25;AT+CTSP=1,3,3;AT+CTSP=1,3,10;AT+CTSP=1,1,11;AT+CTSDC=0,0,0,1,1,0,1,1,0,0
SHORT_IDENT_INTERVAL=0
LONG_IDENT_INTERVAL=60
#IDENT_ONLY_AFTER_TX=4
#EXEC_CMD_ON_SQL_CLOSE=500
EVENT_HANDLER=/usr/share/svxlink/events.tcl
DEFAULT_LANG=en_US
RGR_SOUND_DELAY=0
RGR_SOUND_ALWAYS=0
MACROS=Macros
FX_GAIN_NORMAL=0
FX_GAIN_LOW=-12
APRSPATH=APRS,qAR,YourCallsign-10: # Example: VK2CJC-10
#ACTIVATE_MODULE_ON_LONG_CMD=4:EchoLink
#QSO_RECORDER=8:QsoRecorder
ONLINE_CMD=998877
MUTE_RX_ON_TX=0
MUTE_TX_ON_RX=0
#STATE_PTY=/var/run/svxlink/state
#SDS_PTY=/opt/sds_pty
SDS_PTY=/tmp/tetra_sds
DEFAULT_APRS_ICON=/r
#DTMF_CTRL_PTY=/dev/shm/simplex_dtmf_ctrl
#CTCSS_TO_TG=77.0:999,123.0:9990,146.2:9992
PROXIMITY_WARNING=3.1
TIME_BETWEEN_SDS=3600
INFO_SDS=Welcome new user
TETRA_USERS=Tetra_Users
TETRA_STATUS=Tetra_Status
SDS_ON_USERACTIVITY=SdsOnUserActivity
SDS_TO_OTHERS_ON_ACTIVITY=DMO_ON,DMO_OFF,PROXIMITY
#SDS_TO_OTHERS_ON_ACTIVITY=DMO_ON,PROXIMITY
SDS_TO_COMMAND=SdsToCommand
END_CMD=ATH
#DAPNET_SERVER=dapnet.afu.rwth-aachen.de
#DAPNET_PORT=43434
#DAPNET_CALLSIGN=
#DAPNET_KEY=.............
#DAPNET_RIC2ISSI=Ric2ISSI
#DAPNET_RUBRIC_REGISTRATION=RicRegistration
#DAPNET_USERNAME=
#DAPNET_PASSWORD=............
#DAPNET_WEBHOST=www.hampager.de
#DAPNET_WEBPORT=8080
#DAPNET_WEBPATH=/calls
#DAPNET_TXGROUP="yo-all","dl-all"
#DAPNET_TXGROUP="tetra-all"

[Ric2ISSI]
# RIC=ISSI
#.........=2269001

[RicRegistration]
# RIC=Rubric1,Rubric2,Rubric54   (in decimal)
#..........=1001,1028
#23451=1028,1051

[SdsOnUserActivity]
0=Hello from YourCallSign-L! Refer to vktetra.com for more info. # Example: VK2CJC-L
1=You have powered off
2=You want to declare the state of emergency?
3=Push-to-talk condition is detected
4=Status
5=TXI=on
7=TMO mode available
#8=DMO mode available
9=ENTER SERVICE (after being out of service)
10=Service Loss


[Tetra_Users]
# ISSI = Call,Name,comment
09011638305050997=VK2CJC-1,Craig,/1,TETRA DMO 439.250 vktetra.com - STP9200
09011638305050998=VK2CJC-2,Craig,/2,TETRA DMO 439.250 vktetra.com - MTH850
09011638305050990=VK2CJC-3,Craig,/3,TETRA DMO 439.250 vktetra.com - STP9000
09011638305050991=VK2CJC-4,Craig,/4,TETRA DMO 439.250 vktetra.com
09011638305050992=VK2CJC-5,Craig,/5,TETRA DMO 439.250 vktetra.com - STP9000
09011638305050993=VK2CJC-6,Craig,/6,TETRA DMO 439.250 vktetra.com - SRG3900
0901163830YourRadioISSI=YourCallsign-1,YourName,/1,Tetra DMO Your Gateway Frequency vktetra.com # Example: 09011638305050111=VK2CJC-1,Craig,/1,TETRA DMO 439.250 vktetra.com

[Tetra_Status]
# status=message
32849=not available
32850=available
32851=no further information
61004=Parrot:
61010=MetarInfo:1
32833=Echolink:490278
32834=Echolink:

[SdsToCommand]
33280=121
33281=120
61000=9*
33009=919
33391=9191
33040=91204
33080=91208
33260=91226
33320=91232
33620=91262
33350=91235
34003=912263
34006=912266
34007=912267
34009=912269
33140=91214
40990=919990
36050=91505
36051=915050
36052=915051
36053=915052
36054=915053
36055=915054
36056=915055
36057=915056
36058=915057
36059=915058
36060=9150591
36061=9150592
36062=9150593
36063=9150594
36065=9150598
36066=9150599
36067=91505901
36068=91505902
36069=919990

[LinkToDMOTetra]
CONNECT_LOGICS=TetraLogic:9:Link,ReflectorLogic:8:Link2
DEFAULT_ACTIVE=1
TIMEOUT=180
ACTIVATE_ON_ACTIVITY=TetraLogic

[Macros]
61004=Parrot:
61010=MetarInfo:1
32833=Echolink:490278#
32834=Echolink:#


[Rx1]
TYPE=Local
#RX_ID=?
AUDIO_DEV=alsa:plughw:0
AUDIO_CHANNEL=0
#AUDIO_DEV_KEEP_OPEN=0
LIMITER_THRESH=-6
#SQL_DET=INTERNAL
SQL_DET=TETRA_SQL
SQL_START_DELAY=150
SQL_DELAY=40
SQL_HANGTIME=500
#SQL_EXTENDED_HANGTIME=1000
#SQL_EXTENDED_HANGTIME_THRESH=15
SQL_TIMEOUT=180
#VOX_FILTER_DEPTH=20
#VOX_THRESH=1000
#CTCSS_MODE=2
#CTCSS_FQ=136.5
#CTCSS_SNR_OFFSET=0
#CTCSS_OPEN_THRESH=15
#CTCSS_CLOSE_THRESH=9
#CTCSS_BPF_LOW=60
#CTCSS_BPF_HIGH=270
SERIAL_PORT=/dev/ttyUSB0
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_PATH=/sys/class/gpio
#GPIO_SQL_PIN=gpio18
#PTY_PATH=/tmp/rx1_sql
#HID_DEVICE=/dev/hidraw0
#HID_SQL_PIN=!VOL_DN
#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
#SQL_SIGLEV_OPEN_THRESH=30
#SQL_SIGLEV_CLOSE_THRESH=10
#DEEMPHASIS=0
#SQL_TAIL_ELIM=50
PREAMP=0
PEAK_METER=0
#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
#OB_AFSK_ENABLE=0
#OB_AFSK_VOICE_GAIN=6
#IB_AFSK_ENABLE=0


[TetraRx]
TYPE=Local
#RX_ID=1
AUDIO_DEV=alsa:plughw:0
AUDIO_CHANNEL=0
#AUDIO_DEV_KEEP_OPEN=0
#SQL_DET=GPIO
#SQL_DET=PTY
SQL_DET=TETRA_SQL
SQL_START_DELAY=0
SQL_DELAY=0
SQL_HANGTIME=2000
#SQL_EXTENDED_HANGTIME=1000
#SQL_EXTENDED_HANGTIME_THRESH=15
SQL_TIMEOUT=180
#VOX_FILTER_DEPTH=20
#VOX_THRESH=1000
#CTCSS_MODE=2
CTCSS_FQ=136.5
#CTCSS_SNR_OFFSET=0
#CTCSS_OPEN_THRESH=15
#CTCSS_CLOSE_THRESH=9
#CTCSS_BPF_LOW=60
#CTCSS_BPF_HIGH=270
SERIAL_PORT=/dev/ttyUSB0
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_PATH=/sys/class/gpio
#GPIO_SQL_PIN=gpio18
#PTY_PATH=/tmp/tetrarx_sql
#HID_DEVICE=/dev/hidraw0
#HID_SQL_PIN=!VOL_DN
#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=9
PEAK_METER=0
#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
#OB_AFSK_ENABLE=0
#OB_AFSK_VOICE_GAIN=6
#IB_AFSK_ENABLE=0



[Tx1]
TYPE=Local
TX_ID=T
AUDIO_DEV=alsa:plughw:0
AUDIO_CHANNEL=0
#AUDIO_DEV_KEEP_OPEN=0
LIMITER_THRESH=-6
PTT_TYPE=NONE
#PTT_PORT=/dev/ttyS0
#PTT_PIN=gpio19
#HID_DEVICE=/dev/hidraw0
#HID_PTT_PIN=GPIO3
#SERIAL_SET_PINS=DTR!RTS
#GPIO_PATH=/sys/class/gpio
PTT_HANGTIME=2000
#PTT_HANGTIME=150
TIMEOUT=180
TX_DELAY=1000
#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
#OB_AFSK_ENABLE=0
#OB_AFSK_VOICE_GAIN=-6
#OB_AFSK_LEVEL=-12
#OB_AFSK_TX_DELAY=100
#IB_AFSK_ENABLE=0
#IB_AFSK_LEVEL=-6
#IB_AFSK_TX_DELAY=100

[LocationInfo]
APRS_SERVER_LIST=euro.aprs2.net:14580
STATUS_SERVER_LIST=aprs.echolink.org:5199
LON_POSITION=Your LONG Position In Degrees Minutes Seconds # Example: 151.12.45E
LAT_POSITION=Your LAT Position In Degrees Minutes Seconds # Example: 33.12.12S
CALLSIGN=EL-YourCallSign # Example: EL-VK2CJC
FREQUENCY=Your Frequency # Example: 439.250
TX_POWER=3
ANTENNA_GAIN=0
ANTENNA_HEIGHT=10m
ANTENNA_DIR=0
PATH=WIDE1-1
BEACON_INTERVAL=60
#TONE=136
PTY_PATH=/opt/aprs
COMMENT=TETRA DMO - Your Suburb Your Gateway Frequency vktetra.com # Example: Sydney, NSW VK2CJC-L

[QsoRecorder]
REC_DIR=/tmp
#MIN_TIME=1000
MAX_TIME=3600
SOFT_TIME=300
MAX_DIRSIZE=1024
DEFAULT_ACTIVE=1
TIMEOUT=300
QSO_TIMEOUT=300
#ENCODER_CMD=/usr/bin/lame --quiet "%f" "%d/%b.mp3" && rm "%f
ENCODER_CMD=/usr/bin/lame --quiet \"%f\" \"%d/%b.mp3\" && rm \"%f\"

3. Once your file is updated, save it and copy it to /etc/svxlink/ and overwrite the existing svxlink.conf file

At this point, you’re probably excited to see if you can start svxlink! But, if you do so at this point, you’ll receive a bunch of errors. That’s because you need to connect your radio via your FTDI cable and soundcard first.

In the next part of this guide, you’ll learn how to connect the radio to your Pi.

Build Your Own Gateway – Part 4: Connecting To The Radio >