-[[.:start]]
====== Svxlink & Echolink ======
** Revisiting the Analogue FM Voice Gateway**
===== Svxlink Gateway Initial Setup =====
==== Trying not to re-invent the wheel ====
* find saved Pi Image File for a previous Svxlink system
* copy to a new SD Card and boot a spare Raspberry Pi with it
* find and connect a modified CM108 sound-dongle - has PTT and SQL via the dongle's own GPIO
* connect to 2m FM radio and test initial config
* make any necessary config changes - e.g. MB7AZE -> GM4SLV
* set up audio levels using //devcal//
* change to //9600 packet interface// on 2m radio to remove radio pre/de emphasis and apply pre/de emphasis in Svxlink
* set up audio levels again using //devcal//
* Check connectivity to Echolink
* remember to Port Forward on ADSL router : **UDP 5198 & 5199** -> svxlink Pi's IP address
* consider using a private proxy on my VPS instead? [[public:radio:dormant:jre_echolink|]]
==== Pi Image File handling ====
[[public:computers:rpi_image|]]
==== Devcal ====
* [[public:radio:dormant:mb7azeconf#devcal|]]
* remember to ''sudo killall svxlink'' to ensure no daemon svxlink processes are running in the background
* remember to adjust path to valid //svxlink.conf// file which will be different to this old example
* Set for 3kHz deviation
* remember to edit the config file(s) to change the RX Pre-amp and TX Master Gain settings to match those find using Deval
sudo devcal -r -m=3000 -d=3000 /etc/svxlink/svxlink_noel.conf Rx1
sudo devcal -t -m=3000 -d=3000 /etc/svxlink/svxlink_noel.conf Tx1
* add the PRE_AMP and MASTER_GAIN settings to **both** ''svxlink_el.conf'' and ''svxlink_noel.conf''
==== Config Files ====
* One for **Echolink Enabled**
* One for **Echolink Disabled**
* Switch Echolink on/off via DTMF commands
* Edit **Logic.tcl** to give this functionality
++++ /etc/svxlink/svxlink_el.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,ModuleEchoLink,ModuleParrot
CALLSIGN=GM4SLV
SHORT_IDENT_INTERVAL=15
SHORT_CW_ID_ENABLE=1
SHORT_VOICE_ID_ENABLE=0
CW_AMP=-10
CW_PITCH=800
CW_WPM=20
LONG_IDENT_INTERVAL=60
#IDENT_ONLY_AFTER_TX=4
#EXEC_CMD_ON_SQL_CLOSE=500
EVENT_HANDLER=/usr/local/share/svxlink/events.tcl
DEFAULT_LANG=en_US
RGR_SOUND_DELAY=0
#REPORT_CTCSS=77.0
#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
#DTMF_CTRL_PTY=/dev/shm/simplex_dtmf_ctrl
TIME_FORMAT=24
RGR_SOUND_ALWAYS=1
[RepeaterLogic]
TYPE=Repeater
RX=Rx1
TX=Tx1
MODULES=ModuleHelp,ModuleParrot,ModuleEchoLink,ModuleTclVoiceMail
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=en_US
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
#DTMF_CTRL_PTY=/dev/shm/repeater_dtmf_ctrl
[ReflectorLogic]
TYPE=Reflector
HOST=reflector.example.com
#PORT=5300
CALLSIGN="MYCALL"
AUTH_KEY="Change this key now!"
#JITTER_BUFFER_DELAY=0
[LinkToR4]
CONNECT_LOGICS=RepeaterLogic:94:SK3AB,SimplexLogic:92:SK3CD
#DEFAULT_ACTIVE=1
TIMEOUT=300
#AUTOACTIVATE_ON_SQL=RepeaterLogic
[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
#COMMAND_PTY=/dev/shm/voter_ctrl
[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,0
AUDIO_CHANNEL=0
SQL_DET=HIDRAW
SQL_START_DELAY=0
SQL_DELAY=0
SQL_HANGTIME=200
#SQL_EXTENDED_HANGTIME=1000
#SQL_EXTENDED_HANGTIME_THRESH=15
#SQL_TIMEOUT=600
VOX_FILTER_DEPTH=20
VOX_THRESH=1000
#CTCSS_MODE=2
CTCSS_FQ=77.0
#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=
#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=gpio25
#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
SIGLEV_OPEN_THRESH=30
SIGLEV_CLOSE_THRESH=10
DEEMPHASIS=1
#SQL_TAIL_ELIM=300
PREAMP=-1.5
#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,0
AUDIO_CHANNEL=0
PTT_TYPE=Hidraw
#PTT_PORT=/dev/ttyS0
#PTT_PIN=HIDRAW
HID_DEVICE=/dev/hidraw0
HID_PTT_PIN=GPIO3
#SERIAL_SET_PINS=DTR!RTS
#GPIO_PATH=/sys/class/gpio
#PTT_HANGTIME=1000
TIMEOUT=300
TX_DELAY=500
#CTCSS_FQ=136.5
#CTCSS_LEVEL=9
PREEMPHASIS=1
DTMF_TONE_LENGTH=100
DTMF_TONE_SPACING=50
DTMF_DIGIT_PWR=-15
MASTER_GAIN=-1.25
[LocationInfo]
#APRS_SERVER_LIST=euro.aprs2.net:14580
STATUS_SERVER_LIST=aprs.echolink.org:5199
LON_POSITION=1.25.30W
LAT_POSITION=60.17.18N
CALLSIGN=EL-GM4SLV
FREQUENCY=144.912
TX_POWER=5
ANTENNA_GAIN=0
ANTENNA_HEIGHT=2m
ANTENNA_DIR=-1
#PATH=WIDE1-1
BEACON_INTERVAL=10
STATISTICS_INTERVAL=10
TONE=0
COMMENT=SvxLink
[Macros]
1=EchoLink:9999#
2=EchoLink:973498#
3=EchoLink:662666#
++++
++++ /etc/svxlink/svxlink_noel.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
CALLSIGN=GM4SLV
SHORT_IDENT_INTERVAL=15
SHORT_CW_ID_ENABLE=1
SHORT_VOICE_ID_ENABLE=0
CW_AMP=-10
CW_PITCH=800
CW_WPM=20
LONG_IDENT_INTERVAL=60
#IDENT_ONLY_AFTER_TX=4
#EXEC_CMD_ON_SQL_CLOSE=500
EVENT_HANDLER=/usr/local/share/svxlink/events.tcl
DEFAULT_LANG=en_GB
RGR_SOUND_DELAY=0
#REPORT_CTCSS=77.0
#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
#DTMF_CTRL_PTY=/dev/shm/simplex_dtmf_ctrl
TIME_FORMAT=24
RGR_SOUND_ALWAYS=1
[RepeaterLogic]
TYPE=Repeater
RX=Rx1
TX=Tx1
MODULES=ModuleHelp,ModuleParrot,ModuleEchoLink,ModuleTclVoiceMail
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=en_US
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
#DTMF_CTRL_PTY=/dev/shm/repeater_dtmf_ctrl
[ReflectorLogic]
TYPE=Reflector
HOST=reflector.example.com
#PORT=5300
CALLSIGN="MYCALL"
AUTH_KEY="Change this key now!"
#JITTER_BUFFER_DELAY=0
[LinkToR4]
CONNECT_LOGICS=RepeaterLogic:94:SK3AB,SimplexLogic:92:SK3CD
#DEFAULT_ACTIVE=1
TIMEOUT=300
#AUTOACTIVATE_ON_SQL=RepeaterLogic
[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
#COMMAND_PTY=/dev/shm/voter_ctrl
[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,0
AUDIO_CHANNEL=0
SQL_DET=HIDRAW
SQL_START_DELAY=0
SQL_DELAY=0
SQL_HANGTIME=200
#SQL_EXTENDED_HANGTIME=1000
#SQL_EXTENDED_HANGTIME_THRESH=15
#SQL_TIMEOUT=600
VOX_FILTER_DEPTH=20
VOX_THRESH=1000
#CTCSS_MODE=2
CTCSS_FQ=77.0
#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=
#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=gpio25
#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
SIGLEV_OPEN_THRESH=30
SIGLEV_CLOSE_THRESH=10
DEEMPHASIS=1
#SQL_TAIL_ELIM=300
PREAMP=-1.5
#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,0
AUDIO_CHANNEL=0
PTT_TYPE=Hidraw
#PTT_PORT=/dev/ttyS0
#PTT_PIN=HIDRAW
HID_DEVICE=/dev/hidraw0
HID_PTT_PIN=GPIO3
#SERIAL_SET_PINS=DTR!RTS
#GPIO_PATH=/sys/class/gpio
#PTT_HANGTIME=1000
TIMEOUT=300
TX_DELAY=500
#CTCSS_FQ=136.5
#CTCSS_LEVEL=9
PREEMPHASIS=1
DTMF_TONE_LENGTH=100
DTMF_TONE_SPACING=50
DTMF_DIGIT_PWR=-15
MASTER_GAIN=-1.25
[LocationInfo]
APRS_SERVER_LIST=euro.aprs2.net:14580
STATUS_SERVER_LIST=aprs.echolink.org:5199
LON_POSITION=1.25.30W
LAT_POSITION=60.17.18N
CALLSIGN=EL-GM4SLV
FREQUENCY=144.9125
TX_POWER=1
ANTENNA_GAIN=0
ANTENNA_HEIGHT=1m
ANTENNA_DIR=-1
#PATH=WIDE1-1
#BEACON_INTERVAL=60
TONE=77
COMMENT=SvxLink by SM0SVX (www.svxlink.org)
[Macros]
1=EchoLink:9999#
2=EchoLink:973498#
3=EchoLink:662666#
++++
++++ /etc/svxlink/svxlink.d/ModuleEchoLink.conf |
[ModuleEchoLink]
NAME=EchoLink
ID=2
TIMEOUT=60
#ALLOW_IP=192.168.1.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=GM4SLV-L
PASSWORD=XXXXXXXXX
SYSOPNAME=John
LOCATION=[Svx] Shetland
PROXY_SERVER=my.vps.host.name
PROXY_PORT=8100
PROXY_PASSWORD=my_proxy_password
#BIND_ADDR=10.20.30.40
MAX_QSOS=5
MAX_CONNECTIONS=6
LINK_IDLE_TIMEOUT=900
#AUTOCON_ECHOLINK_ID=9999
#AUTOCON_TIME=1200
#USE_GSM_ONLY=1
#DEFAULT_LANG=en_US
#COMMAND_PTY=/dev/shm/echolink_ctrl
DESCRIPTION="You have connected to a SvxLink node,\n"
++++
++++ /usr/local/share/svxlink/events.d/local |
Edit the section ''proc dtmf_cmd_received {cmd}'' to add the stanzas that run external bash scripts to stop and restart svxlink with different config files
#
# Executed when a DTMF command has been received
# cmd - The command
#
# Return 1 to hide the command from further processing is SvxLink or
# return 0 to make SvxLink continue processing as normal.
#
# This function can be used to implement your own custom commands or to disable
# DTMF commands that you do not want users to execute.
proc dtmf_cmd_received {cmd} {
#global active_module
# Example: Ignore all commands starting with 3 in the EchoLink module.
# Allow commands that have four or more digits.
#if {$active_module == "EchoLink"} {
# if {[string length $cmd] < 4 && [string index $cmd 0] == "3"} {
# puts "Ignoring random connect command for module EchoLink: $cmd"
# return 1
# }
#}
# Handle the "force core command" mode where a command is forced to be
# executed by the core command processor instead of by an active module.
# The "force core command" mode is entered by prefixing a command by a star.
#if {$active_module != "" && [string index $cmd 0] != "*"} {
# return 0
#}
#if {[string index $cmd 0] == "*"} {
# set cmd [string range $cmd 1 end]
#}
# Example: Custom command executed when DTMF 99 is received
if {$cmd == "99"} {
puts "Executing external command"
playMsg "Core" "online"
exec /home/gm4slv/svx_noel.sh &
return 1
}
# Example: Custom command executed when DTMF 99 is received
if {$cmd == "98"} {
puts "Executing external command"
playMsg "Core" "online"
exec /home/gm4slv/svx_el.sh &
return 1
}
return 0
}
++++
++++ start with echolink : svx_el.sh |
#!/bin/bash
CFG=/etc/svxlink/svxlink_el.conf
LOG=/home/gm4slv/svxlink.log
sudo killall svxlink
sudo killall svxlink
sudo killall svxlink
sudo svxlink --daemon --logfile=$LOG --config=$CFG
exit 0
++++
++++ start without echolink : svx_noel.sh |
#!/bin/bash
CFG=/etc/svxlink/svxlink_noel.conf
LOG=/home/gm4slv/svxlink.log
sudo killall svxlink
sudo killall svxlink
sudo killall svxlink
sudo svxlink --daemon --logfile=$LOG --config=$CFG
exit 0
++++
++++ crontab entry to start with echolink enabled at boot time |
@reboot sleep 30 && sudo -u gm4slv /home/gm4slv/svx_el.sh >/dev/null 2>&1
++++
==== Catch up with git version ====
* The version of svxlink running on this Pi was self-compiled from the GIT repository
* [[public:radio:dormant:svxlink#Update to latest version from GIT|]]
* I decided to pull & compile the latest version so I simply followed the instructions I'd put on the above wiki page and all went smoothly (if slowly)
==== DTMF Commands ====
* Old info [[public:radio:dormant:svxreflector_commands|]]
* Ignore **Reflector** commands - I am not (yet) connected to the SVX Reflector [[http://svxportal-uk.ddns.net:81/index.php]]
|''*#''|System Status |
|''0#'' |Help Module |
|''1#'' | Parrot Module |
|''2#'' | Echolink Module |
|''#''| De-activate module|
=== Echolink Module ===
|''#''|Connect to ''''|
|''0#'' | Play the help message|
|''1#'' | List all connected stations|
|''2#'' | Play local EchoLink node id|
|''31#''| Connect to a random link or repeater|
|''32#'' | Connect to a random conference|
|''4#''|Reconnect to the last disconnected station|
|''50#''| Deactivate listen only mode|
|''51#''| Activate listen only mode|
|''6*#''| Use the connect by callsign feature|
|''#''|If connected = Disconnect, otherwise = Deactivate Echolink module |
[[https://github.com/sm0svx/svxlink/wiki/ModuleEchoLink]]
=== Macros ===
|''D1#''|Echolink |9999 | Echotest | |
|''D2#''|Echolink |973498 | M0HOY-L | Hubnet |
|''D3#''|Echolink |662666 |M0JKT-L | FreeStar |
==== Sound files ====
* use ''en_US'' when **echolink is enabled**
* this is also needed for **reflector** when it's re-enabled, as the ''US'' files also have the additional reflector sound samples
* use ''en_GB'' when **echolink is disable**
* easy to tell from status ''*#'' which is active!
==== Proxy ====
* after consideration....
* I decided to use my VPS-hosted echolink proxy
* remove port forwards on home router for UDP/5198 & UDP/5199
* open port TPC/8100 for **only my home IP address** on VPS
* this means only one IP address can reach the Proxy on port TCP/8100
* open ports UDP/5198 & UDP/5199 for anywhere on VPS
* edit echolink proxy config on VPS to allow only GM4SLV-L to connect
* this means only one callsign can connect to the proxy
* start proxy in a tmux session, using bash script on VPS
* edit ModuleEchoLink.conf on svxlink pi to use the proxy
* restart ''svx_el.sh''
PROXY_SERVER=my.vps.host.name
PROXY_PORT=8100
PROXY_PASSWORD=xxxxxxxxx
--- //John Pumford-Green 06/04/24 07:09//
LAST MODIFIED : ~~LASTMOD~~
===== Further Information =====
{{tag>radio svxlink}}