Merge pull request #113 from thetechprepper/feature/winlink-mercury

Merge feature/winlink-mercury to release/r7
This commit is contained in:
thetechprepper
2026-08-23 06:50:13 -07:00
committed by GitHub
14 changed files with 223 additions and 17 deletions
+16 -4
View File
@@ -1,7 +1,7 @@
# EmComm Tools Regression Tests
- **Build**: ETC R7 Build 15
- **Date**: 8 August 2026
- **Build**: ETC R7 Build 18
- **Date**: 23 August 2026
## First Login
@@ -87,8 +87,19 @@
* [ ] RMS station listed
* [ ] Select RMS gateway => VFO updated
* [ ] Connect
* [ ] winlink-mercury (P2P)
* [ ] wwv
* [ ] reticulum
## Reticulum
* [ ] Blueprints
* [ ] Rnode
* [ ] Packet
* [ ] Modem73
* [ ] Mercury
* [ ] Local network
* [ ] Internet
* [ ] Transport
* [ ] MeshChat
## Bluetooth TNC
@@ -161,6 +172,7 @@
* [ ] modem73
* [ ] mercury
## Email
## Email/Internet
* [ ] Thunderbird installed
* [ ] et-mode: winlink-telnet
@@ -0,0 +1,20 @@
# Author : Gaston Gonzalez
# Date : 12 August 2026
# Purpose : User systemd unit file for EmComm Tools that starts mercury
# : in a Winlink configuration.
#
# Usage:
# Check status : systemctl --user status et-service-mercury-winlink
# Start service : systemctl --user start et-service-mercury-winlink
# Stop service : systemctl --user stop et-service-mercury-winlink
# Reload this config : systemctl --user daemon-reload
[Unit]
Description=EmComm Tools mercury default service for winlink performance
[Service]
ExecStart=/opt/emcomm-tools/bin/et-mercury winlink
Restart=no
[Install]
WantedBy=multi-user.target
@@ -0,0 +1,19 @@
# Author : Gaston Gonzalez
# Date : 12 August 2026
# Purpose : User systemd unit file for EmComm Tools Winlink over Mercury HF
#
# Usage:
# Check status : systemctl --user status et-service-winlink-mercury
# Start service : systemctl --user start et-service-winlink-mercury
# Stop service : systemctl --user stop et-service-winlink-mercury
# Reload this config : systemctl --user daemon-reload
[Unit]
Description=EmComm Tools Winlink ARDOP service
[Service]
ExecStart=/opt/emcomm-tools/bin/et-winlink start-mercury-hf
Restart=no
[Install]
WantedBy=multi-user.target
@@ -0,0 +1,19 @@
# Author : Gaston Gonzalez
# Date : 21 November 2024
# Purpose : User systemd unit file for EmComm Tools Winlink over ARDOP
#
# Usage:
# Check status : systemctl --user status et-service-winlink-telnet
# Start service : systemctl --user start et-service-winlink-telnet
# Stop service : systemctl --user stop et-service-winlink-telnet
# Reload this config : systemctl --user daemon-reload
[Unit]
Description=EmComm Tools Winlink telnet service
[Service]
ExecStart=/opt/emcomm-tools/bin/et-winlink start-telnet
Restart=no
[Install]
WantedBy=multi-user.target
File diff suppressed because one or more lines are too long
+5 -1
View File
@@ -2,7 +2,7 @@
#
# Author : Gaston Gonzalez
# Date : 12 November 2024
# Updated : 16 July 2026
# Updated : 23 August 2026
# Purpose : Stops all EmComm Tools soundcard-based services (i.e. modems)
# and radio applications to ensure a clean start for the next mode.
@@ -19,8 +19,10 @@ stop_pat() {
# 2. Stop the applications first, then the modems.
stop_all_services() {
systemctl --user stop et-service-winlink-ardop
systemctl --user stop et-service-winlink-mercury
systemctl --user stop et-service-winlink-packet
systemctl --user stop et-service-winlink-native-packet
systemctl --user stop et-service-winlink-telnet
systemctl --user stop et-service-ardop
systemctl --user stop et-service-direwolf-300
systemctl --user stop et-service-direwolf-9600
@@ -41,6 +43,8 @@ stop_all_services() {
systemctl --user stop et-service-mercury-balanced
systemctl --user stop et-service-mercury-reliability
systemctl --user stop et-service-mercury-fast
systemctl --user stop et-service-mercury-winlink
pkill mercury
# Stop VARA with a sledge hammer
pkill et-winlink
+5 -1
View File
@@ -2,7 +2,7 @@
#
# Author : Gaston Gonzalez
# Date : 16 July 2026
# Updated : 17 July 2026
# Updated : 12 August 2026
# Purpose : Wrapper script for starting Mercury with PnP support
#
# Preconditions:
@@ -29,6 +29,7 @@ usage() {
echo " reliability - Max reliability (Slower Speed) [DATAC1]"
echo " balanced - Balanced (Reliability and Speed) [DATAC17]"
echo " fast - Fast (Low Reliability) [QAM16C2]"
echo " winlink - Used for Winlink [DATAC3]"
}
if [[ $# -ne 1 ]]; then
@@ -43,6 +44,9 @@ case "${MODE}" in
reliability)
MODE_INDEX="0"
;;
winlink)
MODE_INDEX="1"
;;
balanced)
MODE_INDEX="9"
et-log "Mode not yet supported."
+15 -1
View File
@@ -2,7 +2,7 @@
#
# Author : Gaston Gonzalez
# Date : 6 November 2024
# Updated : 14 June 2026
# Updated : 23 August 2026
# Purpose : Configures the system for a specific mode of operation
# Use a simple text file to save the state of the last mode selected
@@ -20,9 +20,11 @@ MODE_ID_BBS_SERVER="bbs-server"
MODE_ID_CHAT_CLIENT="chat-chattervox"
MODE_ID_PACKET_DIGIPEATER="packet-digipeater"
MODE_ID_WINLINK_ARDOP="winlink-ardop"
MODE_ID_WINLINK_MERCURY="winlink-mercury"
MODE_ID_WINLINK_PACKET="winlink-packet"
MODE_ID_WINLINK_VARA_HF="winlink-vara-hf"
MODE_ID_WINLINK_VARA_FM="winlink-vara-fm"
MODE_ID_WINLINK_TELNET="winlink-telnet"
MODE_ID_TIME_WWV="time-wwv"
# Default to 1200 baud packet for terminal sessions
@@ -150,12 +152,14 @@ 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_MERCURY}" "Winlink over HF (Mercury)")
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
options+=("${MODE_ID_WINLINK_TELNET}" "Winlink over telnet (Internet)")
options+=("${MODE_ID_TIME_WWV}" "Sync clock to WWV")
# Prompt user for option and save exit status
@@ -250,6 +254,12 @@ if [ $exit_status -eq 0 ]; then
start_and_wait_for_service et-service-winlink-ardop
min http://localhost:8080
;;
${MODE_ID_WINLINK_MERCURY})
et-log "Using Mercury as the modem."
start_and_wait_for_service et-service-mercury-winlink
start_and_wait_for_service et-service-winlink-mercury
min http://localhost:8080
;;
${MODE_ID_WINLINK_PACKET})
start_and_wait_for_service et-service-direwolf-simple
start_and_wait_for_service et-service-winlink-packet
@@ -271,6 +281,10 @@ if [ $exit_status -eq 0 ]; then
sleep 1
min http://localhost:8080 2>/dev/null
;;
${MODE_ID_WINLINK_TELNET})
start_and_wait_for_service et-service-winlink-telnet
min http://localhost:8080 2>/dev/null
;;
${MODE_ID_TIME_WWV})
wwv_mode
sudo /opt/emcomm-tools/sbin/wrapper-et-wwv.sh
+36 -1
View File
@@ -2,7 +2,7 @@
#
# Author : Gaston Gonzalez
# Date : 4 November 2024
# Updated : 4 February 2025
# Updated : 23 August 2026
# Purpose : Wrapper script for starting YAAC with PnP support
#
# Preconditions:
@@ -26,6 +26,8 @@ usage() {
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"
echo " start-mercury-hf - Start Pat Winlink in Mercury HF mode"
echo " start-telnet - Start Pat Winlink in telnet mode"
}
if [ $# -ne 1 ]; then
@@ -112,6 +114,27 @@ start_vara_hf() {
${CMD}
}
start_mercury_hf() {
update_config mercury-hf
CMD="pat http"
et-log "Starting Pat with: ${CMD}"
${CMD}
}
start_telnet () {
update_config telnet
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"
@@ -141,6 +164,12 @@ update_config () {
vara-hf)
PAT_CONF_FILE_TEMPLATE=/opt/emcomm-tools/conf/template.d/winlink/config.vara-hf.json
;;
mercury-hf)
PAT_CONF_FILE_TEMPLATE=/opt/emcomm-tools/conf/template.d/winlink/config.vara-hf.json
;;
telnet)
PAT_CONF_FILE_TEMPLATE=/opt/emcomm-tools/conf/template.d/winlink/config.telnet.json
;;
esac
et-log "Updating Pat configuration file: ${PAT_CONF_FILE}..."
@@ -167,6 +196,12 @@ case $1 in
start-vara-hf)
start_vara_hf
;;
start-mercury-hf)
start_mercury_hf
;;
start-telnet)
start_telnet
;;
*)
echo "Invalid command."
usage
@@ -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": [],
"hamlib_rigs": {},
"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": "",
"ptt_ctrl": false,
"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": true,
"allow_forms": true,
"use_server_time": false,
"addr": "localhost:2947"
},
"schedule": {},
"version_reporting_disabled": false
}
+2 -2
View File
@@ -2,7 +2,7 @@
#
# Author : Gaston Gonzalez
# Date : 16 March 2024
# Updated : 16 March 2025
# Updated : 12 August 2026
# Purpose : Install light weight web browsers
#
# Postconditions:
@@ -11,7 +11,7 @@
et-log "Installing Min web browser..."
VERSION="1.34.1"
VERSION="1.35.6"
FILE="min-${VERSION}-amd64.deb"
URL="https://github.com/minbrowser/min/releases/download/v${VERSION}/${FILE}"
+3 -2
View File
@@ -1,6 +1,7 @@
#!/bin/bash
# Author : Gaston Gonzalez
# Date : 17 July 2025
# Date : 17 July 2026
# Updated : 12 August 2026
# Purpose : Builds and installs the Mercury HF modem
set -e
trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG
@@ -9,7 +10,7 @@ trap 'et-log "\"${last_command}\" command failed with exit code $?."' ERR
. ./env.sh
APP="mercury"
VERSION="1.9.9"
VERSION="1.9.11"
APP_AND_VERSION="${APP}-${VERSION}"
GIT_TAG="v${VERSION}"
GIT_URL="https://github.com/Rhizomatica/mercury.git"
+2 -2
View File
@@ -1,13 +1,13 @@
#!/bin/bash
# Author : Gaston Gonzalez
# Date : 11 January 2023
# Updated : 4 November 2024
# Updated : 20 August 2026
# Purpose : Install Pat Winlink client
set -e
trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG
trap 'et-log "\"${last_command}\" command failed with exit code $?."' ERR
VERSION=0.16.0
VERSION=1.0.0
FILE="pat_${VERSION}_linux_amd64.deb"
et-log "Installing Pat Winlink client version ${VERSION}..."
+2 -2
View File
@@ -1,8 +1,8 @@
#!/bin/bash
# Author : Gaston Gonzalez
# Date : 3 November 2024
# Updated : 4 November 2024
# Updated : 21 August 2026
# Purpose : Test Pat Winlink installation
OUT=$(pat version | grep v0.16.0)
OUT=$(pat version | grep v1.0.0)
exit $?