diff --git a/REGRESSION.md b/REGRESSION.md index 472264d..d6bcced 100644 --- a/REGRESSION.md +++ b/REGRESSION.md @@ -1,7 +1,7 @@ # ETC Regression Tests -- **Build**: ETC R7 Build 11 -- **Date**: 5 July 2026 +- **Build**: ETC R7 Build 12 +- **Date**: 16 July 2026 ## Desktop/Launcher Icons @@ -143,9 +143,19 @@ * [ ] Heltec v4 PnP (/dev/et-lora) * [ ] Offline firmware: rnodeconf --autoinstall --nocheck --fw-version 1.86 * [ ] et-reticulum - * [ ] All blueprints + * [ ] rnode blueprint + * [ ] packet radio blueprint + * [ ] transport blueprint + * [ ] modem73 blueprint + * [ ] local network blueprint + * [ ] internet blueprint * [ ] All permutations of radios and LoRa connected/disconnected +## Modems + +* [ ] modem73 +* [ ] mercury + ## Email * [ ] Thunderbird installed diff --git a/overlay/etc/skel/.config/systemd/user/et-service-mercury-balanced.service b/overlay/etc/skel/.config/systemd/user/et-service-mercury-balanced.service new file mode 100644 index 0000000..c1c9c7f --- /dev/null +++ b/overlay/etc/skel/.config/systemd/user/et-service-mercury-balanced.service @@ -0,0 +1,20 @@ +# Author : Gaston Gonzalez +# Date : 16 July 2026 +# Purpose : User systemd unit file for EmComm Tools that starts mercury +# : in a balanced configuration. +# +# Usage: +# Check status : systemctl --user status et-service-mercury-balanced +# Start service : systemctl --user start et-service-mercury-balanced +# Stop service : systemctl --user stop et-service-mercury-balanced +# Reload this config : systemctl --user daemon-reload + +[Unit] +Description=EmComm Tools mercury default service for balanced performance + +[Service] +ExecStart=/opt/emcomm-tools/bin/et-mercury balanced +Restart=no + +[Install] +WantedBy=multi-user.target diff --git a/overlay/etc/skel/.config/systemd/user/et-service-mercury-fast.service b/overlay/etc/skel/.config/systemd/user/et-service-mercury-fast.service new file mode 100644 index 0000000..c66e698 --- /dev/null +++ b/overlay/etc/skel/.config/systemd/user/et-service-mercury-fast.service @@ -0,0 +1,20 @@ +# Author : Gaston Gonzalez +# Date : 16 July 2026 +# Purpose : User systemd unit file for EmComm Tools that starts mercury +# : in a fast configuration. +# +# Usage: +# Check status : systemctl --user status et-service-mercury-fast +# Start service : systemctl --user start et-service-mercury-fast +# Stop service : systemctl --user stop et-service-mercury-fast +# Reload this config : systemctl --user daemon-reload + +[Unit] +Description=EmComm Tools mercury default service for fast performance + +[Service] +ExecStart=/opt/emcomm-tools/bin/et-mercury fast +Restart=no + +[Install] +WantedBy=multi-user.target diff --git a/overlay/etc/skel/.config/systemd/user/et-service-mercury-reliability.service b/overlay/etc/skel/.config/systemd/user/et-service-mercury-reliability.service new file mode 100644 index 0000000..44a9664 --- /dev/null +++ b/overlay/etc/skel/.config/systemd/user/et-service-mercury-reliability.service @@ -0,0 +1,20 @@ +# Author : Gaston Gonzalez +# Date : 16 July 2026 +# Purpose : User systemd unit file for EmComm Tools that starts mercury +# : in a reliability configuration. +# +# Usage: +# Check status : systemctl --user status et-service-mercury-reliability +# Start service : systemctl --user start et-service-mercury-reliability +# Stop service : systemctl --user stop et-service-mercury-reliability +# Reload this config : systemctl --user daemon-reload + +[Unit] +Description=EmComm Tools mercury default service for reliability performance + +[Service] +ExecStart=/opt/emcomm-tools/bin/et-mercury reliability +Restart=no + +[Install] +WantedBy=multi-user.target diff --git a/overlay/etc/skel/.reticulum/README.md b/overlay/etc/skel/.reticulum/README.md index ede9738..fb4db4a 100644 --- a/overlay/etc/skel/.reticulum/README.md +++ b/overlay/etc/skel/.reticulum/README.md @@ -26,19 +26,22 @@ the supported tokens below. ET_CALLSIGN ET_RETICULUM_INTERFACE_AUTO_ENABLED ET_RETICULUM_INTERFACE_AX25KISS_ENABLED +ET_RETICULUM_INTERFACE_MERCURY_ENABLED ET_RETICULUM_INTERFACE_MODEM73_ENABLED -ET_RETICULUM_INTERFACE_RNODE_BANDWIDTH -ET_RETICULUM_INTERFACE_RNODE_CODINGRATE -ET_RETICULUM_INTERFACE_RNODE_ENABLED -ET_RETICULUM_INTERFACE_RNODE_FREQUENCY -ET_RETICULUM_INTERFACE_RNODE_SPREADINGFACTOR -ET_RETICULUM_INTERFACE_RNODE_TXPOWER -... ``` * Valid characters are capitalized letters (`A-Z`) and underscores (`_`). * Start with the prefix: `ET_`. * Reticulum specific tokens start with the prefix: `ET_RETICULUM_`. +The following replacement tokens are planned, but have not yet been +implemented. - +``` +ET_RETICULUM_INTERFACE_RNODE_BANDWIDTH +ET_RETICULUM_INTERFACE_RNODE_CODINGRATE +ET_RETICULUM_INTERFACE_RNODE_ENABLED +ET_RETICULUM_INTERFACE_RNODE_FREQUENCY +ET_RETICULUM_INTERFACE_RNODE_SPREADINGFACTOR +ET_RETICULUM_INTERFACE_RNODE_TXPOWER +``` diff --git a/overlay/etc/skel/.reticulum/config.blueprint.local-network-only-node b/overlay/etc/skel/.reticulum/config.blueprint.local-network-only-node index bef0286..7b573a2 100644 --- a/overlay/etc/skel/.reticulum/config.blueprint.local-network-only-node +++ b/overlay/etc/skel/.reticulum/config.blueprint.local-network-only-node @@ -1,5 +1,6 @@ # Author : Gaston Gonzalez # Date : 14 June 2026 +# Updated : 16 July 2026 # Blueprint : Local network only # Purpose : This configuration is a blueprint for running a node that # only interacts with other nodes on the local Ethernet or @@ -112,4 +113,4 @@ [[Default Interface]] type = AutoInterface - enabled = Yes + enabled = yes diff --git a/overlay/etc/skel/.reticulum/config.blueprint.mercury-only-node b/overlay/etc/skel/.reticulum/config.blueprint.mercury-only-node new file mode 100644 index 0000000..763a0ef --- /dev/null +++ b/overlay/etc/skel/.reticulum/config.blueprint.mercury-only-node @@ -0,0 +1,99 @@ +# Author : Gaston Gonzalez +# Date : 16 July 2026 +# Blueprint : Radio-Only Node, transport disabled +# Purpose : This confguration is a blueprint for a radio-only node. +# It uses Mercury as the radio interface. + +[reticulum] + + # If you enable Transport, your system will route traffic + # for other peers, pass announces and serve path requests. + # This should only be done for systems that are suited to + # act as transport nodes, ie. if they are stationary and + # always-on. This directive is optional and can be removed + # for brevity. + + enable_transport = False + + + # By default, the first program to launch the Reticulum + # Network Stack will create a shared instance, that other + # programs can communicate with. Only the shared instance + # opens all the configured interfaces directly, and other + # local programs communicate with the shared instance over + # a local socket. This is completely transparent to the + # user, and should generally be turned on. This directive + # is optional and can be removed for brevity. + + share_instance = Yes + + + # If you want to run multiple *different* shared instances + # on the same system, you will need to specify different + # instance names for each. On platforms supporting domain + # sockets, this can be done with the instance_name option: + + instance_name = default + +# You can configure whether Reticulum should discover +# available interfaces from other Transport Instances over +# the network. If this option is enabled, Reticulum will +# collect interface information discovered from the network. + +# discover_interfaces = No + + +# You can configure Reticulum to panic and forcibly close +# if an unrecoverable interface error occurs, such as the +# hardware device for an interface disappearing. This is +# an optional directive, and can be left out for brevity. +# This behaviour is disabled by default. + +# panic_on_interface_error = No + + +# If you're connecting to a large external network, you +# can use one or more external blackhole list to block +# spammy and excessive announces onto your network. This +# funtionality is especially useful if you're hosting public +# entrypoints or gateways. The list source below provides a +# functional example, but better, more timely maintained +# lists probably exist in the community. + +# blackhole_sources = 521c87a83afb8f29e4455e77930b973b + + +[logging] + # Valid log levels are 0 through 7: + # 0: Log only critical information + # 1: Log errors and lower log levels + # 2: Log warnings and lower log levels + # 3: Log notices and lower log levels + # 4: Log info and lower (this is the default) + # 5: Verbose logging + # 6: Debug logging + # 7: Extreme logging + + loglevel = 4 + + +[interfaces] + + [[Default Interface]] + type = AutoInterface + enabled = no + + # See https://github.com/Rhizomatica/mercury/blob/mercuryv2/docs/RETICULUM.md + [[Mercury HF]] + type = TCPClientInterface + mode = roaming + interface_enabled = {{ET_RETICULUM_INTERFACE_MERCURY_ENABLED}} + kiss_framing = yes + target_host = 127.0.0.1 + target_port = 8100 + + # Index Mode Payload Rate (bps) + # 0 DATAC1 980 + # 9 DATAC17 1410 (not yet supported) + # 10 QAM16C2 3100 (not yet supported) + bitrate = 980 diff --git a/overlay/etc/skel/.reticulum/config.blueprint.modem73-only-node b/overlay/etc/skel/.reticulum/config.blueprint.modem73-only-node index e3b6e85..80b3245 100644 --- a/overlay/etc/skel/.reticulum/config.blueprint.modem73-only-node +++ b/overlay/etc/skel/.reticulum/config.blueprint.modem73-only-node @@ -1,9 +1,9 @@ # Author : Gaston Gonzalez # Date : 28 June 2026 +# Updated : 16 July 2026 # Blueprint : Radio-Only Node, transport disabled # Purpose : This confguration is a blueprint for a radio-only node. -# It uses modem73 as the radio interface. If a supported -# et-lora device is detected, it will be enabled, too. +# It uses modem73 as the radio interface. [reticulum] @@ -82,50 +82,8 @@ [[Default Interface]] type = AutoInterface - enabled = No + enabled = no - [[RNode LoRa Interface]] - type = RNodeInterface - mode = roaming - enabled = {{ET_RETICULUM_INTERFACE_RNODE_ENABLED}} - - port = /dev/et-lora - - # Set frequency to 915 MHz - frequency = 915000000 - #frequency = {{ET_RETICULUM_INTERFACE_RNODE_FREQUENCY}} - - # Set LoRa bandwidth to 125 KHz - bandwidth = 125000 - #bandwidth = {{ET_RETICULUM_INTERFACE_RNODE_BANDWIDTH}} - - # Set TX power in dBm - # - # 7 dBm = 5 mW - # 10 dBm = 10 mW - # 14 dBm = 25 mW - # 17 dBm = 50 mW - # 20 dBm = 100 mW - # 22 dBm = 158 mW - # 24 dBm = 251 mW - # 27 dBm = 501 mW - # 28 dBm = 631 mW - # 30 dBm = 1000 mW (1 W) - txpower = {{ET_RETICULUM_INTERFACE_RNODE_TXPOWER}} - - # Select spreading factor 8. Valid - # range is 7 through 12, with 7 - # being the fastest and 12 having - # the longest range. - spreadingfactor = 9 - #spreadingfactor = {{ET_RETICULUM_INTERFACE_RNODE_SPREADINGFACTOR}} - - # Select coding rate 5. Valid range - # is 5 throough 8, with 5 being the - # fastest, and 8 the longest range. - codingrate = 5 - #codingrate = {{ET_RETICULUM_INTERFACE_RNODE_CODINGRATE}} - [[modem73]] type = Modem73Interface mode = roaming diff --git a/overlay/etc/skel/.reticulum/config.blueprint.packet-only-node b/overlay/etc/skel/.reticulum/config.blueprint.packet-only-node index 6b47185..d03764a 100644 --- a/overlay/etc/skel/.reticulum/config.blueprint.packet-only-node +++ b/overlay/etc/skel/.reticulum/config.blueprint.packet-only-node @@ -1,10 +1,9 @@ # Author : Gaston Gonzalez # Date : 7 June 2026 -# Updated : 28 June 2026 +# Updated : 16 July 2026 # Blueprint : Radio-Only Node, transport disabled # Purpose : This confguration is a blueprint for a radio-only node. -# It uses an AX.25 KISS radio interface. If a supported -# et-lora device is detected, it will be enabled, too. +# It uses an AX.25 KISS radio interface. [reticulum] @@ -84,7 +83,7 @@ [[Default Interface]] type = AutoInterface - enabled = No + enabled = no [[Packet Radio AX.25 KISS]] type = AX25KISSInterface @@ -96,45 +95,3 @@ port = /tmp/kisstnc mtu = 256 - - [[RNode LoRa Interface]] - type = RNodeInterface - mode = roaming - enabled = {{ET_RETICULUM_INTERFACE_RNODE_ENABLED}} - - port = /dev/et-lora - - # Set frequency to 915 MHz - frequency = 915000000 - #frequency = {{ET_RETICULUM_INTERFACE_RNODE_FREQUENCY}} - - # Set LoRa bandwidth to 125 KHz - bandwidth = 125000 - #bandwidth = {{ET_RETICULUM_INTERFACE_RNODE_BANDWIDTH}} - - # Set TX power in dBm - # - # 7 dBm = 5 mW - # 10 dBm = 10 mW - # 14 dBm = 25 mW - # 17 dBm = 50 mW - # 20 dBm = 100 mW - # 22 dBm = 158 mW - # 24 dBm = 251 mW - # 27 dBm = 501 mW - # 28 dBm = 631 mW - # 30 dBm = 1000 mW (1 W) - txpower = {{ET_RETICULUM_INTERFACE_RNODE_TXPOWER}} - - # Select spreading factor 8. Valid - # range is 7 through 12, with 7 - # being the fastest and 12 having - # the longest range. - spreadingfactor = 9 - #spreadingfactor = {{ET_RETICULUM_INTERFACE_RNODE_SPREADINGFACTOR}} - - # Select coding rate 5. Valid range - # is 5 throough 8, with 5 being the - # fastest, and 8 the longest range. - codingrate = 5 - #codingrate = {{ET_RETICULUM_INTERFACE_RNODE_CODINGRATE}} diff --git a/overlay/etc/skel/.reticulum/config.blueprint.permanent-transport-node b/overlay/etc/skel/.reticulum/config.blueprint.permanent-transport-node index 206b869..36d6a51 100644 --- a/overlay/etc/skel/.reticulum/config.blueprint.permanent-transport-node +++ b/overlay/etc/skel/.reticulum/config.blueprint.permanent-transport-node @@ -1,6 +1,6 @@ # Author : Gaston Gonzalez # Date : 7 June 2026 -# Updated : 15 June 2026 +# Updated : 16 July 2026 # Blueprint : Permament Transport Node # Purpose : This configuration is a blueprint for running a # node that runs as a 24x7 transport node with @@ -83,7 +83,8 @@ [[Default Interface]] type = AutoInterface - enabled = Yes + mode = ap + enabled = yes [[Packet Radio AX.25 KISS]] type = AX25KISSInterface @@ -144,7 +145,7 @@ # configure. # [[TCP Client]] # type = TCPClientInterface -# enabled = Yes +# enabled = yes # mode = boundary # # Set the IP address to the remote TCP Server # target_host = IP_ADDRESS_HERE diff --git a/overlay/etc/skel/.reticulum/config.blueprint.rnode-only-node b/overlay/etc/skel/.reticulum/config.blueprint.rnode-only-node index c7430b4..58cbc72 100644 --- a/overlay/etc/skel/.reticulum/config.blueprint.rnode-only-node +++ b/overlay/etc/skel/.reticulum/config.blueprint.rnode-only-node @@ -1,7 +1,7 @@ # Author : Gaston Gonzalez # Date : 7 June 2026 -# Updated : 5 July 2026 -# Blueprint : RNode-Only Node, transport disabled. +# Updated : 16 July 2026 +# Blueprint : RNode-Only Node; transport disabled. # Purpose : This confguration is a blueprint for an RNode-only node. @@ -82,7 +82,7 @@ [[Default Interface]] type = AutoInterface - enabled = No + enabled = no [[RNode LoRa Interface]] type = RNodeInterface diff --git a/overlay/opt/emcomm-tools/bin/et-kill-all b/overlay/opt/emcomm-tools/bin/et-kill-all index bea4a3e..35c1a77 100755 --- a/overlay/opt/emcomm-tools/bin/et-kill-all +++ b/overlay/opt/emcomm-tools/bin/et-kill-all @@ -2,7 +2,7 @@ # # Author : Gaston Gonzalez # Date : 12 November 2024 -# Updated : 29 June 2026 +# Updated : 16 July 2026 # Purpose : Stops all EmComm Tools soundcard-based services (i.e. modems) # and radio applications to ensure a clean start for the next mode. @@ -31,8 +31,17 @@ stop_all_services() { # Stop modem73 with a sledge hammer (belt and suspenders) as the current # 1.0.7 version can hang on exit. systemctl --user stop et-service-modem73-default + systemctl --user stop et-service-modem73-reliability + systemctl --user stop et-service-modem73-fast + systemctl --user stop et-service-modem73-faster + systemctl --user stop et-service-modem73-fastest pkill -9 modem73 + # Stop the Mercury HF modem + systemctl --user stop et-service-mercury-balanced + systemctl --user stop et-service-mercury-reliability + systemctl --user stop et-service-mercury-fast + # Stop VARA with a sledge hammer pkill et-winlink pkill et-vara diff --git a/overlay/opt/emcomm-tools/bin/et-mercury b/overlay/opt/emcomm-tools/bin/et-mercury new file mode 100755 index 0000000..6b21dd6 --- /dev/null +++ b/overlay/opt/emcomm-tools/bin/et-mercury @@ -0,0 +1,113 @@ +#!/bin/bash +# +# Author : Gaston Gonzalez +# Date : 16 July 2026 +# Purpose : Wrapper script for starting Mercury with PnP support +# +# Preconditions: +# 1. Supported radio and audio interface are connected and properly detected +# +# Postconditions: +# 1. Mercury started with sane defaults +# +# Notes: +# +# Mercury supports many modulation types and configuration options. To +# keep usage simple, only three modulation settings have been configured +# that map to a combination of reliability and speed for most general +# purpose applications. +# +# The DATAC17 and QAM16C2 modes are documented on the RETICULUM.md +# documenation on the mercury GitHub project, but are not yet supported +# in version 1.9.9. Disabling these options from now. + + +usage() { + echo "usage: $(basename $0) " + echo " " + echo " reliability - Max reliability (Slower Speed) [DATAC1]" + echo " balanced - Balanced (Reliability and Speed) [DATAC17]" + echo " fast - Fast (Low Reliability) [QAM16C2]" +} + +if [[ $# -ne 1 ]]; then + et-log "Can't started Mercury modem. Mode not specified." + usage + exit 1 +fi + +MODE="$1" + +case "${MODE}" in + reliability) + MODE_INDEX="0" + ;; + balanced) + MODE_INDEX="9" + et-log "Mode not yet supported." + exit 1 + ;; + fast) + MODE_INDEX="10" + et-log "Mode not yet supported." + exit 1 + ;; + *) + et-log "Can't started Mercury modem. Mode not supported." + usage + exit 1 + ;; +esac + +[[ -z ${ET_LOG_DIR} ]] && ET_LOG_DIR="${HOME}/.local/share/emcomm-tools" +[[ ! -e ${ET_LOG_DIR} ]] && mkdir -p ${ET_LOG_DIR} + +start() { + update_config + + if [[ $? -eq 0 ]]; then + + systemctl is-active --quiet rigctld + if [[ $? -ne 0 ]]; then + et-log "Can't start Mercury. rigctld not running. Ensure radio is selected." + exit 1 + fi + + ALSA_DEVICE=$(et-system-info et-audio-card) + + CMD="mercury -m ${MODE_INDEX} -i plughw:${ALSA_DEVICE} -o plughw:${ALSA_DEVICE} -A 127.0.0.1:4532" + + et-log "Starting Mercury in mode ${MODE} with: '${CMD}'" + echo + ${CMD} + else + et-log "Error configurating modem. Can't start Mercury" + exit 1 + fi +} + +update_config () { + + et-log "Attempting to start Mercury in mode: '${MODE}'" + + # 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 + et-log "No ET_AUDIO device detected." + exit 1 + fi + else + et-log "No ET_AUDIO device plugged in." + exit 1 + fi +} + +start diff --git a/overlay/opt/emcomm-tools/bin/et-reticulum b/overlay/opt/emcomm-tools/bin/et-reticulum index 9d57456..d40cf41 100755 --- a/overlay/opt/emcomm-tools/bin/et-reticulum +++ b/overlay/opt/emcomm-tools/bin/et-reticulum @@ -2,7 +2,7 @@ # # Author : Gaston Gonzalez # Date : 12 May 2026 -# Updated : 30 June 2026 +# Updated : 16 July 2026 # Purpose : Wrapper script for starting Reticulum with PnP support # # Preconditions: @@ -108,6 +108,16 @@ if [[ $? -eq 0 ]]; then modem_options+=("modem73-fastest" "Fastest (Lowest Reliability) [QAM64]") fi + HAS_MERCURY_CONFIG=`grep "Mercury HF" ~/.reticulum/config` + if [[ $? -eq 0 ]]; then + modem_options+=("mercury-reliability" "Max reliability (Slower Speed) [DATAC1]") + # The modes below, DATAC17 and QAM16C2, are documented on the RETICULUM.md + # documenation on the mercury GitHub project, but are not yet supported in + # version 1.9.9. Disabling these options from the UI for now. + #modem_options+=("mercury-balanced" "Balanced (Reliability and Speed) [DATAC17]") + #modem_options+=("mercury-fast" "Fast (Low Reliability) [QAM16C2]") + fi + modem_choice=$(dialog \ --clear \ --title "Reticulum Configuration" \ @@ -115,6 +125,14 @@ if [[ $? -eq 0 ]]; then 13 70 10 \ "${modem_options[@]}" \ 2>&1 >/dev/tty) + EXIT_STATUS=$? + + tput sgr0 && clear + + if [[ ${EXIT_STATUS} -ne 0 ]]; then + et-log "No modem selected" + exit ${EXIT_STATUS} + fi dialog \ --title "Note on Reticulum" \ @@ -125,7 +143,8 @@ if [[ $? -eq 0 ]]; then tput sgr 0 && clear if [[ ${EXIT_STATUS} -ne 0 ]]; then - et-log "User canceled modem selection. Packet modem will not be started and interface will not be enabled." + et-log "User does not want to start modem given required use of encryption." + exit ${EXIT_STATUS} else case ${modem_choice} in 300-packet) @@ -156,6 +175,18 @@ if [[ $? -eq 0 ]]; then et-log "Starting modem73 in fastest mode" start_and_wait_for_service et-service-modem73-fastest ;; + mercury-reliability) + et-log "Starting mercury in reliability mode" + start_and_wait_for_service et-service-mercury-reliability + ;; + mercury-balanced) + et-log "Starting mercury in balanced mode" + start_and_wait_for_service et-service-mercury-balanced + ;; + mercury-fast) + et-log "Starting mercury in fast mode" + start_and_wait_for_service et-service-mercury-fast + ;; *) et-log "No modem specified" ;; @@ -178,6 +209,19 @@ else fi sed -i "s|{{ET_RETICULUM_INTERFACE_MODEM73_ENABLED}}|${INTERFACE_MODEM73_ENABLED}|g" ${RETICULUM_CONF_FILE} +############################################################ +# Mercurcy HF interface updates +############################################################ + +# Enable/disable intereface based on PnP device detection +IS_MERCURY_RUNNING=`ps -ef | grep [m]ercury` +if [[ $? -eq 0 ]]; then + INTERFACE_MERCURY_ENABLED="yes" +else + INTERFACE_MERCURY_ENABLED="no" +fi +sed -i "s|{{ET_RETICULUM_INTERFACE_MERCURY_ENABLED}}|${INTERFACE_MERCURY_ENABLED}|g" ${RETICULUM_CONF_FILE} + ############################################################ # AX.25 KISS (Packet Radio) interface updates ############################################################ diff --git a/scripts/install-mercury.sh b/scripts/install-mercury.sh new file mode 100755 index 0000000..aed903c --- /dev/null +++ b/scripts/install-mercury.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# Author : Gaston Gonzalez +# Date : 17 July 2025 +# Purpose : Builds and installs the Mercury HF modem +set -e +trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG +trap 'et-log "\"${last_command}\" command failed with exit code $?."' ERR + +. ./env.sh + +APP="mercury" +VERSION="1.9.9" +APP_AND_VERSION="${APP}-${VERSION}" +GIT_TAG="v${VERSION}" +GIT_URL="https://github.com/Rhizomatica/mercury.git" +GIT_WORKSPACE="mercury" +INSTALL_DIR="/opt/${APP_AND_VERSION}" +LINK_PATH="/opt/${APP}" + +et-log "Installing ${APP} ${VERSION}" + +CWD_DIR=`pwd` + +cd ${ET_SRC_DIR} +[[ ! -e ${GIT_WORKSPACE} ]] && git clone ${GIT_URL} ${GIT_WORKSPACE} + +cd ${GIT_WORKSPACE} && git checkout ${GIT_TAG} + +make && make install prefix="${INSTALL_DIR}" + +[[ -e ${LINK_PATH} ]] && rm ${LINK_PATH} +ln -v -s ${INSTALL_DIR} ${LINK_PATH} + +stow -v -d /opt ${APP} -t /usr/local + +cd ${CWD} diff --git a/scripts/install-meshchat.sh b/scripts/install-meshchat.sh index 39d078c..6dba977 100755 --- a/scripts/install-meshchat.sh +++ b/scripts/install-meshchat.sh @@ -1,7 +1,7 @@ #!/bin/bash # Author : Gaston Gonzalez # Date : 13 May 2026 -# Updated : 23 June 2026 +# Updated : 15 July 2026 # Purpose : Install MeshChat for Reticulum set -e trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG @@ -11,7 +11,7 @@ trap 'et-log "\"${last_command}\" command failed with exit code $?."' ERR . ../overlay/opt/emcomm-tools/bin/et-common APP=ReticulumMeshChat -VERSION="2.3.0-R7B7" +VERSION="2.4.0-R7B11" INSTALL_DIR="/opt/${APP}-${VERSION}" INSTALL_BIN_DIR="${INSTALL_DIR}/bin" LINK_PATH="/opt/${APP}" diff --git a/scripts/install.sh b/scripts/install.sh index 3147437..95a0841 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -2,7 +2,8 @@ # # Author : Gaston Gonzalez # Date : 16 March 2024 -# Updated : 5 July 2026 # Purpose : Main installer for EmComm Tools Community (ETC) +# Updated : 16 July 2026 +# Purpose : Main installer for EmComm Tools Community (ETC) . ./env.sh . ./functions.sh @@ -121,6 +122,7 @@ exitIfNotRoot ./install-reticulum.sh ./install-meshchat.sh ./install-modem73.sh +./install-mercury.sh ./install-offline-rnode-firmware.sh # Debrand Ubuntu diff --git a/tests/test-mercury.sh b/tests/test-mercury.sh new file mode 100755 index 0000000..740d9c9 --- /dev/null +++ b/tests/test-mercury.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# Author : Gaston Gonzalez +# Date : 16 July 2026 +# Purpose : Test Mercury installation + +OUT=$(which mercury) +exit $?