diff --git a/REGRESSION.md b/REGRESSION.md index 3e9e72e..472264d 100644 --- a/REGRESSION.md +++ b/REGRESSION.md @@ -1,7 +1,7 @@ # ETC Regression Tests -- **Build**: ETC R7 Build 9 -- **Date**: 2 July 2026 +- **Build**: ETC R7 Build 11 +- **Date**: 5 July 2026 ## Desktop/Launcher Icons @@ -146,3 +146,6 @@ * [ ] All blueprints * [ ] All permutations of radios and LoRa connected/disconnected +## Email + +* [ ] Thunderbird installed diff --git a/overlay/etc/skel/.local/share/emcomm-tools/voacap/ssn.txt b/overlay/etc/skel/.local/share/emcomm-tools/voacap/ssn.txt index 8ae0ddb..b9932e8 100644 --- a/overlay/etc/skel/.local/share/emcomm-tools/voacap/ssn.txt +++ b/overlay/etc/skel/.local/share/emcomm-tools/voacap/ssn.txt @@ -1,18 +1,18 @@ -2025 09 2025.705 : 114.6 4.7 -2025 10 2025.790 : 111.8 10.3 -2025 11 2025.873 : 109.5 13.4 -2025 12 2025.958 : 108.0 14.6 -2026 01 2026.042 : 106.3 16.7 -2026 02 2026.122 : 103.8 18.6 -2026 03 2026.204 : 100.3 18.7 -2026 04 2026.286 : 96.4 17.9 -2026 05 2026.371 : 92.8 17.8 -2026 06 2026.453 : 89.1 18.9 -2026 07 2026.538 : 85.9 20.9 -2026 08 2026.623 : 83.5 23.0 -2026 09 2026.705 : 81.3 24.2 -2026 10 2026.790 : 78.7 24.9 -2026 11 2026.873 : 75.7 25.2 -2026 12 2026.958 : 72.6 25.2 -2027 01 2027.042 : 69.4 25.1 -2027 02 2027.122 : 66.1 26.2 +2026 01 2026.042 : 105.0 5.3 +2026 02 2026.122 : 102.5 9.1 +2026 03 2026.204 : 99.0 10.8 +2026 04 2026.286 : 95.3 11.7 +2026 05 2026.371 : 91.9 13.1 +2026 06 2026.453 : 88.1 14.8 +2026 07 2026.538 : 84.8 16.7 +2026 08 2026.623 : 82.4 18.9 +2026 09 2026.705 : 80.2 20.8 +2026 10 2026.790 : 77.8 22.7 +2026 11 2026.873 : 75.1 24.1 +2026 12 2026.958 : 72.0 24.3 +2027 01 2027.042 : 68.7 23.7 +2027 02 2027.122 : 65.4 24.6 +2027 03 2027.204 : 63.1 26.3 +2027 04 2027.286 : 61.6 28.5 +2027 05 2027.371 : 59.8 30.3 +2027 06 2027.453 : 58.4 31.1 diff --git a/overlay/etc/skel/.reticulum/config.blueprint.rnode-only-node b/overlay/etc/skel/.reticulum/config.blueprint.rnode-only-node new file mode 100644 index 0000000..c7430b4 --- /dev/null +++ b/overlay/etc/skel/.reticulum/config.blueprint.rnode-only-node @@ -0,0 +1,127 @@ +# Author : Gaston Gonzalez +# Date : 7 June 2026 +# Updated : 5 July 2026 +# Blueprint : RNode-Only Node, transport disabled. +# Purpose : This confguration is a blueprint for an RNode-only node. + + +[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 + + [[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/udev/rules.d/76-et-lora.rules b/overlay/etc/udev/rules.d/76-et-lora.rules index 1a8c6b7..a5e75ae 100644 --- a/overlay/etc/udev/rules.d/76-et-lora.rules +++ b/overlay/etc/udev/rules.d/76-et-lora.rules @@ -1,11 +1,13 @@ # Author : Gaston Gonzalez # Date : 14 June 2026 +# Updated : 13 July 2026 # Purpose : udev rules for supported LoRa devices # # Supported Devices # 1. Heltec v4 -# 2. Heltec v3 (disabled due to collection with et-radio devices) +# 2. Heltec v3 (disabled due to collision with et-radio devices) # 3. LilyGO TTGO v2.1 +# 4. RAK4631 # # Preconditions: # 1. LoRa device connected via USB cable @@ -27,3 +29,8 @@ SUBSYSTEM=="tty", ATTRS{idVendor}=="303a", ATTRS{idProduct}=="1001", ENV{ET_LORA SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="55d4", ENV{ET_LORA_DEVICE}=="" \ ACTION=="add", \ ENV{ET_LORA_DEVICE}="LillyGO TTGO v2.1" GROUP="dialout", MODE="0660", SYMLINK+="et-lora" + +# RAK4631 (Tested with Delta Plus Nephilim HV 1.14) +SUBSYSTEM=="tty", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="8029", ENV{ET_LORA_DEVICE}=="" \ + ACTION=="add", \ + ENV{ET_LORA_DEVICE}="Delta Plus Nephilim" GROUP="dialout", MODE="0660", SYMLINK+="et-lora" diff --git a/overlay/opt/emcomm-tools/bin/et-rnode-flash-heltec-v4 b/overlay/opt/emcomm-tools/bin/et-rnode-flash-heltec-v4 new file mode 100755 index 0000000..7fe7cb7 --- /dev/null +++ b/overlay/opt/emcomm-tools/bin/et-rnode-flash-heltec-v4 @@ -0,0 +1,13 @@ +#!/bin/bash +# +# Author : Gaston Gonzalez +# Date : 5 July 2026 +# Updated : 13 July 2026 +# Purpose : Flash the Heltec v4 esp32 LoRa device offline. +# Uses the cached firmare in EmComm Tools. + +rnodeconf \ + --autoinstall \ + --nocheck \ + --fw-version 1.86 \ + --baud-flash 115200 diff --git a/overlay/opt/emcomm-tools/bin/et-rnode-flash-rak4631 b/overlay/opt/emcomm-tools/bin/et-rnode-flash-rak4631 new file mode 100755 index 0000000..8bd4384 --- /dev/null +++ b/overlay/opt/emcomm-tools/bin/et-rnode-flash-rak4631 @@ -0,0 +1,12 @@ +#!/bin/bash +# +# Author : Gaston Gonzalez +# Date : 13 July 2026 +# Purpose : Flash the RAK4631 LoRa device offline. +# Uses the cached firmare in EmComm Tools. + +rnodeconf \ + --autoinstall \ + --nocheck \ + --fw-version 1.86 \ + --baud-flash 115200 diff --git a/overlay/opt/emcomm-tools/bin/et-user-backup b/overlay/opt/emcomm-tools/bin/et-user-backup index 116b262..afd540b 100755 --- a/overlay/opt/emcomm-tools/bin/et-user-backup +++ b/overlay/opt/emcomm-tools/bin/et-user-backup @@ -1,13 +1,14 @@ #!/bin/bash # Author : Gaston Gonzalez # Date : 14 January 2025 -# Updated : 1 February 2025 +# Updated : 3 July 2026 # Purpose : Back up select files from the user's home directory. # # The backups are limited to the following: # 1. EmComm Tools configuration # 2. Winlink email -# 3. SSH keys +# 3. Reticulum +# 4. Meshchat TODAY=$(date +"%Y%m%d") BACKUP_FILE="${HOME}/etc-user-backup-${HOSTNAME}-${TODAY}.tar.gz" @@ -31,6 +32,8 @@ BACKUP_DIRS=( ".config/emcomm-tools" ".local/share/emcomm-tools" ".local/share/pat" + ".reticulum" + ".reticulum-meshchat" ) tar -czf ${BACKUP_FILE} \ diff --git a/scripts/install-offline-lib.json b/scripts/install-offline-lib.json index 444ea6d..d892494 100644 --- a/scripts/install-offline-lib.json +++ b/scripts/install-offline-lib.json @@ -55,8 +55,13 @@ "dir": "reticulum" }, { - "url": "https://github.com/markqvist/Reticulum/releases/download/1.2.5/Reticulum.Manual.pdf", + "url": "https://github.com/markqvist/Reticulum/releases/download/1.3.4/Reticulum.Manual.pdf", "file": "Reticulum.Manual.pdf", "dir": "reticulum" + }, + { + "url": "https://github.com/thetechprepper/emcomm-tools-os-community/releases/download/emcomm-tools-os-community-20260401-r6-final-6.0.0/NIFOG.2.02_508.FINAL.VERSION.12.03.2024.pdf", + "file": "National_Interoperability_Field_Operations_Guide_Version_2.02.pdf", + "dir": "gov/fogs" } ] diff --git a/scripts/install-offline-rnode-firmware.json b/scripts/install-offline-rnode-firmware.json index e53135c..7e5e0e1 100644 --- a/scripts/install-offline-rnode-firmware.json +++ b/scripts/install-offline-rnode-firmware.json @@ -5,5 +5,12 @@ "dir": "update/1.86", "version": "1.86", "hash": "75ed47d6a4259e9d073cda680b7323eda420659e117ca4ce42c119b2c9513805" + }, + { + "url": "https://github.com/markqvist/RNode_Firmware/releases/download/1.86/rnode_firmware_rak4631.zip", + "file": "rnode_firmware_rak4631.zip", + "dir": "update/1.86", + "version": "1.86", + "hash": "99cae226cca349a1f567f0a6c0c9a0fd4cc9500ec079a631b18b8d4c29e7aa9c" } ] diff --git a/scripts/install-reticulum.sh b/scripts/install-reticulum.sh index a3b3f8f..5c50c13 100755 --- a/scripts/install-reticulum.sh +++ b/scripts/install-reticulum.sh @@ -1,10 +1,10 @@ #!/bin/bash # Author : Gaston Gonzalez # Date : 13 February 2026 -# Updated : 23 June 2026 +# Updated : 13 July 2026 # Purpose : Install Reticulum -RNS_VERSION=1.3.5 +RNS_VERSION=1.3.8 et-log "Installing Python3..." apt install \ diff --git a/scripts/install-thunderbird.sh b/scripts/install-thunderbird.sh new file mode 100755 index 0000000..3e3c302 --- /dev/null +++ b/scripts/install-thunderbird.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# +# Author : Gaston Gonzalez +# Date : 5 July 2025 +# Purpose : Install Thunderbird email client +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 +. ../overlay/opt/emcomm-tools/bin/et-common + +et-log "Installing Thunderbird..." + +apt install \ + thunderbird \ + -y diff --git a/scripts/install.sh b/scripts/install.sh index d655754..3147437 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -2,8 +2,7 @@ # # Author : Gaston Gonzalez # Date : 16 March 2024 -# Updated : 3 July 2026 -# Purpose : Main installer for EmComm Tools Community (ETC) +# Updated : 5 July 2026 # Purpose : Main installer for EmComm Tools Community (ETC) . ./env.sh . ./functions.sh @@ -126,3 +125,6 @@ exitIfNotRoot # Debrand Ubuntu ./debrand.sh + +# Email +./install-thunderbird.sh diff --git a/tests/test-thunderbird.sh b/tests/test-thunderbird.sh new file mode 100755 index 0000000..0cd34d8 --- /dev/null +++ b/tests/test-thunderbird.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# Author : Gaston Gonzalez +# Date : 5 July 2026 +# Purpose : Test Thunderbird installation + +OUT=$(which thunderbird) +exit $?