<-[[.: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}}