diff --git a/overlay/etc/skel/.bashrc b/overlay/etc/skel/.bashrc
index 9bc6f27..05dd5da 100644
--- a/overlay/etc/skel/.bashrc
+++ b/overlay/etc/skel/.bashrc
@@ -119,3 +119,6 @@ if ! shopt -oq posix; then
. /etc/bash_completion
fi
fi
+
+# Set xterm colors for the default terminal profile
+/opt/emcomm-tools/bin/et-term
diff --git a/overlay/etc/skel/.config/JS8Call.ini b/overlay/etc/skel/.config/JS8Call.ini
index 1d17ae1..30e6484 100644
--- a/overlay/etc/skel/.config/JS8Call.ini
+++ b/overlay/etc/skel/.config/JS8Call.ini
@@ -1,6 +1,6 @@
[Common]
ShowColumns=@Variant(\0\0\0\b\0\0\0\x6\0\0\0\x16\0\x63\0\x61\0l\0l\0l\0o\0g\0N\0\x61\0m\0\x65\0\0\0\x1\0\0\0\0\x1c\0\x63\0\x61\0l\0l\0l\0o\0g\0\x43\0o\0m\0m\0\x65\0n\0t\0\0\0\x1\0\0\0\0\xe\0\x63\0\x61\0l\0l\0l\0o\0g\0\0\0\x1\0\0\0\0\x1a\0\x62\0\x61\0n\0\x64\0t\0i\0m\0\x65\0s\0t\0\x61\0m\0p\0\0\0\x1\0\0\0\0\xe\0\x62\0\x61\0n\0\x64\0s\0n\0r\0\0\0\x1\0\0\0\0\x14\0\x62\0\x61\0n\0\x64\0o\0\x66\0\x66\0s\0\x65\0t\0\0\0\x1\0)
-SortBy=@Variant(\0\0\0\b\0\0\0\x1\0\0\0\x18\0\x63\0\x61\0l\0l\0\x41\0\x63\0t\0i\0v\0i\0t\0y\0\0\0\n\0\0\0\x18\0\x61\0\x63\0k\0T\0i\0m\0\x65\0s\0t\0\x61\0m\0p)
+SortBy=@Variant(\0\0\0\b\0\0\0\x2\0\0\0\x18\0\x63\0\x61\0l\0l\0\x41\0\x63\0t\0i\0v\0i\0t\0y\0\0\0\n\0\0\0\x18\0\x61\0\x63\0k\0T\0i\0m\0\x65\0s\0t\0\x61\0m\0p\0\0\0\x18\0\x62\0\x61\0n\0\x64\0\x41\0\x63\0t\0i\0v\0i\0t\0y\0\0\0\n\0\0\0\x14\0-\0t\0i\0m\0\x65\0s\0t\0\x61\0m\0p)
SubMode=0
[Configuration]
@@ -8,6 +8,7 @@ AcceptTCPRequests=true
AutoGrid=true
AutoreplyConfirmation=false
AutoreplyOnAtStartup=true
+CallsignAging=30
CATNetworkPort=localhost:4532
CheckForUpdates=false
HeartbeatAckSNR=true
diff --git a/overlay/etc/skel/.config/autostart/conky.desktop b/overlay/etc/skel/.config/autostart/conky.desktop
index 835c236..142e647 100644
--- a/overlay/etc/skel/.config/autostart/conky.desktop
+++ b/overlay/etc/skel/.config/autostart/conky.desktop
@@ -1,6 +1,6 @@
[Desktop Entry]
Type=Application
-Exec=conky
+Exec=/opt/emcomm-tools/bin/et-conky
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
diff --git a/overlay/etc/skel/.config/paracon/paracon.cfg b/overlay/etc/skel/.config/paracon/paracon.cfg
new file mode 100644
index 0000000..b742b32
--- /dev/null
+++ b/overlay/etc/skel/.config/paracon/paracon.cfg
@@ -0,0 +1,4 @@
+[Setup]
+host = localhost
+callsign = N0CALL
+
diff --git a/overlay/etc/skel/.conkyrc b/overlay/etc/skel/.conkyrc
index 4eceb73..9e70168 100644
--- a/overlay/etc/skel/.conkyrc
+++ b/overlay/etc/skel/.conkyrc
@@ -21,6 +21,7 @@ ${font DejaVu Sans:bold:size=10}${color #8d5133}${alignc}DATE/TIME
${font DejaVu Sans Mono:size=11}${color yellow}${alignc}${time %A, %B %d %Y}
Local: ${alignr}${time %H:%M:%S}
UTC: ${alignr}${tztime UTC %H:%M:%S}
+GPS Time: ${alignr}${execpi 30 et-system-info et-time}
${font DejaVu Sans:bold:size=10}${color #8d5133}${alignc}SYSTEM
${font DejaVu Sans Mono:size=11}${color yellow}Uptime : ${uptime}
diff --git a/overlay/etc/skel/.java/.userPrefs/org/ka2ddo/yaac/Beacons/MYCALL/prefs.xml b/overlay/etc/skel/.java/.userPrefs/org/ka2ddo/yaac/Beacons/MYCALL/prefs.xml
index c2dd1c8..2e716d3 100644
--- a/overlay/etc/skel/.java/.userPrefs/org/ka2ddo/yaac/Beacons/MYCALL/prefs.xml
+++ b/overlay/etc/skel/.java/.userPrefs/org/ka2ddo/yaac/Beacons/MYCALL/prefs.xml
@@ -9,7 +9,7 @@
-
+
diff --git a/overlay/etc/udev/rules.d/90-et-digirig-mobile.rules b/overlay/etc/udev/rules.d/90-et-digirig-mobile.rules
index 74a26ca..f36780e 100644
--- a/overlay/etc/udev/rules.d/90-et-digirig-mobile.rules
+++ b/overlay/etc/udev/rules.d/90-et-digirig-mobile.rules
@@ -1,6 +1,6 @@
# Author : Gaston Gonzalez
# Date : 30 September 2024
-# Updated : 23 October 2024
+# Updated : 21 November 2024
# Purpose : udev rules for the DigiRig Mobile v1.9
#
# Preconditions:
@@ -18,9 +18,18 @@ SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ENV{ET_DEVI
ENV{ET_DEVICE}="DIGIRIG_MOBILE", ENV{ET_SUBDEVICE}="CAT", GROUP="dialout", MODE="0660", SYMLINK+="et-cat", \
RUN+="/usr/bin/systemctl start rigctld"
+# The audio chipset changed for DigiRig v1.9. This rule handles the original revision.
+# Audio device will only match if PROGRAM above matches (exit status=0)
+SUBSYSTEM=="sound", ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="0012", \
+ PROGRAM="/opt/emcomm-tools/sbin/udev-tester.sh digirig-mobile", \
+ ACTION=="add", \
+ ENV{ET_DEVICE}="DIGIRIG_MOBILE", \
+ ATTR{id}="ET_AUDIO", \
+ ENV{ET_SUBDEVICE}="AUDIO", GROUP="audio", MODE="0660", SYMLINK+="et-audio"
+
+
SUBSYSTEM=="sound", ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="013c", ENV{ET_DEVICE}=="", \
ACTION=="add", \
ATTR{id}="ET_AUDIO", \
ENV{ET_DEVICE}="DIGIRIG_MOBILE", ENV{ET_SUBDEVICE}="AUDIO", GROUP="audio", MODE="0660", SYMLINK+="et-audio"
-# TODO: Add rules for earlier 1.9 release
diff --git a/overlay/opt/emcomm-tools/bin/et-conky b/overlay/opt/emcomm-tools/bin/et-conky
new file mode 100755
index 0000000..72ac85d
--- /dev/null
+++ b/overlay/opt/emcomm-tools/bin/et-conky
@@ -0,0 +1,7 @@
+#!/bin/bash
+#
+# Author : Gaston Gonzalez
+# Date : 21 November 2024
+# Purpose : Wrapper script for starting conky as there issues with normal startup
+
+sleep 3 && /usr/bin/conky > /dev/null 2>&1 &
diff --git a/overlay/opt/emcomm-tools/bin/et-js8call b/overlay/opt/emcomm-tools/bin/et-js8call
index d3eae5e..9f5783b 100755
--- a/overlay/opt/emcomm-tools/bin/et-js8call
+++ b/overlay/opt/emcomm-tools/bin/et-js8call
@@ -2,7 +2,7 @@
#
# Author : Gaston Gonzalez
# Date : 24 October 2024
-# Updated : 12 November 2024
+# Updated : 20 November 2024
# Purpose : Wrapper script for starting JS8Call with PnP support
#
# Preconditions
@@ -33,6 +33,13 @@ notify_user() {
start() {
/opt/emcomm-tools/bin/et-kill-all && update-config && /usr/bin/js8call &
+
+ if [ ! -e /dev/et-gps ]; then
+ notify-send -u critical -i \
+ /usr/share/icons/Yaru/48x48/status/dialog-information.png \
+ "No GPS. Ensure your time is accurate when JS8 starts."
+ fi
+
}
update-config () {
diff --git a/overlay/opt/emcomm-tools/bin/et-mode b/overlay/opt/emcomm-tools/bin/et-mode
index 1e105c0..721128a 100755
--- a/overlay/opt/emcomm-tools/bin/et-mode
+++ b/overlay/opt/emcomm-tools/bin/et-mode
@@ -2,7 +2,7 @@
#
# Author : Gaston Gonzalez
# Date : 6 November 2024
-# Updated : 12 November 2024
+# Updated : 20 November 2024
# Purpose : Configures the system for a specific mode of operation
# Use a simple text file to save the state of the last mode selected
@@ -66,11 +66,11 @@ options+=("${MODE_ID_NONE}" "No mode selected")
options+=("${MODE_ID_APRS_CLIENT}" "APRS Client (YAAC)")
options+=("${MODE_ID_APRS_DIGIPEATER}" "APRS Digipeater")
options+=("${MODE_ID_PACKET_DIGIPEATER}" "Packet Digipeater")
-options+=("${MODE_ID_WINLINK_ARDOP}" "Winlink ARDOP")
-options+=("${MODE_ID_WINLINK_PACKET}" "Winlink Packet")
+options+=("${MODE_ID_WINLINK_ARDOP}" "Winlink over HF (ARDOP)")
+options+=("${MODE_ID_WINLINK_PACKET}" "Winlink over VHF/UHF (AX.25 Packet)")
# Prompt user for option and save exit status
-SELECTED_MODE=$(dialog --clear --menu "Select a mode:" 15 50 10 "${options[@]}" 3>&1 1>&2 2>&3)
+SELECTED_MODE=$(dialog --clear --menu "Select a mode:" 15 65 10 "${options[@]}" 3>&1 1>&2 2>&3)
exit_status=$?
tput sgr 0 && clear
diff --git a/overlay/opt/emcomm-tools/bin/et-system-info b/overlay/opt/emcomm-tools/bin/et-system-info
index 04f179d..dbca968 100755
--- a/overlay/opt/emcomm-tools/bin/et-system-info
+++ b/overlay/opt/emcomm-tools/bin/et-system-info
@@ -2,7 +2,7 @@
#
# Author : Gaston Gonzalez
# Date : 6 October 2024
-# Updated : 8 November 2024
+# Updated : 21 November 2024
# Purpose : Utility script for dumping system information
function usage() {
@@ -13,6 +13,7 @@ function usage() {
echo " et-audio-card - Display audio card and device: ,"
echo " et-cat - Show state of CAT control interface"
echo " et-gps - Show state of GPS interface"
+ echo " et-time - Show if time is synched via GPS"
echo " et-mode - Show current mode"
echo " grid - Current grid square defined by user"
echo " ip - System IP address"
@@ -210,6 +211,15 @@ case $1 in
;;
esac
+ ;;
+ et-time)
+ ET_OUT=$(${ET_HOME}/bin/et-time)
+ if [ $? -eq 0 ]; then
+ echo "Yes"
+ else
+ echo "No"
+ fi
+
;;
ip)
hostname -I | awk '{print $1}'
diff --git a/overlay/opt/emcomm-tools/bin/et-term b/overlay/opt/emcomm-tools/bin/et-term
new file mode 100755
index 0000000..00b7296
--- /dev/null
+++ b/overlay/opt/emcomm-tools/bin/et-term
@@ -0,0 +1,12 @@
+#!/bin/bash
+# Author : Gaston Gonzalez
+# Date : 20 November 2024
+# Purpose : Set terminal colors to xterm colors
+
+DEFAULT_PROFILE=$(gsettings get org.gnome.Terminal.ProfilesList default)
+if [ $? -eq 0 ]; then
+ # strip single quotes from profile's UUID
+ PROFILE_UUID=$(echo ${DEFAULT_PROFILE} | sed "s|'||g")
+
+ gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:${PROFILE_UUID}/ palette "['#000000', '#cd0000', '#00cd00', '#cdcd00', '#0000ee', '#cd00cd', '#00cdcd', '#e5e5e5', '#7f7f7f', '#ff0000', '#00ff00', '#ffff00', '#5c5cff', '#ff00ff', '#00ffff', '#ffffff']"
+fi
diff --git a/overlay/opt/emcomm-tools/bin/et-time b/overlay/opt/emcomm-tools/bin/et-time
new file mode 100755
index 0000000..99d4355
--- /dev/null
+++ b/overlay/opt/emcomm-tools/bin/et-time
@@ -0,0 +1,20 @@
+#!/bin/bash
+# Author : Gaston Gonzalez
+# Date : 21 November 2024
+# Purpose : Determines if time has been synchronized via GPS
+
+if [ ! -e /dev/et-gps ]; then
+ et-log "No GPS detected. Can't verify time sync"
+ exit 1
+fi
+
+TRACKING_INFO=$(chronyc tracking | grep GPS)
+if [ $? -ne 0 ]; then
+ et-log "GPS plugged in, but not used for time source. There may an internet connection."
+ exit 1
+fi
+
+
+et-log "Time appears to be synched via GPS"
+echo ""
+chronyc tracking | grep time
diff --git a/overlay/opt/emcomm-tools/conf/radios.d/yaesu-ft891.json b/overlay/opt/emcomm-tools/conf/radios.d/yaesu-ft891.json
index 0f3f4f9..dc2307a 100644
--- a/overlay/opt/emcomm-tools/conf/radios.d/yaesu-ft891.json
+++ b/overlay/opt/emcomm-tools/conf/radios.d/yaesu-ft891.json
@@ -5,7 +5,7 @@
"rigctrl": {
"id": "1036",
"baud": "38400",
- "ptt": "RTS"
+ "ptt": "RIG"
},
"notes": [
"05-06 CAT RATE = 38400bps",
@@ -23,7 +23,8 @@
"08-12 DATA BFO = USB",
"11-07 SSB BFO = AUTO",
"For digital operation always set Mode = DATA",
- "For digital operation always set WDH = 3000"
+ "For digital operation always set WDH = 3000",
+ "For digital operation always set mode to USB"
],
"fieldNotes": [
"Long press [BAND] and select DATA using the VFO knob",
diff --git a/overlay/opt/emcomm-tools/sbin/udev-tester.sh b/overlay/opt/emcomm-tools/sbin/udev-tester.sh
index 781c92a..878ee0e 100755
--- a/overlay/opt/emcomm-tools/sbin/udev-tester.sh
+++ b/overlay/opt/emcomm-tools/sbin/udev-tester.sh
@@ -1,6 +1,7 @@
#!/bin/bash
# Author : Gaston Gonzalez
# Date : 11 October 2024
+# Updated : 21 November 2024
# Purpose : Perform tests that can be used by the udev subsystem to aid
# in rule development. This is intended to by used with the PROGRAM
# directive inside of a udev rule.
@@ -26,6 +27,37 @@ test_yaesu_ft891() {
exit 1
}
+# Exit with a 0 exit success if, and only if, the currently selected radio
+# uses a DigiRig Mobile.
+test_digirig_mobile() {
+ if [ -L "${ET_HOME}/conf/radios.d/active-radio.json" ]; then
+ ID=$(cat "${ET_HOME}/conf/radios.d/active-radio.json" | jq -r .id)
+
+ if [[ "$ID" == "digirig-mobile-no-cat" ]]; then
+ et-log "Old DigiRig Mobile detected for no CAT device"
+ exit 0
+ fi
+
+ if [[ "$ID" == "yaesu-ft818nd" ]]; then
+ et-log "Old DigiRig Mobile detected for FT-818ND"
+ exit 0
+ fi
+
+ if [[ "$ID" == "yaesu-ft857d" ]]; then
+ et-log "Old DigiRig Mobile detected for FT-857D"
+ exit 0
+ fi
+
+ if [[ "$ID" == "yaesu-ft897d" ]]; then
+ et-log "Old DigiRig Mobile detected for FT-897D"
+ exit 0
+ fi
+
+ fi
+
+ exit 1
+}
+
usage() {
echo "usage: $(basename $0) "
}
@@ -39,6 +71,8 @@ case $1 in
yaesu-ft891)
test_yaesu_ft891
;;
+ digirig-mobile)
+ test_digirig_mobile
esac
exit 1
diff --git a/scripts/install-bbs-client.sh b/scripts/install-bbs-client.sh
new file mode 100755
index 0000000..94db77a
--- /dev/null
+++ b/scripts/install-bbs-client.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+# Author : Gaston Gonzalez
+# Date : 20 November 2024
+# Purpose : Install BBS client (Paracon)
+set -e
+trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG
+trap 'et-log "\"${last_command}\" command failed with exit code $?."' ERR
+
+VERSION=1.1.0
+DOWNLOAD_FILE=paracon_${VERSION}.pyz
+
+BIN_FILE=paracon
+INSTALL_DIR=/opt/paracon-${VERSION}
+INSTALL_BIN_DIR="${INSTALL_DIR}/bin"
+LINK_PATH=/opt/paracon
+
+et-log "Installing BBS client dependencies..."
+apt install \
+ python3 \
+ -y
+
+et-log "Installing BBS client..."
+
+if [ ! -e ${INSTALL_BIN_DIR} ]; then
+ et-log "Creating Paracon install directory: ${INSTALL_BIN_DIR}"
+ mkdir -v -p ${INSTALL_BIN_DIR}
+fi
+
+if [ ! -e ${INSTALL_BIN_DIR}/${BIN_FILE} ]; then
+ URL="https://github.com/mfncooper/paracon/releases/download/v${VERSION}/${DOWNLOAD_FILE}"
+
+ et-log "Downloading Paracon: ${URL}"
+ curl -s -L -o ${BIN_FILE} --fail ${URL}
+
+ mv -v ${BIN_FILE} ${INSTALL_BIN_DIR}
+fi
+
+chmod 755 ${INSTALL_BIN_DIR}/${BIN_FILE}
+
+[ -e ${LINK_PATH} ] && rm ${LINK_PATH}
+ln -s ${INSTALL_DIR} ${LINK_PATH}
+
+stow -v -d /opt paracon -t /usr/local
diff --git a/scripts/install.sh b/scripts/install.sh
index 2812229..192fa06 100755
--- a/scripts/install.sh
+++ b/scripts/install.sh
@@ -2,7 +2,7 @@
#
# Author : Gaston Gonzalez
# Date : 16 March 2024
-# Updated : 5 November 2024
+# Updated : 22 November 2024
# Purpose : Main installer for EmComm Tools OS Community
. ./env.sh
@@ -38,6 +38,7 @@ exitIfNotRoot
# Install packet tool chain
./install-direwolf.sh
./install-yaac.sh
+./install-bbs-client.sh
# Install modems
./install-ardop.sh
diff --git a/tests/test-paracon b/tests/test-paracon
new file mode 100755
index 0000000..aefc886
--- /dev/null
+++ b/tests/test-paracon
@@ -0,0 +1,7 @@
+#!/bin/bash
+# Author : Gaston Gonzalez
+# Date : 21 November 2024
+# Purpose : Test paracon installation
+
+OUT=$(which paracon)
+exit $?