mercury - Added initial support for Winlink over Mercury HF modem

This commit is contained in:
thetechprepper
2026-08-12 18:30:46 -07:00
parent 24d13e406b
commit 8454ddbda3
6 changed files with 74 additions and 4 deletions
@@ -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
+3 -1
View File
@@ -2,7 +2,7 @@
# #
# Author : Gaston Gonzalez # Author : Gaston Gonzalez
# Date : 12 November 2024 # Date : 12 November 2024
# Updated : 16 July 2026 # Updated : 12 August 2026
# Purpose : Stops all EmComm Tools soundcard-based services (i.e. modems) # Purpose : Stops all EmComm Tools soundcard-based services (i.e. modems)
# and radio applications to ensure a clean start for the next mode. # and radio applications to ensure a clean start for the next mode.
@@ -19,6 +19,7 @@ stop_pat() {
# 2. Stop the applications first, then the modems. # 2. Stop the applications first, then the modems.
stop_all_services() { stop_all_services() {
systemctl --user stop et-service-winlink-ardop 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-packet
systemctl --user stop et-service-winlink-native-packet systemctl --user stop et-service-winlink-native-packet
systemctl --user stop et-service-ardop systemctl --user stop et-service-ardop
@@ -41,6 +42,7 @@ stop_all_services() {
systemctl --user stop et-service-mercury-balanced systemctl --user stop et-service-mercury-balanced
systemctl --user stop et-service-mercury-reliability systemctl --user stop et-service-mercury-reliability
systemctl --user stop et-service-mercury-fast systemctl --user stop et-service-mercury-fast
systemctl --user stop et-service-mercury-winlink
# Stop VARA with a sledge hammer # Stop VARA with a sledge hammer
pkill et-winlink pkill et-winlink
+5 -1
View File
@@ -2,7 +2,7 @@
# #
# Author : Gaston Gonzalez # Author : Gaston Gonzalez
# Date : 16 July 2026 # Date : 16 July 2026
# Updated : 17 July 2026 # Updated : 12 August 2026
# Purpose : Wrapper script for starting Mercury with PnP support # Purpose : Wrapper script for starting Mercury with PnP support
# #
# Preconditions: # Preconditions:
@@ -29,6 +29,7 @@ usage() {
echo " reliability - Max reliability (Slower Speed) [DATAC1]" echo " reliability - Max reliability (Slower Speed) [DATAC1]"
echo " balanced - Balanced (Reliability and Speed) [DATAC17]" echo " balanced - Balanced (Reliability and Speed) [DATAC17]"
echo " fast - Fast (Low Reliability) [QAM16C2]" echo " fast - Fast (Low Reliability) [QAM16C2]"
echo " winlink - Used for Winlink [DATAC3]"
} }
if [[ $# -ne 1 ]]; then if [[ $# -ne 1 ]]; then
@@ -43,6 +44,9 @@ case "${MODE}" in
reliability) reliability)
MODE_INDEX="0" MODE_INDEX="0"
;; ;;
winlink)
MODE_INDEX="1"
;;
balanced) balanced)
MODE_INDEX="9" MODE_INDEX="9"
et-log "Mode not yet supported." et-log "Mode not yet supported."
+9 -1
View File
@@ -2,7 +2,7 @@
# #
# Author : Gaston Gonzalez # Author : Gaston Gonzalez
# Date : 6 November 2024 # Date : 6 November 2024
# Updated : 14 June 2026 # Updated : 12 August 2026
# Purpose : Configures the system for a specific mode of operation # Purpose : Configures the system for a specific mode of operation
# Use a simple text file to save the state of the last mode selected # Use a simple text file to save the state of the last mode selected
@@ -20,6 +20,7 @@ MODE_ID_BBS_SERVER="bbs-server"
MODE_ID_CHAT_CLIENT="chat-chattervox" MODE_ID_CHAT_CLIENT="chat-chattervox"
MODE_ID_PACKET_DIGIPEATER="packet-digipeater" MODE_ID_PACKET_DIGIPEATER="packet-digipeater"
MODE_ID_WINLINK_ARDOP="winlink-ardop" MODE_ID_WINLINK_ARDOP="winlink-ardop"
MODE_ID_WINLINK_MERCURY="winlink-mercury"
MODE_ID_WINLINK_PACKET="winlink-packet" MODE_ID_WINLINK_PACKET="winlink-packet"
MODE_ID_WINLINK_VARA_HF="winlink-vara-hf" MODE_ID_WINLINK_VARA_HF="winlink-vara-hf"
MODE_ID_WINLINK_VARA_FM="winlink-vara-fm" MODE_ID_WINLINK_VARA_FM="winlink-vara-fm"
@@ -150,6 +151,7 @@ if [ -e "${HOME}/.wine32/drive_c/VARA FM/VARAFM.exe" ]; then
options+=("${MODE_ID_WINLINK_VARA_FM}" "Winlink over VHF/UHF (VARA FM)") options+=("${MODE_ID_WINLINK_VARA_FM}" "Winlink over VHF/UHF (VARA FM)")
fi fi
options+=("${MODE_ID_WINLINK_MERCURY}" "Winlink over HF (Mercury)")
options+=("${MODE_ID_WINLINK_ARDOP}" "Winlink over HF (ARDOP)") options+=("${MODE_ID_WINLINK_ARDOP}" "Winlink over HF (ARDOP)")
if [ -e "${HOME}/.wine32/drive_c/VARA/VARA.exe" ]; then if [ -e "${HOME}/.wine32/drive_c/VARA/VARA.exe" ]; then
@@ -250,6 +252,12 @@ if [ $exit_status -eq 0 ]; then
start_and_wait_for_service et-service-winlink-ardop start_and_wait_for_service et-service-winlink-ardop
min http://localhost:8080 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}) ${MODE_ID_WINLINK_PACKET})
start_and_wait_for_service et-service-direwolf-simple start_and_wait_for_service et-service-direwolf-simple
start_and_wait_for_service et-service-winlink-packet start_and_wait_for_service et-service-winlink-packet
+18 -1
View File
@@ -2,7 +2,7 @@
# #
# Author : Gaston Gonzalez # Author : Gaston Gonzalez
# Date : 4 November 2024 # Date : 4 November 2024
# Updated : 4 February 2025 # Updated : 12 August 2026
# Purpose : Wrapper script for starting YAAC with PnP support # Purpose : Wrapper script for starting YAAC with PnP support
# #
# Preconditions: # Preconditions:
@@ -26,6 +26,7 @@ usage() {
echo " start-native-packet - Start Pat Winlink in native AX.25 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-fm - Start Pat Winlink in VARA FM mode"
echo " start-vara-hf - Start Pat Winlink in VARA HF mode" echo " start-vara-hf - Start Pat Winlink in VARA HF mode"
echo " start-mercury-hf - Start Pat Winlink in Mercury HF mode"
} }
if [ $# -ne 1 ]; then if [ $# -ne 1 ]; then
@@ -112,6 +113,16 @@ start_vara_hf() {
${CMD} ${CMD}
} }
start_mercury_hf() {
update_config mercury-hf
CMD="pat http"
et-log "Starting Pat with: ${CMD}"
${CMD}
}
update_config () { update_config () {
[ -z "$ET_USER_CONFIG" ] && ET_USER_CONFIG="${HOME}/.config/emcomm-tools/user.json" [ -z "$ET_USER_CONFIG" ] && ET_USER_CONFIG="${HOME}/.config/emcomm-tools/user.json"
@@ -141,6 +152,9 @@ update_config () {
vara-hf) vara-hf)
PAT_CONF_FILE_TEMPLATE=/opt/emcomm-tools/conf/template.d/winlink/config.vara-hf.json 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
;;
esac esac
et-log "Updating Pat configuration file: ${PAT_CONF_FILE}..." et-log "Updating Pat configuration file: ${PAT_CONF_FILE}..."
@@ -167,6 +181,9 @@ case $1 in
start-vara-hf) start-vara-hf)
start_vara_hf start_vara_hf
;; ;;
start-mercury-hf)
start_mercury_hf
;;
*) *)
echo "Invalid command." echo "Invalid command."
usage usage