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 $?