Merge pull request #24 from thetechprepper/feature/vara

Feature/vara
This commit is contained in:
thetechprepper
2025-02-11 10:33:34 -07:00
committed by GitHub
34 changed files with 1161 additions and 73 deletions
+17
View File
@@ -0,0 +1,17 @@
#!/bin/bash
# Author : Gaston Gonzalez
# Date : 1 February 2025
# Purpose : Common environment variables and functions
export ESC="\x1B"
export RED="${ESC}[1;31m"
export BLUE="${ESC}[1;34m"
export GREEN="${ESC}[1;32m"
export WHITE="${ESC}[97m"
export YELLOW="${ESC}[1;33m"
export NC="${ESC}[0m"
show-err-dialog() {
local message="$1"
dialog --title "Notification" --msgbox "$message" 8 60
}
+18 -1
View File
@@ -2,21 +2,38 @@
#
# Author : Gaston Gonzalez
# Date : 12 November 2024
# Updated : 13 January 2025
# Updated : 7 February 2025
# Purpose : Stops all EmComm Tools sound-based services (i.e. modems) and
# amatuer radio applications to ensure a clean start for the next mode.
stop_pat() {
PS_OUT=$(ps -ef | grep "[p]at http")
if [[ $? -eq 0 ]]; then
PAT_PID=$(ps -ef | grep "[p]at http" | awk '{print $2}')
kill -9 ${PAT_PID}
fi
}
# 1. Attempt to stop all EmComm Tools services regardless if they are running.
# 2. Stop the applications first, then the modems.
stop_all_services() {
systemctl --user stop et-service-winlink-ardop
systemctl --user stop et-service-winlink-packet
systemctl --user stop et-service-winlink-native-packet
systemctl --user stop et-service-ardop
systemctl --user stop et-service-direwolf-300
systemctl --user stop et-service-direwolf-9600
systemctl --user stop et-service-direwolf-simple
systemctl --user stop et-service-direwolf-aprs-digipeater
systemctl --user stop et-service-direwolf-packet-digipeater
# Stop VARA with a sledge hammer
pkill et-winlink
pkill et-vara
pkill VARA
stop_pat
}
et-log "Stopping all services"
+117 -18
View File
@@ -2,12 +2,14 @@
#
# Author : Gaston Gonzalez
# Date : 6 November 2024
# Updated : 14 January 2025
# Updated : 9 February 2025
# Purpose : Configures the system for a specific mode of operation
# Use a simple text file to save the state of the last mode selected
MODE_STATUS_FILE="${HOME}/.config/emcomm-tools/et-mode"
QTTERMTCP_CONF_FILE="${HOME}/.config/QtTermTCP.ini"
# List of supported modes of operation
MODE_ID_NONE="none"
MODE_ID_APRS_DIGIPEATER="aprs-digipeater"
@@ -18,9 +20,11 @@ MODE_ID_CHAT_CLIENT="chat-chattervox"
MODE_ID_PACKET_DIGIPEATER="packet-digipeater"
MODE_ID_WINLINK_ARDOP="winlink-ardop"
MODE_ID_WINLINK_PACKET="winlink-packet"
MODE_ID_WINLINK_VARA_HF="winlink-vara-hf"
MODE_ID_WINLINK_VARA_FM="winlink-vara-fm"
# Default to 1200 baud
PACKET_MODE=simple
# Default to 1200 baud packet for terminal sessions
TERM_MODE=1200
# Attempt to stop all EmComm Tools services regardless if they are running.
stop_all_services() {
@@ -66,16 +70,52 @@ start_and_wait_for_service() {
exit_on_service_failure ${systemd_unit_name}
}
select_direwolf_mode () {
packet_mode=()
packet_mode+=("simple" "1200 baud (default for VHF/UHF)")
packet_mode+=("9600" "9600 baud (VHF/UHF)")
packet_mode+=("300" "300 baud (HF)")
start_and_wait_for_vara() {
local vara_cmd="$1"
local elapsed=0
PACKET_MODE=$(dialog --clear --menu "Select a modem" 10 60 10 "${packet_mode[@]}" 3>&1 1>&2 2>&3)
et-log "Starting ${vara_cmd}..."
${vara_cmd} &
et-log "Waiting for ${vara_cmd} to become active..."
while true; do
CHECK_VARA=$(ps -ef | grep "[V]ARA")
if [ $? -eq 0 ]; then
break
fi
sleep "$INTERVAL"
elapsed=$((elapsed + INTERVAL))
if [ "$elapsed" -ge "$TIMEOUT" ]; then
et-log "Timeout reached. ${systemd_unit_name} failed to start."
exit 1
fi
et-log "Waiting for ${vara_cmd} to become active..."
done
}
select_term_mode () {
term_mode=()
term_mode+=("1200" "1200 baud (default for VHF/UHF)")
term_mode+=("9600" "9600 baud (VHF/UHF)")
term_mode+=("300" "300 baud (HF)")
# Only allow VARA terminal modes when using QtTermTCP
if [[ "${SELECTED_MODE}" == "${MODE_ID_BBS_CLIENT2}" ]]; then
if [ -e "${HOME}/.wine32/drive_c/VARA FM/VARAFM.exe" ]; then
term_mode+=("vara-fm" "VARA FM")
fi
if [ -e "${HOME}/.wine32/drive_c/VARA/VARA.exe" ]; then
term_mode+=("vara-hf" "VARA HF")
fi
fi
TERM_MODE=$(dialog --clear --menu "Select a modem" 13 60 10 "${term_mode[@]}" 3>&1 1>&2 2>&3)
exit_status=$?
if [ "${PACKET_MODE}" == "9600" ]; then
if [ "${TERM_MODE}" == "9600" ]; then
dialog --title "Note on 9600 Baud" --msgbox "9600 baud is only supported on limited radios and typically requires a special cable.\n\nDon't forget to set the packet settings to 9600 on the radio." 0 0
fi
@@ -87,6 +127,18 @@ select_direwolf_mode () {
fi
}
select_winlink_mode () {
winlink_mode=()
BLUETOOTH_TNC_CHECK=$(ps -ef | grep "[r]fcomm connect")
if [[ $? -eq 0 ]]; then
et-log "AX.25 over Bluetooth connected. Configuring Winlink for native AX.25"
start_and_wait_for_service et-service-winlink-native-packet
min http://localhost:8080
exit 0
fi
}
# Build list of options
options=()
options+=("${MODE_ID_NONE}" "No mode selected")
@@ -96,11 +148,20 @@ options+=("${MODE_ID_BBS_CLIENT2}" "BBS Client (QtTermTCP)")
options+=("${MODE_ID_CHAT_CLIENT}" "Chat (chattervox)")
options+=("${MODE_ID_APRS_DIGIPEATER}" "APRS Digipeater")
options+=("${MODE_ID_PACKET_DIGIPEATER}" "Packet Digipeater")
options+=("${MODE_ID_WINLINK_ARDOP}" "Winlink over HF (ARDOP)")
options+=("${MODE_ID_WINLINK_PACKET}" "Winlink over VHF/UHF (AX.25 Packet)")
if [ -e "${HOME}/.wine32/drive_c/VARA FM/VARAFM.exe" ]; then
options+=("${MODE_ID_WINLINK_VARA_FM}" "Winlink over VHF/UHF (VARA FM)")
fi
options+=("${MODE_ID_WINLINK_ARDOP}" "Winlink over HF (ARDOP)")
if [ -e "${HOME}/.wine32/drive_c/VARA/VARA.exe" ]; then
options+=("${MODE_ID_WINLINK_VARA_HF}" "Winlink over HF (VARA HF)")
fi
# Prompt user for option and save exit status
SELECTED_MODE=$(dialog --clear --menu "Select a mode:" 16 65 10 "${options[@]}" 3>&1 1>&2 2>&3)
SELECTED_MODE=$(dialog --clear --menu "Select a mode:" 18 65 10 "${options[@]}" 3>&1 1>&2 2>&3)
exit_status=$?
tput sgr 0 && clear
@@ -124,18 +185,38 @@ if [ $exit_status -eq 0 ]; then
et-yaac start
;;
${MODE_ID_BBS_CLIENT})
select_direwolf_mode
et-log "Using ${PACKET_MODE} as the modem speed."
select_term_mode
et-log "Using ${TERM_MODE} as the modem speed."
start_and_wait_for_service et-service-direwolf-${PACKET_MODE}
start_and_wait_for_service et-service-direwolf-${TERM_MODE}
et-log "Starting Paracon."
et-paracon start
;;
${MODE_ID_BBS_CLIENT2})
select_direwolf_mode
et-log "Using ${PACKET_MODE} as the modem speed."
select_term_mode
et-log "Using ${TERM_MODE} as the modem."
start_and_wait_for_service et-service-direwolf-${PACKET_MODE}
case "${TERM_MODE}" in
"1200")
start_and_wait_for_service et-service-direwolf-simple
;;
"9600")
start_and_wait_for_service et-service-direwolf-9600
;;
"300")
start_and_wait_for_service et-service-direwolf-300
;;
"vara-fm")
sed -i "s|^VARAFM=.*|VARAFM=1|g" ${QTTERMTCP_CONF_FILE}
sed -i "s|^VARAHF=.*|VARAHF=0|g" ${QTTERMTCP_CONF_FILE}
start_and_wait_for_vara et-vara-fm
;;
"vara-hf")
sed -i "s|^VARAFM=.*|VARAFM=0|g" ${QTTERMTCP_CONF_FILE}
sed -i "s|^VARAHF=.*|VARAHF=1|g" ${QTTERMTCP_CONF_FILE}
start_and_wait_for_vara et-vara-hf
;;
esac
et-log "Starting QtTermTCP."
et-qttermtcp start
@@ -150,15 +231,33 @@ if [ $exit_status -eq 0 ]; then
et-log "Packet digipeater now running."
;;
${MODE_ID_WINLINK_ARDOP})
et-log "Using ARDOP as the modem."
start_and_wait_for_service et-service-ardop
start_and_wait_for_service et-service-winlink-ardop
min http://localhost:8080
;;
${MODE_ID_WINLINK_PACKET})
select_winlink_mode
start_and_wait_for_service et-service-direwolf-simple
start_and_wait_for_service et-service-winlink-packet
min http://localhost:8080
;;
${MODE_ID_WINLINK_VARA_FM})
dialog --title "User Action Required" --msgbox "VARA FM is not a plug and play mode. You must configure VARA manually." 10 50
tput sgr 0 && clear
start_and_wait_for_vara et-vara-fm
et-winlink start-vara-fm &
sleep 1
min http://localhost:8080 2>/dev/null
;;
${MODE_ID_WINLINK_VARA_HF})
dialog --title "User Action Required" --msgbox "VARA HF is not a plug and play mode. You must configure VARA manually." 10 50
tput sgr 0 && clear
start_and_wait_for_vara et-vara-hf
et-winlink start-vara-hf &
sleep 1
min http://localhost:8080 2>/dev/null
;;
*)
et-log "Mode ${SELECTED_MODE} not yet supported"
exit 1
+3 -1
View File
@@ -2,6 +2,7 @@
#
# Author : Gaston Gonzalez
# Date : 17 December 2024
# Updated : 8 February 2025
# Purpose : Wrapper script for starting JS8Call with PnP support
#
# Preconditions
@@ -57,7 +58,8 @@ update-config () {
exit 1
fi
sed -i "s|^AGWTermCall.*|AGWTermCall=${CALLSIGN}|" ${CONF_FILE}
sed -i "s|^AGWTermCall.*|AGWTermCall=${CALLSIGN}|g" ${CONF_FILE}
sed -i "s|^VARATermCall.*|VARATermCall=${CALLSIGN}|g" ${CONF_FILE}
sed -i "s|^YAPPPath.*|YAPPPath=${HOME}/Downloads|" ${CONF_FILE}
et-log "Updated QtTermTCP configuration with user callsign '${CALLSIGN}'"
+8 -2
View File
@@ -2,7 +2,7 @@
#
# Author : Gaston Gonzalez
# Date : 11 October 2024
# Updated : 14 December 2024
# Updated : 5 February 2025
# Purpose : A script for managaing plug-and-play radios
set -e
@@ -48,6 +48,13 @@ if [ $exit_status -eq 0 ]; then
VENDOR=$(cat ${ACTIVE_RADIO} | jq -r .vendor)
MODEL=$(cat ${ACTIVE_RADIO} | jq -r .model)
BLUETOOTH_TNC_CHECK=$(ps -ef | grep "[r]fcomm connect")
if [[ $? -eq 0 ]]; then
et-log "Killing running processes for Bluetooth TNC"
sudo /usr/bin/killall kissattach
sudo /usr/bin/killall rfcomm
fi
printf "%-20s %-10s %-10s\n" "Radio ID" "Vendor" "Model"
printf "%-20s %-10s %-10s\n\n" $ID "$VENDOR" "$MODEL"
@@ -55,7 +62,6 @@ if [ $exit_status -eq 0 ]; then
cat ${ACTIVE_RADIO} | jq -r '.notes[] | "* \(.)"'
echo -e "${NC}"
printf "${GREEN}REQUIRED ACTIONS\n"
printf "1. Apply the settings above to your radio.\n"
printf "2. Plug in the USB cable for your radio. If it is already\n"
+9 -1
View File
@@ -2,7 +2,7 @@
#
# Author : Gaston Gonzalez
# Date : 6 October 2024
# Updated : 17 December 2024
# Updated : 7 February 2025
# Purpose : Utility script for dumping system information
function usage() {
@@ -183,6 +183,8 @@ case $1 in
MODE_ID_APRS_CLIENT="aprs-client"
MODE_ID_WINLINK_ARDOP="winlink-ardop"
MODE_ID_WINLINK_PACKET="winlink-packet"
MODE_ID_WINLINK_VARA_HF="winlink-vara-hf"
MODE_ID_WINLINK_VARA_FM="winlink-vara-fm"
if [ ! -e /dev/et-audio ]; then
echo "Run 'et-mode' to set"
@@ -218,6 +220,12 @@ case $1 in
${MODE_ID_WINLINK_PACKET})
echo "Winlink Packet"
;;
${MODE_ID_WINLINK_VARA_FM})
echo "Winlink VARA FM"
;;
${MODE_ID_WINLINK_VARA_HF})
echo "Winlink VARA HF"
;;
*)
echo "Unknown"
;;
+1 -2
View File
@@ -1,7 +1,7 @@
#!/bin/bash
# Author : Gaston Gonzalez
# Date : 14 January 2025
# Updated : 16 January 2025
# Updated : 1 February 2025
# Purpose : Back up select files from the user's home directory.
#
# The backups are limited to the following:
@@ -31,7 +31,6 @@ BACKUP_DIRS=(
".config/emcomm-tools"
".local/share/emcomm-tools"
".local/share/pat"
".ssh"
)
tar -czf ${BACKUP_FILE} \
+7 -7
View File
@@ -2,14 +2,14 @@
#
# Author : Gaston Gonzalez
# Date : 1 January 2025
# Updated : 3 January 2025
# Updated : 3 February 2025
# Purpose : Utility for accessing the Bluetooth TNC on the BTECH
# UV PRO.
ACTIVE_RADIO="${ET_HOME}/conf/radios.d/btech-uvpro.bt.json"
DEVICE_NAME="UV-PRO"
BT_DEVICE="/dev/rfcomm0"
AX25_PORT="pkt1200"
AX25_PORT="wl2k"
AX25_CONF_FILE="/etc/ax25/axports"
ESC="\x1B"
@@ -78,15 +78,15 @@ update_ax25_conf() {
GREP_OUT=$(grep ${AX25_PORT} ${AX25_CONF_FILE})
if [ $? -eq 0 ]; then
# Delete all existing pkt1200 entries. Note: we can't use sed here
# Delete all existing AX.25 port entries. Note: we can't use sed here
# since we do not have permission to create a temporary file with
# inline replacement. ed modifies the file directly.
printf "g/^pkt1200/d\nw\nq\n" | ed ${AX25_CONF_FILE} > /dev/null 2>&1
printf "g/^${AX25_PORT}/d\nw\nq\n" | ed ${AX25_CONF_FILE} > /dev/null 2>&1
fi
info_message "Adding AX25 port for ${CALLSIGN}"
echo "pkt1200 ${CALLSIGN} 1200 255 2 1200 Packet" >> ${AX25_CONF_FILE}
echo "${AX25_PORT} ${CALLSIGN} 1200 255 2 1200 Packet" >> ${AX25_CONF_FILE}
}
stop_all_services() {
@@ -235,8 +235,8 @@ EOF
echo -e "${YELLOW}"
echo -e "SAMPLE COMMANDS DESCRIPTION "
echo -e "------------------------------- --------------------------------"
echo -e "axcall pkt1200 <STATION> Connect directly to a node "
echo -e "axcall pkt1200 <STATION> <DIGI> Connect to node via a digipeater"
echo -e "axcall ${AX25_PORT} <STATION> Connect directly to a node "
echo -e "axcall ${AX25_PORT} <DIGI> Connect to node via a digipeater"
echo -e "sudo axlisten -a -tttt -c Monitor inbound and outbound traffic"
echo -e "${NC}"
+38
View File
@@ -0,0 +1,38 @@
#!/bin/bash
# Author : Gaston Gonzalez
# Date : 20 January 2025
# Updated : 7 February 2025
# Purpose : Run VARA FM
source /opt/emcomm-tools/bin/et-common
EXE="${HOME}/.wine32/drive_c/VARA FM/VARAFM.exe"
if [[ ! -e ${EXE} ]]; then
echo -e "${RED}"
echo -e "${EXE} does not exist."
echo -e "You might NOT have installed the windows subsystem (WINE)."
echo -e "Navigate to ${WHITE}${HOME}/add-ons/wine${RED} and follow the"
echo -e "instructions in the ${WHITE}README.md${RED} file."
echo -e "${NC}"
exit 1
fi
# 1. Check if the symlink was created by the udev rules
if [[ -e /dev/et-audio ]]; then
# 2. Check that this device was properly tagged with the ET_AUDIO env variable with a udev rule
APLAY_OUT=$(arecord -l | grep ET_AUDIO)
if [[ $? -eq 0 ]]; then
# Configure ALSA settings for sound card
/opt/emcomm-tools/bin/et-audio update-config
else
echo -e "${RED}No ET_AUDIO device detected.${NC}"
exit 1
fi
else
echo -e "${RED}No ET_AUDIO device plugged in.${NC}"
exit 1
fi
wine ~/.wine32/drive_c/VARA\ FM/VARAFM.exe
+38
View File
@@ -0,0 +1,38 @@
#!/bin/bash
# Author : Gaston Gonzalez
# Date : 20 January 2025
# Updated : 7 February 2025
# Purpose : Run VARA HF
source /opt/emcomm-tools/bin/et-common
EXE="${HOME}/.wine32/drive_c/VARA/VARA.exe"
if [[ ! -e ${EXE} ]]; then
echo -e "${RED}"
echo -e "${EXE} does not exist."
echo -e "You might NOT have installed the windows subsystem (WINE)."
echo -e "Navigate to ${WHITE}${HOME}/add-ons/wine${RED} and follow the"
echo -e "instructions in the ${WHITE}README.md${RED} file."
echo -e "${NC}"
exit 1
fi
# 1. Check if the symlink was created by the udev rules
if [[ -e /dev/et-audio ]]; then
# 2. Check that this device was properly tagged with the ET_AUDIO env variable with a udev rule
APLAY_OUT=$(arecord -l | grep ET_AUDIO)
if [[ $? -eq 0 ]]; then
# Configure ALSA settings for sound card
/opt/emcomm-tools/bin/et-audio update-config
else
echo -e "${RED}No ET_AUDIO device detected.${NC}"
exit 1
fi
else
echo -e "${RED}No ET_AUDIO device plugged in.${NC}"
exit 1
fi
wine ${EXE}
+74 -14
View File
@@ -2,7 +2,7 @@
#
# Author : Gaston Gonzalez
# Date : 4 November 2024
# Updated : 12 December 2024
# Updated : 4 February 2025
# Purpose : Wrapper script for starting YAAC with PnP support
#
# Preconditions:
@@ -13,14 +13,19 @@
# 1. Callsign, Winlink password, and grid are updated are updated
# 2. pat http is started
source /opt/emcomm-tools/bin/et-common
PAT_CONF_FILE=${HOME}/.config/pat/config.json
PAT_CONF_FILE_TEMPLATE=/etc/skel/.config/pat/config.json
usage() {
echo "usage: $(basename $0) <command>"
echo " <command>"
echo " start-ardop - Start Pat Winlink in ardop mode"
echo " start-packet - Start Pat Winlink in packet mode"
echo " start-ardop - Start Pat Winlink in ardop mode"
echo " start-packet - Start Pat Winlink in packet mode"
echo " start-native-packet - Start Pat Winlink in native AX.25 packet mode"
echo " start-vara-fm - Start Pat Winlink in VARA FM mode"
echo " start-vara-hf - Start Pat Winlink in VARA HF mode"
}
if [ $# -ne 1 ]; then
@@ -60,7 +65,7 @@ start_packet() {
notify_user "Dire Wolf not running. Run: et-direwolf simple-packet"
exit 1
fi
update_config packet
CMD="pat http"
@@ -69,6 +74,44 @@ start_packet() {
${CMD}
}
# Only the BTECH UV PRO is supported in this mode
start_native_packet() {
BLUETOOTH_TNC_CHECK=$(ps -ef | grep "[r]fcomm connect")
if [[ $? -ne 0 ]]; then
echo -e "${RED}Can't start Pat in native AX.25 packet mode."
echo -e "If you have a UV Pro, first run: ${YELLOW}et-uv-pro connect${NC}"
exit 1
fi
update_config native-packet
CMD="pat http"
et-log "Starting Pat with: ${CMD}"
${CMD}
}
start_vara_fm() {
update_config vara-fm
CMD="pat http"
et-log "Starting Pat with: ${CMD}"
${CMD}
}
start_vara_hf() {
update_config vara-hf
CMD="pat http"
et-log "Starting Pat with: ${CMD}"
${CMD}
}
update_config () {
[ -z "$ET_USER_CONFIG" ] && ET_USER_CONFIG="${HOME}/.config/emcomm-tools/user.json"
@@ -82,22 +125,30 @@ update_config () {
exit 1
fi
case $1 in
ardop)
PAT_CONF_FILE_TEMPLATE=/opt/emcomm-tools/conf/template.d/winlink/config.ardop.json
;;
packet)
PAT_CONF_FILE_TEMPLATE=/opt/emcomm-tools/conf/template.d/winlink/config.ax25-agw.json
;;
native-packet)
PAT_CONF_FILE_TEMPLATE=/opt/emcomm-tools/conf/template.d/winlink/config.ax25-native.json
;;
vara-fm)
PAT_CONF_FILE_TEMPLATE=/opt/emcomm-tools/conf/template.d/winlink/config.vara-fm.json
;;
vara-hf)
PAT_CONF_FILE_TEMPLATE=/opt/emcomm-tools/conf/template.d/winlink/config.vara-hf.json
;;
esac
et-log "Updating Pat configuration file: ${PAT_CONF_FILE}..."
cp -v ${PAT_CONF_FILE_TEMPLATE} ${PAT_CONF_FILE}
sed -i "s|{{ET_CALLSIGN}}|${CALLSIGN}|g" ${PAT_CONF_FILE}
sed -i "s|{{ET_WINLINK_PASSWD}}|${WINLINK_PASSWD}|g" ${PAT_CONF_FILE}
sed -i "s|{{ET_GRID}}|${GRID}|g" ${PAT_CONF_FILE}
# Enable the P2P listener for the current mode selected (ARDOP or AX.25)
case $1 in
ardop)
sed -i "s|{{ET_WINLINK_LISTEN}}|ardop|g" ${PAT_CONF_FILE}
;;
packet)
sed -i "s|{{ET_WINLINK_LISTEN}}|ax25|g" ${PAT_CONF_FILE}
;;
esac
}
case $1 in
@@ -107,6 +158,15 @@ case $1 in
start-packet)
start_packet
;;
start-native-packet)
start_native_packet
;;
start-vara-fm)
start_vara_fm
;;
start-vara-hf)
start_vara_hf
;;
*)
echo "Invalid command."
usage
@@ -0,0 +1,83 @@
{
"mycall": "{{ET_CALLSIGN}}",
"secure_login_password": "{{ET_WINLINK_PASSWD}}",
"auxiliary_addresses": [],
"locator": "{{ET_GRID}}",
"service_codes": [
"PUBLIC"
],
"http_addr": "localhost:8080",
"motd": [
"Open source Winlink client - getpat.io"
],
"connect_aliases": {
"telnet": "telnet://{mycall}:CMSTelnet@cms.winlink.org:8772/wl2k"
},
"listen": [ "ardop" ],
"hamlib_rigs": {
"et-rig": {
"address": "localhost:4532",
"network": "tcp"
}
},
"ax25": {
"engine": "agwpe",
"beacon": {
"every": 3600,
"message": "Winlink P2P",
"destination": "IDENT"
},
"agwpe": {"addr": "localhost:8000", "radio_port": 0}
},
"serial-tnc": {
"path": "/dev/ttyUSB0",
"serial_baud": 9600,
"hbaud": 1200,
"type": "Kenwood"
},
"ardop": {
"addr": "localhost:8515",
"arq_bandwidth": {
"Forced": false,
"Max": 500
},
"rig": "et-rig",
"ptt_ctrl": true,
"beacon_interval": 0,
"cwid_enabled": true
},
"pactor": {
"path": "/dev/ttyUSB0",
"baudrate": 57600,
"rig": "",
"custom_init_script": ""
},
"telnet": {
"listen_addr": ":8774",
"password": ""
},
"varahf": {
"host": "localhost",
"cmdPort": 8300,
"dataPort": 8301,
"bandwidth": 2300,
"rig": "",
"ptt_ctrl": false
},
"varafm": {
"host": "localhost",
"cmdPort": 8300,
"dataPort": 8301,
"bandwidth": 0,
"rig": "",
"ptt_ctrl": false
},
"gpsd": {
"enable_http": false,
"allow_forms": false,
"use_server_time": false,
"addr": "localhost:2947"
},
"schedule": {},
"version_reporting_disabled": false
}
@@ -0,0 +1,83 @@
{
"mycall": "{{ET_CALLSIGN}}",
"secure_login_password": "{{ET_WINLINK_PASSWD}}",
"auxiliary_addresses": [],
"locator": "{{ET_GRID}}",
"service_codes": [
"PUBLIC"
],
"http_addr": "localhost:8080",
"motd": [
"Open source Winlink client - getpat.io"
],
"connect_aliases": {
"telnet": "telnet://{mycall}:CMSTelnet@cms.winlink.org:8772/wl2k"
},
"listen": [ "ax25" ],
"hamlib_rigs": {
"et-rig": {
"address": "localhost:4532",
"network": "tcp"
}
},
"ax25": {
"engine": "agwpe",
"beacon": {
"every": 3600,
"message": "Winlink P2P",
"destination": "IDENT"
},
"agwpe": {"addr": "localhost:8000", "radio_port": 0}
},
"serial-tnc": {
"path": "/dev/ttyUSB0",
"serial_baud": 9600,
"hbaud": 1200,
"type": "Kenwood"
},
"ardop": {
"addr": "localhost:8515",
"arq_bandwidth": {
"Forced": false,
"Max": 500
},
"rig": "et-rig",
"ptt_ctrl": true,
"beacon_interval": 0,
"cwid_enabled": true
},
"pactor": {
"path": "/dev/ttyUSB0",
"baudrate": 57600,
"rig": "",
"custom_init_script": ""
},
"telnet": {
"listen_addr": ":8774",
"password": ""
},
"varahf": {
"host": "localhost",
"cmdPort": 8300,
"dataPort": 8301,
"bandwidth": 2300,
"rig": "",
"ptt_ctrl": false
},
"varafm": {
"host": "localhost",
"cmdPort": 8300,
"dataPort": 8301,
"bandwidth": 0,
"rig": "",
"ptt_ctrl": false
},
"gpsd": {
"enable_http": false,
"allow_forms": false,
"use_server_time": false,
"addr": "localhost:2947"
},
"schedule": {},
"version_reporting_disabled": false
}
@@ -0,0 +1,78 @@
{
"mycall": "{{ET_CALLSIGN}}",
"secure_login_password": "{{ET_WINLINK_PASSWD}}",
"auxiliary_addresses": [],
"locator": "{{ET_GRID}}",
"service_codes": [
"PUBLIC"
],
"http_addr": "localhost:8080",
"motd": [
"Open source Winlink client - getpat.io"
],
"connect_aliases": {
"telnet": "telnet://{mycall}:CMSTelnet@cms.winlink.org:8772/wl2k"
},
"listen": [ "ax25" ],
"hamlib_rigs": {
},
"ax25": {
"engine": "linux",
"beacon": {
"every": 3600,
"message": "Winlink P2P",
"destination": "IDENT"
},
"ax25_linux": {"port": "wl2k"}
},
"serial-tnc": {
"path": "/dev/ttyUSB0",
"serial_baud": 9600,
"hbaud": 1200,
"type": "Kenwood"
},
"ardop": {
"addr": "localhost:8515",
"arq_bandwidth": {
"Forced": false,
"Max": 500
},
"ptt_ctrl": true,
"beacon_interval": 0,
"cwid_enabled": true
},
"pactor": {
"path": "/dev/ttyUSB0",
"baudrate": 57600,
"rig": "",
"custom_init_script": ""
},
"telnet": {
"listen_addr": ":8774",
"password": ""
},
"varahf": {
"host": "localhost",
"cmdPort": 8300,
"dataPort": 8301,
"bandwidth": 2300,
"rig": "",
"ptt_ctrl": true
},
"varafm": {
"host": "localhost",
"cmdPort": 8300,
"dataPort": 8301,
"bandwidth": 0,
"rig": "",
"ptt_ctrl": false
},
"gpsd": {
"enable_http": false,
"allow_forms": false,
"use_server_time": false,
"addr": "localhost:2947"
},
"schedule": {},
"version_reporting_disabled": false
}
@@ -0,0 +1,83 @@
{
"mycall": "{{ET_CALLSIGN}}",
"secure_login_password": "{{ET_WINLINK_PASSWD}}",
"auxiliary_addresses": [],
"locator": "{{ET_GRID}}",
"service_codes": [
"PUBLIC"
],
"http_addr": "localhost:8080",
"motd": [
"Open source Winlink client - getpat.io"
],
"connect_aliases": {
"telnet": "telnet://{mycall}:CMSTelnet@cms.winlink.org:8772/wl2k"
},
"listen": [],
"hamlib_rigs": {
"et-rig": {
"address": "localhost:4532",
"network": "tcp"
}
},
"ax25": {
"engine": "agwpe",
"beacon": {
"every": 3600,
"message": "Winlink P2P",
"destination": "IDENT"
},
"agwpe": {"addr": "localhost:8000", "radio_port": 0}
},
"serial-tnc": {
"path": "/dev/ttyUSB0",
"serial_baud": 9600,
"hbaud": 1200,
"type": "Kenwood"
},
"ardop": {
"addr": "localhost:8515",
"arq_bandwidth": {
"Forced": false,
"Max": 500
},
"rig": "et-rig",
"ptt_ctrl": true,
"beacon_interval": 0,
"cwid_enabled": true
},
"pactor": {
"path": "/dev/ttyUSB0",
"baudrate": 57600,
"rig": "",
"custom_init_script": ""
},
"telnet": {
"listen_addr": ":8774",
"password": ""
},
"varahf": {
"host": "localhost",
"cmdPort": 8300,
"dataPort": 8301,
"bandwidth": 2300,
"rig": "et-rig",
"ptt_ctrl": true
},
"varafm": {
"host": "localhost",
"cmdPort": 8300,
"dataPort": 8301,
"bandwidth": 0,
"rig": "et-rig",
"ptt_ctrl": true
},
"gpsd": {
"enable_http": false,
"allow_forms": false,
"use_server_time": false,
"addr": "localhost:2947"
},
"schedule": {},
"version_reporting_disabled": false
}
@@ -0,0 +1,83 @@
{
"mycall": "{{ET_CALLSIGN}}",
"secure_login_password": "{{ET_WINLINK_PASSWD}}",
"auxiliary_addresses": [],
"locator": "{{ET_GRID}}",
"service_codes": [
"PUBLIC"
],
"http_addr": "localhost:8080",
"motd": [
"Open source Winlink client - getpat.io"
],
"connect_aliases": {
"telnet": "telnet://{mycall}:CMSTelnet@cms.winlink.org:8772/wl2k"
},
"listen": [],
"hamlib_rigs": {
"et-rig": {
"address": "localhost:4532",
"network": "tcp"
}
},
"ax25": {
"engine": "agwpe",
"beacon": {
"every": 3600,
"message": "Winlink P2P",
"destination": "IDENT"
},
"agwpe": {"addr": "localhost:8000", "radio_port": 0}
},
"serial-tnc": {
"path": "/dev/ttyUSB0",
"serial_baud": 9600,
"hbaud": 1200,
"type": "Kenwood"
},
"ardop": {
"addr": "localhost:8515",
"arq_bandwidth": {
"Forced": false,
"Max": 500
},
"rig": "et-rig",
"ptt_ctrl": true,
"beacon_interval": 0,
"cwid_enabled": true
},
"pactor": {
"path": "/dev/ttyUSB0",
"baudrate": 57600,
"rig": "",
"custom_init_script": ""
},
"telnet": {
"listen_addr": ":8774",
"password": ""
},
"varahf": {
"host": "localhost",
"cmdPort": 8300,
"dataPort": 8301,
"bandwidth": 2300,
"rig": "et-rig",
"ptt_ctrl": true
},
"varafm": {
"host": "localhost",
"cmdPort": 8300,
"dataPort": 8301,
"bandwidth": 0,
"rig": "et-rig",
"ptt_ctrl": true
},
"gpsd": {
"enable_http": false,
"allow_forms": false,
"use_server_time": false,
"addr": "localhost:2947"
},
"schedule": {},
"version_reporting_disabled": false
}