mirror of
https://github.com/thetechprepper/emcomm-tools-os-community.git
synced 2026-09-17 15:41:44 -04:00
@@ -79,7 +79,7 @@ USERS_GID=1981
|
|||||||
# new users to other groups.
|
# new users to other groups.
|
||||||
# This is the list of groups that new non-system users will be added to
|
# This is the list of groups that new non-system users will be added to
|
||||||
# Default:
|
# Default:
|
||||||
EXTRA_GROUPS="bluetooth dialout cdrom floppy audio video plugdev users"
|
EXTRA_GROUPS="bluetooth dialout cdrom floppy audio video plugdev tty users"
|
||||||
|
|
||||||
# If ADD_EXTRA_GROUPS is set to something non-zero, the EXTRA_GROUPS
|
# If ADD_EXTRA_GROUPS is set to something non-zero, the EXTRA_GROUPS
|
||||||
# option above will be default behavior for adding new, non-system users
|
# option above will be default behavior for adding new, non-system users
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Author : Gaston Gonzalez
|
# Author : Gaston Gonzalez
|
||||||
# Date : 23 April 2024
|
# Date : 23 April 2024
|
||||||
# Updated : 25 December 2024
|
# Updated : 1 February 2025
|
||||||
# Description : bash profile
|
# Description : bash profile
|
||||||
|
|
||||||
# All user accounts should be in the 'et-data' group to allow data sharing with
|
# All user accounts should be in the 'et-data' group to allow data sharing with
|
||||||
@@ -29,3 +29,8 @@ echo -e "${NC}"
|
|||||||
|
|
||||||
export ET_USER_CONFIG=${HOME}/.config/emcomm-tools/user.json
|
export ET_USER_CONFIG=${HOME}/.config/emcomm-tools/user.json
|
||||||
export ET_LOG_DIR=${HOME}/.local/share/emcomm-tools
|
export ET_LOG_DIR=${HOME}/.local/share/emcomm-tools
|
||||||
|
|
||||||
|
# Export environment variables to support WINE installs for VARA
|
||||||
|
export WINARCH="win32"
|
||||||
|
export WINEPREFIX="$HOME/.wine32"
|
||||||
|
export WINEDEBUG=-all
|
||||||
|
|||||||
@@ -6,6 +6,14 @@ AGWPaclen=80
|
|||||||
AGWPort=8000
|
AGWPort=8000
|
||||||
AGWTermCall=N0CALL
|
AGWTermCall=N0CALL
|
||||||
AGWToCalls=TTPBBS,
|
AGWToCalls=TTPBBS,
|
||||||
|
PTT=HAMLIB
|
||||||
|
PTTBAUD=0
|
||||||
|
PTTMode=17
|
||||||
|
PTTOnString=127.0.0.1
|
||||||
TermMode=0
|
TermMode=0
|
||||||
|
VARAEnable=1
|
||||||
|
VARAFM=1
|
||||||
|
VARAHF=0
|
||||||
|
VARATermCall=N0CALL
|
||||||
YAPPPath=
|
YAPPPath=
|
||||||
singlemodeFormat=1
|
singlemodeFormat=1
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# Author : Gaston Gonzalez
|
||||||
|
# Date : 3 February 2025
|
||||||
|
# Purpose : User systemd unit file for EmComm Tools Winlink over packet
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# Check status : systemctl --user status et-service-winlink-native-packet
|
||||||
|
# Start service : systemctl --user start et-service-winlink-native-packet
|
||||||
|
# Stop service : systemctl --user stop et-service-winlink-native-packet
|
||||||
|
# Reload this config : systemctl --user daemon-reload
|
||||||
|
|
||||||
|
[Unit]
|
||||||
|
Description=EmComm Tools Winlink native AX.25 packet service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/opt/emcomm-tools/bin/et-winlink start-native-packet
|
||||||
|
Restart=no
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
*.exe
|
||||||
|
*.zip
|
||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Author : Gaston Gonzalez
|
||||||
|
# Date : 20 January 2025
|
||||||
|
# Updated : 1 February 2025
|
||||||
|
# Purpose : Install wine dependencies to support VARA install
|
||||||
|
set -e
|
||||||
|
|
||||||
|
source ./common-checks.sh
|
||||||
|
|
||||||
|
if [[ ! -e ${WINEPREFIX} ]]; then
|
||||||
|
winetricks \
|
||||||
|
--unattended \
|
||||||
|
--force \
|
||||||
|
winxp \
|
||||||
|
sound=alsa \
|
||||||
|
dotnet35sp1 \
|
||||||
|
vb6run
|
||||||
|
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
show-err-dialog "Failed to instaill WINE dependencies."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -e "${WINEPREFIX} already exists. Skipping WINE dependency installation.\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${YELLOW}Run ${WHITE}./02-install-vara-hf.sh${YELLOW} to install VARA HF.${NC}"
|
||||||
+43
@@ -0,0 +1,43 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Author : Gaston Gonzalez
|
||||||
|
# Date : 20 January 2025
|
||||||
|
# Updated : 1 February 2025
|
||||||
|
# Purpose : Install VARA HF
|
||||||
|
set -e
|
||||||
|
|
||||||
|
source ./common-checks.sh
|
||||||
|
|
||||||
|
VERSION="4.8.9"
|
||||||
|
DOWNLOAD_FILE="vara-hf-${VERSION}.zip"
|
||||||
|
URL="https://downloads.winlink.org/VARA%20Products/VARA%20HF%20v${VERSION}%20setup.zip"
|
||||||
|
VARA_HOME="${HOME}/.wine32/drive_c/VARA"
|
||||||
|
|
||||||
|
et-log "Installing VARA HF..."
|
||||||
|
|
||||||
|
if [ ! -e ${DOWNLOAD_FILE} ]; then
|
||||||
|
et-log "Downloading VARA HF ${version} from ${URL}"
|
||||||
|
curl -s -f -L -o ${DOWNLOAD_FILE} "${URL}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
et-log "Error downloading VARA HF ${VERSION}."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
unzip -o ${DOWNLOAD_FILE}
|
||||||
|
|
||||||
|
wine 'VARA setup (Run as Administrator).exe'
|
||||||
|
|
||||||
|
if [ ! -e "${VARA_HOME}/nt4pdhdll.exe" ]; then
|
||||||
|
et-log "Install missing DLL..."
|
||||||
|
|
||||||
|
CWD=$(pwd)
|
||||||
|
|
||||||
|
cd ${VARA_HOME}
|
||||||
|
curl -s -f -L -O \
|
||||||
|
http://download.microsoft.com/download/winntsrv40/update/5.0.2195.2668/nt4/en-us/nt4pdhdll.exe && unzip nt4pdhdll.exe
|
||||||
|
cd ${CWD}
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${YELLOW}Run ${WHITE}./03-install-vara-fm.sh${YELLOW} to install VARA FM.${NC}"
|
||||||
+43
@@ -0,0 +1,43 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Author : Gaston Gonzalez
|
||||||
|
# Date : 20 January 2025
|
||||||
|
# Updated : 1 February 2025
|
||||||
|
# Purpose : Install VARA FM
|
||||||
|
set -e
|
||||||
|
|
||||||
|
source ./common-checks.sh
|
||||||
|
|
||||||
|
VERSION="4.3.8"
|
||||||
|
DOWNLOAD_FILE="vara-fm-${VERSION}.zip"
|
||||||
|
URL="https://downloads.winlink.org/VARA%20Products/VARA%20FM%20v${VERSION}%20setup.zip"
|
||||||
|
VARA_HOME="${HOME}/.wine32/drive_c/VARA FM"
|
||||||
|
|
||||||
|
et-log "Installing VARA FM..."
|
||||||
|
|
||||||
|
if [ ! -e ${DOWNLOAD_FILE} ]; then
|
||||||
|
et-log "Downloading VARA FM ${version} from ${URL}"
|
||||||
|
curl -s -f -L -o ${DOWNLOAD_FILE} "${URL}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
et-log "Error downloading VARA FM ${VERSION}."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
unzip -o ${DOWNLOAD_FILE}
|
||||||
|
|
||||||
|
wine 'VARA FM setup (Run as Administrator).exe'
|
||||||
|
|
||||||
|
if [ ! -e "${VARA_HOME}/nt4pdhdll.exe" ]; then
|
||||||
|
et-log "Install missing DLL..."
|
||||||
|
|
||||||
|
CWD=$(pwd)
|
||||||
|
|
||||||
|
cd "${VARA_HOME}"
|
||||||
|
curl -s -f -L -O \
|
||||||
|
http://download.microsoft.com/download/winntsrv40/update/5.0.2195.2668/nt4/en-us/nt4pdhdll.exe && unzip nt4pdhdll.exe
|
||||||
|
cd ${CWD}
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${YELLOW}Run ${WHITE}./04-run-regedit.sh${YELLOW} to run registry editor.${NC}"
|
||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Author : Gaston Gonzalez
|
||||||
|
# Date : 20 January 2025
|
||||||
|
# Updated : 4 February 2025
|
||||||
|
# Purpose : Run regedit
|
||||||
|
set -e
|
||||||
|
|
||||||
|
source ./common-checks.sh
|
||||||
|
|
||||||
|
echo -e "${YELLOW}"
|
||||||
|
echo -e "1. Expand HKEY_LOCAL_MACHINE > Software > Wine > Ports"
|
||||||
|
echo -e "2. In the main pain, right-click and select 'New' > 'String Value'"
|
||||||
|
echo -e "3. Set the name to ${WHITE}COM10${YELLOW} and the value to ${WHITE}/dev/et-cat${YELLOW}"
|
||||||
|
echo -e "4. Close the Registry Editor application"
|
||||||
|
echo -e "${NC}"
|
||||||
|
|
||||||
|
wine regedit
|
||||||
+32
@@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Author : Gaston Gonzalez
|
||||||
|
# Date : 1 February 2025
|
||||||
|
# Purpose : Backup the ~/.wine32 directory for use in ETC image inclusion.
|
||||||
|
|
||||||
|
TODAY=$(date +"%Y%m%d")
|
||||||
|
BACKUP_FILE="${HOME}/etc-wine-backup-${HOSTNAME}-${TODAY}.tar.gz"
|
||||||
|
|
||||||
|
source /opt/emcomm-tools/bin/et-common
|
||||||
|
|
||||||
|
if [ -e "${BACKUP_FILE}" ]; then
|
||||||
|
echo -e -n "${RED}A backup file for today exists. Can ${WHITE}${BACKUP_FILE} ${RED}be overwritten? (y/n) ${NC}"
|
||||||
|
read response
|
||||||
|
[[ $response != [yY] ]] && echo "Skipping backup and exiting." && exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# All paths are relative to $HOME.
|
||||||
|
BACKUP_DIRS=(
|
||||||
|
".wine32"
|
||||||
|
)
|
||||||
|
|
||||||
|
tar -czf ${BACKUP_FILE} \
|
||||||
|
--transform 's|^.*\.local|.local|' \
|
||||||
|
-C "${HOME}" "${BACKUP_DIRS[@]}"
|
||||||
|
|
||||||
|
[ $? -ne 0 ] && et-log "Error creating backup" && exit 1
|
||||||
|
|
||||||
|
# Test that we can read if after we create it.
|
||||||
|
TAR_OUT=$(tar -tzf ${BACKUP_FILE})
|
||||||
|
[ $? -ne 0 ] && et-log "Can't read backup file: ${BACKUP_FILE}. Error creating backup." && exit 1
|
||||||
|
|
||||||
|
echo -e "${GREEN}Backup created: ${WHITE}${BACKUP_FILE}\n"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# Installing Windows Applications
|
||||||
|
|
||||||
|
The following instructions only need to be run once. They should be run
|
||||||
|
in this directory as your normal user (do not use 'sudo').
|
||||||
|
|
||||||
|
1. Install the WINE dependencies.
|
||||||
|
|
||||||
|
./01-install-wine-deps.sh
|
||||||
|
|
||||||
|
2. Install VARA HF. Accept the default settings and uncheck Launch My Program
|
||||||
|
when prompted during the installation.
|
||||||
|
|
||||||
|
./02-install-vara-hf.sh
|
||||||
|
|
||||||
|
3. Install VARA FM. Accept the default settings and uncheck Launch My Program
|
||||||
|
when prompted during the installation.
|
||||||
|
|
||||||
|
./03-install-vara-fm.sh
|
||||||
|
|
||||||
|
4. Run the registery editor. Follow the instructions in the terminal. In
|
||||||
|
this step we will need to map COM port 10 (COM10) to the EmComm Tools
|
||||||
|
CAT control device (/dev/et-cat).
|
||||||
|
|
||||||
|
./04-run-regedit.sh
|
||||||
|
|
||||||
|
5. If you want to include your WINE installation in a future EmComm Tools
|
||||||
|
Community image build, run the following to make a backup of your WINE
|
||||||
|
installation now.
|
||||||
|
|
||||||
|
./05-backup-wine-install.sh
|
||||||
|
|
||||||
|
It is important that you do not run any of the VARA programs until after
|
||||||
|
the backup is run in step 5.
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Author : Gaston Gonzalez
|
||||||
|
# Date : 1 February 2025
|
||||||
|
# Purpose : Performs various checks to ensure that changes can be made
|
||||||
|
# to a user's local WINE installation.
|
||||||
|
|
||||||
|
source /opt/emcomm-tools/bin/et-common
|
||||||
|
|
||||||
|
WINE_OUT=$(which winetricks)
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
echo -e "${RED}Wine is not installed. As root, first run: ${WHITE}/root/emcomm-tools-os-community/scripts/install-wine.sh${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${EUID}" -eq 0 ]]; then
|
||||||
|
echo -e "${RED}This script must not be run as root. Run it as your normal user.${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "${WINARCH}" ]]; then
|
||||||
|
echo -e "The WINARCH environment variable is not set. Setting it for you."
|
||||||
|
export WINARCH="win32"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "${WINEPREFIX}" ]]; then
|
||||||
|
echo -e "The WINEPREFIX environment variable is not set. Setting it for you."
|
||||||
|
export WINEPREFIX="${HOME}/.wine32"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "${DISPLAY}" && -z "${WAYLAND_DISPLAY}" ]]; then
|
||||||
|
echo -e "${RED}No graphical environment detected. Run this command from a desktop session.${NC}"
|
||||||
|
echo -e "${RED}This can't be run from within Cubic.${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
@@ -2,6 +2,5 @@
|
|||||||
%bluetooth ALL=(ALL) NOPASSWD: /usr/sbin/kissattach /dev/rfcomm0 *
|
%bluetooth ALL=(ALL) NOPASSWD: /usr/sbin/kissattach /dev/rfcomm0 *
|
||||||
%bluetooth ALL=(ALL) NOPASSWD: /usr/sbin/kissparms *
|
%bluetooth ALL=(ALL) NOPASSWD: /usr/sbin/kissparms *
|
||||||
|
|
||||||
%bluetooth ALL=(ALL) NOPASSWD: /usr/bin/killall kissattach
|
|
||||||
%bluetooth ALL=(ALL) NOPASSWD: /usr/bin/killall kissattach
|
%bluetooth ALL=(ALL) NOPASSWD: /usr/bin/killall kissattach
|
||||||
%bluetooth ALL=(ALL) NOPASSWD: /usr/bin/killall rfcomm
|
%bluetooth ALL=(ALL) NOPASSWD: /usr/bin/killall rfcomm
|
||||||
|
|||||||
Executable
+17
@@ -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
|
||||||
|
}
|
||||||
@@ -2,21 +2,38 @@
|
|||||||
#
|
#
|
||||||
# Author : Gaston Gonzalez
|
# Author : Gaston Gonzalez
|
||||||
# Date : 12 November 2024
|
# Date : 12 November 2024
|
||||||
# Updated : 13 January 2025
|
# Updated : 7 February 2025
|
||||||
# Purpose : Stops all EmComm Tools sound-based services (i.e. modems) and
|
# Purpose : Stops all EmComm Tools sound-based services (i.e. modems) and
|
||||||
# amatuer radio applications to ensure a clean start for the next mode.
|
# 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.
|
# 1. Attempt to stop all EmComm Tools services regardless if they are running.
|
||||||
# 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-packet
|
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-ardop
|
||||||
systemctl --user stop et-service-direwolf-300
|
systemctl --user stop et-service-direwolf-300
|
||||||
systemctl --user stop et-service-direwolf-9600
|
systemctl --user stop et-service-direwolf-9600
|
||||||
systemctl --user stop et-service-direwolf-simple
|
systemctl --user stop et-service-direwolf-simple
|
||||||
systemctl --user stop et-service-direwolf-aprs-digipeater
|
systemctl --user stop et-service-direwolf-aprs-digipeater
|
||||||
systemctl --user stop et-service-direwolf-packet-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"
|
et-log "Stopping all services"
|
||||||
|
|||||||
@@ -2,12 +2,14 @@
|
|||||||
#
|
#
|
||||||
# Author : Gaston Gonzalez
|
# Author : Gaston Gonzalez
|
||||||
# Date : 6 November 2024
|
# Date : 6 November 2024
|
||||||
# Updated : 14 January 2025
|
# Updated : 9 February 2025
|
||||||
# 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
|
||||||
MODE_STATUS_FILE="${HOME}/.config/emcomm-tools/et-mode"
|
MODE_STATUS_FILE="${HOME}/.config/emcomm-tools/et-mode"
|
||||||
|
|
||||||
|
QTTERMTCP_CONF_FILE="${HOME}/.config/QtTermTCP.ini"
|
||||||
|
|
||||||
# List of supported modes of operation
|
# List of supported modes of operation
|
||||||
MODE_ID_NONE="none"
|
MODE_ID_NONE="none"
|
||||||
MODE_ID_APRS_DIGIPEATER="aprs-digipeater"
|
MODE_ID_APRS_DIGIPEATER="aprs-digipeater"
|
||||||
@@ -18,9 +20,11 @@ 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_PACKET="winlink-packet"
|
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
|
# Default to 1200 baud packet for terminal sessions
|
||||||
PACKET_MODE=simple
|
TERM_MODE=1200
|
||||||
|
|
||||||
# Attempt to stop all EmComm Tools services regardless if they are running.
|
# Attempt to stop all EmComm Tools services regardless if they are running.
|
||||||
stop_all_services() {
|
stop_all_services() {
|
||||||
@@ -66,16 +70,52 @@ start_and_wait_for_service() {
|
|||||||
exit_on_service_failure ${systemd_unit_name}
|
exit_on_service_failure ${systemd_unit_name}
|
||||||
}
|
}
|
||||||
|
|
||||||
select_direwolf_mode () {
|
start_and_wait_for_vara() {
|
||||||
packet_mode=()
|
local vara_cmd="$1"
|
||||||
packet_mode+=("simple" "1200 baud (default for VHF/UHF)")
|
local elapsed=0
|
||||||
packet_mode+=("9600" "9600 baud (VHF/UHF)")
|
|
||||||
packet_mode+=("300" "300 baud (HF)")
|
|
||||||
|
|
||||||
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=$?
|
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
|
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
|
fi
|
||||||
|
|
||||||
@@ -87,6 +127,18 @@ select_direwolf_mode () {
|
|||||||
fi
|
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
|
# Build list of options
|
||||||
options=()
|
options=()
|
||||||
options+=("${MODE_ID_NONE}" "No mode selected")
|
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_CHAT_CLIENT}" "Chat (chattervox)")
|
||||||
options+=("${MODE_ID_APRS_DIGIPEATER}" "APRS Digipeater")
|
options+=("${MODE_ID_APRS_DIGIPEATER}" "APRS Digipeater")
|
||||||
options+=("${MODE_ID_PACKET_DIGIPEATER}" "Packet 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)")
|
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
|
# 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=$?
|
exit_status=$?
|
||||||
|
|
||||||
tput sgr 0 && clear
|
tput sgr 0 && clear
|
||||||
@@ -124,18 +185,38 @@ if [ $exit_status -eq 0 ]; then
|
|||||||
et-yaac start
|
et-yaac start
|
||||||
;;
|
;;
|
||||||
${MODE_ID_BBS_CLIENT})
|
${MODE_ID_BBS_CLIENT})
|
||||||
select_direwolf_mode
|
select_term_mode
|
||||||
et-log "Using ${PACKET_MODE} as the modem speed."
|
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-log "Starting Paracon."
|
||||||
et-paracon start
|
et-paracon start
|
||||||
;;
|
;;
|
||||||
${MODE_ID_BBS_CLIENT2})
|
${MODE_ID_BBS_CLIENT2})
|
||||||
select_direwolf_mode
|
select_term_mode
|
||||||
et-log "Using ${PACKET_MODE} as the modem speed."
|
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-log "Starting QtTermTCP."
|
||||||
et-qttermtcp start
|
et-qttermtcp start
|
||||||
@@ -150,15 +231,33 @@ if [ $exit_status -eq 0 ]; then
|
|||||||
et-log "Packet digipeater now running."
|
et-log "Packet digipeater now running."
|
||||||
;;
|
;;
|
||||||
${MODE_ID_WINLINK_ARDOP})
|
${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-ardop
|
||||||
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_PACKET})
|
${MODE_ID_WINLINK_PACKET})
|
||||||
|
select_winlink_mode
|
||||||
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
|
||||||
min http://localhost:8080
|
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"
|
et-log "Mode ${SELECTED_MODE} not yet supported"
|
||||||
exit 1
|
exit 1
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Author : Gaston Gonzalez
|
# Author : Gaston Gonzalez
|
||||||
# Date : 17 December 2024
|
# Date : 17 December 2024
|
||||||
|
# Updated : 8 February 2025
|
||||||
# Purpose : Wrapper script for starting JS8Call with PnP support
|
# Purpose : Wrapper script for starting JS8Call with PnP support
|
||||||
#
|
#
|
||||||
# Preconditions
|
# Preconditions
|
||||||
@@ -57,7 +58,8 @@ update-config () {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
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}
|
sed -i "s|^YAPPPath.*|YAPPPath=${HOME}/Downloads|" ${CONF_FILE}
|
||||||
|
|
||||||
et-log "Updated QtTermTCP configuration with user callsign '${CALLSIGN}'"
|
et-log "Updated QtTermTCP configuration with user callsign '${CALLSIGN}'"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Author : Gaston Gonzalez
|
# Author : Gaston Gonzalez
|
||||||
# Date : 11 October 2024
|
# Date : 11 October 2024
|
||||||
# Updated : 14 December 2024
|
# Updated : 5 February 2025
|
||||||
# Purpose : A script for managaing plug-and-play radios
|
# Purpose : A script for managaing plug-and-play radios
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
@@ -48,6 +48,13 @@ if [ $exit_status -eq 0 ]; then
|
|||||||
VENDOR=$(cat ${ACTIVE_RADIO} | jq -r .vendor)
|
VENDOR=$(cat ${ACTIVE_RADIO} | jq -r .vendor)
|
||||||
MODEL=$(cat ${ACTIVE_RADIO} | jq -r .model)
|
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" "Radio ID" "Vendor" "Model"
|
||||||
printf "%-20s %-10s %-10s\n\n" $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[] | "* \(.)"'
|
cat ${ACTIVE_RADIO} | jq -r '.notes[] | "* \(.)"'
|
||||||
echo -e "${NC}"
|
echo -e "${NC}"
|
||||||
|
|
||||||
|
|
||||||
printf "${GREEN}REQUIRED ACTIONS\n"
|
printf "${GREEN}REQUIRED ACTIONS\n"
|
||||||
printf "1. Apply the settings above to your radio.\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"
|
printf "2. Plug in the USB cable for your radio. If it is already\n"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Author : Gaston Gonzalez
|
# Author : Gaston Gonzalez
|
||||||
# Date : 6 October 2024
|
# Date : 6 October 2024
|
||||||
# Updated : 17 December 2024
|
# Updated : 7 February 2025
|
||||||
# Purpose : Utility script for dumping system information
|
# Purpose : Utility script for dumping system information
|
||||||
|
|
||||||
function usage() {
|
function usage() {
|
||||||
@@ -183,6 +183,8 @@ case $1 in
|
|||||||
MODE_ID_APRS_CLIENT="aprs-client"
|
MODE_ID_APRS_CLIENT="aprs-client"
|
||||||
MODE_ID_WINLINK_ARDOP="winlink-ardop"
|
MODE_ID_WINLINK_ARDOP="winlink-ardop"
|
||||||
MODE_ID_WINLINK_PACKET="winlink-packet"
|
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
|
if [ ! -e /dev/et-audio ]; then
|
||||||
echo "Run 'et-mode' to set"
|
echo "Run 'et-mode' to set"
|
||||||
@@ -218,6 +220,12 @@ case $1 in
|
|||||||
${MODE_ID_WINLINK_PACKET})
|
${MODE_ID_WINLINK_PACKET})
|
||||||
echo "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"
|
echo "Unknown"
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Author : Gaston Gonzalez
|
# Author : Gaston Gonzalez
|
||||||
# Date : 14 January 2025
|
# Date : 14 January 2025
|
||||||
# Updated : 16 January 2025
|
# Updated : 1 February 2025
|
||||||
# Purpose : Back up select files from the user's home directory.
|
# Purpose : Back up select files from the user's home directory.
|
||||||
#
|
#
|
||||||
# The backups are limited to the following:
|
# The backups are limited to the following:
|
||||||
@@ -31,7 +31,6 @@ BACKUP_DIRS=(
|
|||||||
".config/emcomm-tools"
|
".config/emcomm-tools"
|
||||||
".local/share/emcomm-tools"
|
".local/share/emcomm-tools"
|
||||||
".local/share/pat"
|
".local/share/pat"
|
||||||
".ssh"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
tar -czf ${BACKUP_FILE} \
|
tar -czf ${BACKUP_FILE} \
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
#
|
#
|
||||||
# Author : Gaston Gonzalez
|
# Author : Gaston Gonzalez
|
||||||
# Date : 1 January 2025
|
# Date : 1 January 2025
|
||||||
# Updated : 3 January 2025
|
# Updated : 3 February 2025
|
||||||
# Purpose : Utility for accessing the Bluetooth TNC on the BTECH
|
# Purpose : Utility for accessing the Bluetooth TNC on the BTECH
|
||||||
# UV PRO.
|
# UV PRO.
|
||||||
|
|
||||||
ACTIVE_RADIO="${ET_HOME}/conf/radios.d/btech-uvpro.bt.json"
|
ACTIVE_RADIO="${ET_HOME}/conf/radios.d/btech-uvpro.bt.json"
|
||||||
DEVICE_NAME="UV-PRO"
|
DEVICE_NAME="UV-PRO"
|
||||||
BT_DEVICE="/dev/rfcomm0"
|
BT_DEVICE="/dev/rfcomm0"
|
||||||
AX25_PORT="pkt1200"
|
AX25_PORT="wl2k"
|
||||||
AX25_CONF_FILE="/etc/ax25/axports"
|
AX25_CONF_FILE="/etc/ax25/axports"
|
||||||
|
|
||||||
ESC="\x1B"
|
ESC="\x1B"
|
||||||
@@ -78,15 +78,15 @@ update_ax25_conf() {
|
|||||||
|
|
||||||
GREP_OUT=$(grep ${AX25_PORT} ${AX25_CONF_FILE})
|
GREP_OUT=$(grep ${AX25_PORT} ${AX25_CONF_FILE})
|
||||||
if [ $? -eq 0 ]; then
|
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
|
# since we do not have permission to create a temporary file with
|
||||||
# inline replacement. ed modifies the file directly.
|
# 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
|
fi
|
||||||
|
|
||||||
info_message "Adding AX25 port for ${CALLSIGN}"
|
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() {
|
stop_all_services() {
|
||||||
@@ -235,8 +235,8 @@ EOF
|
|||||||
echo -e "${YELLOW}"
|
echo -e "${YELLOW}"
|
||||||
echo -e "SAMPLE COMMANDS DESCRIPTION "
|
echo -e "SAMPLE COMMANDS DESCRIPTION "
|
||||||
echo -e "------------------------------- --------------------------------"
|
echo -e "------------------------------- --------------------------------"
|
||||||
echo -e "axcall pkt1200 <STATION> Connect directly to a node "
|
echo -e "axcall ${AX25_PORT} <STATION> Connect directly to a node "
|
||||||
echo -e "axcall pkt1200 <STATION> <DIGI> Connect to node via a digipeater"
|
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 "sudo axlisten -a -tttt -c Monitor inbound and outbound traffic"
|
||||||
echo -e "${NC}"
|
echo -e "${NC}"
|
||||||
|
|
||||||
|
|||||||
Executable
+38
@@ -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
|
||||||
Executable
+38
@@ -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}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Author : Gaston Gonzalez
|
# Author : Gaston Gonzalez
|
||||||
# Date : 4 November 2024
|
# Date : 4 November 2024
|
||||||
# Updated : 12 December 2024
|
# Updated : 4 February 2025
|
||||||
# Purpose : Wrapper script for starting YAAC with PnP support
|
# Purpose : Wrapper script for starting YAAC with PnP support
|
||||||
#
|
#
|
||||||
# Preconditions:
|
# Preconditions:
|
||||||
@@ -13,14 +13,19 @@
|
|||||||
# 1. Callsign, Winlink password, and grid are updated are updated
|
# 1. Callsign, Winlink password, and grid are updated are updated
|
||||||
# 2. pat http is started
|
# 2. pat http is started
|
||||||
|
|
||||||
|
source /opt/emcomm-tools/bin/et-common
|
||||||
|
|
||||||
PAT_CONF_FILE=${HOME}/.config/pat/config.json
|
PAT_CONF_FILE=${HOME}/.config/pat/config.json
|
||||||
PAT_CONF_FILE_TEMPLATE=/etc/skel/.config/pat/config.json
|
PAT_CONF_FILE_TEMPLATE=/etc/skel/.config/pat/config.json
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "usage: $(basename $0) <command>"
|
echo "usage: $(basename $0) <command>"
|
||||||
echo " <command>"
|
echo " <command>"
|
||||||
echo " start-ardop - Start Pat Winlink in ardop mode"
|
echo " start-ardop - Start Pat Winlink in ardop mode"
|
||||||
echo " start-packet - Start Pat Winlink in packet 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
|
if [ $# -ne 1 ]; then
|
||||||
@@ -69,6 +74,44 @@ start_packet() {
|
|||||||
${CMD}
|
${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 () {
|
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"
|
||||||
@@ -82,22 +125,30 @@ update_config () {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
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}..."
|
et-log "Updating Pat configuration file: ${PAT_CONF_FILE}..."
|
||||||
cp -v ${PAT_CONF_FILE_TEMPLATE} ${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_CALLSIGN}}|${CALLSIGN}|g" ${PAT_CONF_FILE}
|
||||||
sed -i "s|{{ET_WINLINK_PASSWD}}|${WINLINK_PASSWD}|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}
|
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
|
case $1 in
|
||||||
@@ -107,6 +158,15 @@ case $1 in
|
|||||||
start-packet)
|
start-packet)
|
||||||
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."
|
echo "Invalid command."
|
||||||
usage
|
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
|
||||||
|
}
|
||||||
Executable
+78
@@ -0,0 +1,78 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Author : Gaston Gonzalez
|
||||||
|
# Date : 17 December 2024
|
||||||
|
# Updated : 28 January 2025
|
||||||
|
# Purpose : Install QtTermTCP
|
||||||
|
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=qttermtcp
|
||||||
|
VERSION=latest
|
||||||
|
DOWNLOAD_FILE=QtTermSource.zip
|
||||||
|
BIN_FILE=QtTermTCP
|
||||||
|
INSTALL_DIR="/opt/${APP}-${VERSION}"
|
||||||
|
INSTALL_BIN_DIR="${INSTALL_DIR}/bin"
|
||||||
|
LINK_PATH="/opt/${APP}"
|
||||||
|
|
||||||
|
et-log "Enabling i386 architecture support.."
|
||||||
|
dpkg --add-architecture i386
|
||||||
|
apt update
|
||||||
|
|
||||||
|
et-log "Installing QtTermTCP 32-bit build dependencies..."
|
||||||
|
apt install \
|
||||||
|
qtbase5-dev:i386 \
|
||||||
|
qtbase5-dev-tools:i386 \
|
||||||
|
qt5-qmake:i386 \
|
||||||
|
qtchooser:i386 \
|
||||||
|
qtmultimedia5-dev:i386 \
|
||||||
|
libqt5serialport5-dev:i386 \
|
||||||
|
libfftw3-dev:i386 \
|
||||||
|
qttools5-dev-tools:i386 \
|
||||||
|
-y
|
||||||
|
|
||||||
|
et-log "Installing QtTermTCP build dependencies..."
|
||||||
|
apt install \
|
||||||
|
qtbase5-dev \
|
||||||
|
qtbase5-dev-tools \
|
||||||
|
qt5-qmake \
|
||||||
|
qtchooser \
|
||||||
|
qtmultimedia5-dev \
|
||||||
|
libqt5serialport5-dev \
|
||||||
|
libfftw3-dev \
|
||||||
|
qttools5-dev-tools \
|
||||||
|
-y
|
||||||
|
|
||||||
|
if [ ! -e ${ET_DIST_DIR}/${DOWNLOAD_FILE} ]; then
|
||||||
|
|
||||||
|
URL=http://www.cantab.net/users/john.wiseman/Downloads/${DOWNLOAD_FILE}
|
||||||
|
|
||||||
|
et-log "Downloading QtTermTCP: ${URL}"
|
||||||
|
curl -s -L -o ${DOWNLOAD_FILE} --fail ${URL}
|
||||||
|
|
||||||
|
mv -v ${DOWNLOAD_FILE} ${ET_DIST_DIR}
|
||||||
|
fi
|
||||||
|
|
||||||
|
CWD_DIR=`pwd`
|
||||||
|
|
||||||
|
# Only build once
|
||||||
|
if [ ! -e "${ET_SRC_DIR}/${APP}/${BIN_FILE}" ]; then
|
||||||
|
cd ${ET_SRC_DIR}
|
||||||
|
mkdir -v ${APP} && cd ${APP}
|
||||||
|
unzip ${ET_DIST_DIR}/${DOWNLOAD_FILE}
|
||||||
|
|
||||||
|
et-log "Building QtTermTCP.."
|
||||||
|
qmake && make
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ ! -e ${INSTALL_BIN_DIR} ] && mkdir -v -p ${INSTALL_BIN_DIR}
|
||||||
|
cp -v "${ET_SRC_DIR}/${APP}/${BIN_FILE}" ${INSTALL_BIN_DIR}
|
||||||
|
|
||||||
|
[ -e ${LINK_PATH} ] && rm ${LINK_PATH}
|
||||||
|
ln -s ${INSTALL_DIR} ${LINK_PATH}
|
||||||
|
|
||||||
|
stow -v -d /opt ${APP} -t /usr/local
|
||||||
|
|
||||||
|
cd $CWD_DIR
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Author : Gaston Gonzalez
|
# Author : Gaston Gonzalez
|
||||||
# Date : 17 December 2024
|
# Date : 3 February 2025
|
||||||
# Updated : 31 December 2024
|
|
||||||
# Purpose : Install QtTermTCP
|
# Purpose : Install QtTermTCP
|
||||||
set -e
|
set -e
|
||||||
trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG
|
trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG
|
||||||
@@ -11,22 +10,26 @@ trap 'et-log "\"${last_command}\" command failed with exit code $?."' ERR
|
|||||||
|
|
||||||
APP=qttermtcp
|
APP=qttermtcp
|
||||||
VERSION=latest
|
VERSION=latest
|
||||||
DOWNLOAD_FILE=QtTermSource.zip
|
DOWNLOAD_FILE=QtTermTCP
|
||||||
BIN_FILE=QtTermTCP
|
BIN_FILE=QtTermTCP
|
||||||
INSTALL_DIR="/opt/${APP}-${VERSION}"
|
INSTALL_DIR="/opt/${APP}-${VERSION}"
|
||||||
INSTALL_BIN_DIR="${INSTALL_DIR}/bin"
|
INSTALL_BIN_DIR="${INSTALL_DIR}/bin"
|
||||||
LINK_PATH="/opt/${APP}"
|
LINK_PATH="/opt/${APP}"
|
||||||
|
|
||||||
et-log "Installing QtTermTCP build dependencies..."
|
et-log "Enabling i386 architecture support.."
|
||||||
|
dpkg --add-architecture i386
|
||||||
|
apt update
|
||||||
|
|
||||||
|
et-log "Installing QtTermTCP 32-bit build and runtime dependencies..."
|
||||||
apt install \
|
apt install \
|
||||||
qtbase5-dev \
|
qtbase5-dev:i386 \
|
||||||
qtbase5-dev-tools \
|
qtbase5-dev-tools:i386 \
|
||||||
qt5-qmake \
|
qt5-qmake:i386 \
|
||||||
qtchooser \
|
qtchooser:i386 \
|
||||||
qtmultimedia5-dev \
|
qtmultimedia5-dev:i386 \
|
||||||
libqt5serialport5-dev \
|
libqt5serialport5-dev:i386 \
|
||||||
libfftw3-dev \
|
libfftw3-dev:i386 \
|
||||||
qttools5-dev-tools \
|
qttools5-dev-tools:i386 \
|
||||||
-y
|
-y
|
||||||
|
|
||||||
if [ ! -e ${ET_DIST_DIR}/${DOWNLOAD_FILE} ]; then
|
if [ ! -e ${ET_DIST_DIR}/${DOWNLOAD_FILE} ]; then
|
||||||
@@ -36,23 +39,14 @@ if [ ! -e ${ET_DIST_DIR}/${DOWNLOAD_FILE} ]; then
|
|||||||
et-log "Downloading QtTermTCP: ${URL}"
|
et-log "Downloading QtTermTCP: ${URL}"
|
||||||
curl -s -L -o ${DOWNLOAD_FILE} --fail ${URL}
|
curl -s -L -o ${DOWNLOAD_FILE} --fail ${URL}
|
||||||
|
|
||||||
|
chmod 755 ${DOWNLOAD_FILE}
|
||||||
mv -v ${DOWNLOAD_FILE} ${ET_DIST_DIR}
|
mv -v ${DOWNLOAD_FILE} ${ET_DIST_DIR}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CWD_DIR=`pwd`
|
CWD_DIR=`pwd`
|
||||||
|
|
||||||
# Only build once
|
|
||||||
if [ ! -e "${ET_SRC_DIR}/${APP}/${BIN_FILE}" ]; then
|
|
||||||
cd ${ET_SRC_DIR}
|
|
||||||
mkdir -v ${APP} && cd ${APP}
|
|
||||||
unzip ${ET_DIST_DIR}/${DOWNLOAD_FILE}
|
|
||||||
|
|
||||||
et-log "Building QtTermTCP.."
|
|
||||||
qmake && make
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ ! -e ${INSTALL_BIN_DIR} ] && mkdir -v -p ${INSTALL_BIN_DIR}
|
[ ! -e ${INSTALL_BIN_DIR} ] && mkdir -v -p ${INSTALL_BIN_DIR}
|
||||||
cp -v "${ET_SRC_DIR}/${APP}/${BIN_FILE}" ${INSTALL_BIN_DIR}
|
cp -v "${ET_DIST_DIR}/${DOWNLOAD_FILE}" ${INSTALL_BIN_DIR}
|
||||||
|
|
||||||
[ -e ${LINK_PATH} ] && rm ${LINK_PATH}
|
[ -e ${LINK_PATH} ] && rm ${LINK_PATH}
|
||||||
ln -s ${INSTALL_DIR} ${LINK_PATH}
|
ln -s ${INSTALL_DIR} ${LINK_PATH}
|
||||||
|
|||||||
Executable
+31
@@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Author : Gaston Gonzalez
|
||||||
|
# Date : 20 January 2025
|
||||||
|
# Updated : 1 February 2025
|
||||||
|
# Purpose : Install WINE to support VARA
|
||||||
|
|
||||||
|
WIN32_DIR="${HOME}/.win32"
|
||||||
|
|
||||||
|
et-log "Installing WINE..."
|
||||||
|
|
||||||
|
# Check for an existing i386 architecture
|
||||||
|
ARCH_OUT=$(dpkg --print-foreign-architectures | grep i386)
|
||||||
|
[ $? -ne 0 ] && dpkg --add-architecture i386
|
||||||
|
|
||||||
|
#if [ ! -e "/etc/apt/keyrings/winehq-archive.key" ]; then
|
||||||
|
# et-log "Adding apt keys for official wine repo"
|
||||||
|
# mkdir -pm755 /etc/apt/keyrings
|
||||||
|
# wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
|
||||||
|
# wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/$(lsb_release -sc)/winehq-$(lsb_release -sc).sources
|
||||||
|
# apt update
|
||||||
|
# apt install --install-recommends winehq-stable
|
||||||
|
#fi
|
||||||
|
|
||||||
|
apt install \
|
||||||
|
wine \
|
||||||
|
winetricks \
|
||||||
|
exe-thumbnailer \
|
||||||
|
-y
|
||||||
|
|
||||||
|
dialog --textbox wine.txt 15 74
|
||||||
|
tput sgr 0 && clear
|
||||||
+3
-1
@@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Author : Gaston Gonzalez
|
# Author : Gaston Gonzalez
|
||||||
# Date : 16 March 2024
|
# Date : 16 March 2024
|
||||||
# Updated : 31 December 2024
|
# Updated : 20 January 2025
|
||||||
# Purpose : Main installer for EmComm Tools OS Community
|
# Purpose : Main installer for EmComm Tools OS Community
|
||||||
|
|
||||||
. ./env.sh
|
. ./env.sh
|
||||||
@@ -57,3 +57,5 @@ exitIfNotRoot
|
|||||||
# Add user-specific data
|
# Add user-specific data
|
||||||
./download-osm-maps.sh
|
./download-osm-maps.sh
|
||||||
./download-wikipedia.sh
|
./download-wikipedia.sh
|
||||||
|
|
||||||
|
./install-wine.sh
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
The base WINE applications have been installed to support a future
|
||||||
|
installation of Windows programs such as VARA HF, VARA FM, and VARA
|
||||||
|
Terminal. However, these applications can't be installed within this
|
||||||
|
session of Cubic. They must be installed on a running version of
|
||||||
|
EmComm Tools Community via a desktop session.
|
||||||
|
|
||||||
|
If you previously made a backup copy of your WINE installation using
|
||||||
|
the "$HOME/add-ons/wine/05-backup-wine-install.sh" script and would
|
||||||
|
like to bake it into this ISO image, perform the following:
|
||||||
|
|
||||||
|
1. Change into the skeleton directory now with:
|
||||||
|
|
||||||
|
cd /etc/skel
|
||||||
|
|
||||||
|
2. Copy your etc-wine-backup-*.tar.gz file using Cubic to this
|
||||||
|
directory.
|
||||||
|
|
||||||
|
3. Restore the backup into this directory with:
|
||||||
|
|
||||||
|
tar -xzf etc-wine-backup-*.tar.gz
|
||||||
|
|
||||||
|
4. Confirm that you see a `.wine32` directory here.
|
||||||
|
|
||||||
|
5. Delete the compressed backup file to reduce the size of the
|
||||||
|
final image.
|
||||||
|
|
||||||
|
rm etc-wine-backup-*.tar.gz
|
||||||
Reference in New Issue
Block a user