2024-10-06 08:14:59 -07:00
|
|
|
#!/bin/bash
|
|
|
|
|
#
|
|
|
|
|
# Author : Gaston Gonzalez
|
|
|
|
|
# Date : 6 October 2024
|
2025-03-25 07:09:48 -07:00
|
|
|
# Updated : 25 March 2025
|
2024-10-06 08:14:59 -07:00
|
|
|
# Purpose : Utility script for dumping system information
|
|
|
|
|
|
|
|
|
|
function usage() {
|
|
|
|
|
echo "Usage: $(basename $0) <command>"
|
2024-10-21 16:20:42 -07:00
|
|
|
echo " active-radio - Display model of active radio"
|
2024-10-25 15:58:35 -07:00
|
|
|
echo " callsign - Current callsign"
|
2024-10-21 16:20:42 -07:00
|
|
|
echo " et-audio - Show state of audio interface"
|
|
|
|
|
echo " et-audio-card - Display audio card and device: <card>,<device>"
|
|
|
|
|
echo " et-cat - Show state of CAT control interface"
|
|
|
|
|
echo " et-gps - Show state of GPS interface"
|
2024-11-21 19:30:04 -07:00
|
|
|
echo " et-time - Show if time is synched via GPS"
|
2024-11-06 13:06:16 -07:00
|
|
|
echo " et-mode - Show current mode"
|
2025-09-04 08:58:20 -04:00
|
|
|
echo " et-sdr - Show state of SDR interface"
|
2024-10-25 15:58:35 -07:00
|
|
|
echo " grid - Current grid square defined by user"
|
2024-10-21 16:20:42 -07:00
|
|
|
echo " ip - System IP address"
|
|
|
|
|
echo " release - EmComm Tools release"
|
2024-10-06 08:14:59 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if [ $# -ne 1 ]; then
|
|
|
|
|
usage
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
2024-10-25 15:58:35 -07:00
|
|
|
[ -z "$ET_USER_CONFIG" ] && ET_USER_CONFIG="${HOME}/.config/emcomm-tools/user.json"
|
|
|
|
|
|
2024-10-06 08:14:59 -07:00
|
|
|
case $1 in
|
2024-10-10 04:37:22 -07:00
|
|
|
active-radio)
|
|
|
|
|
if [ -L "${ET_HOME}/conf/radios.d/active-radio.json" ]; then
|
2024-10-10 05:48:41 -07:00
|
|
|
cat "${ET_HOME}/conf/radios.d/active-radio.json" | jq -r .model
|
2024-10-10 04:37:22 -07:00
|
|
|
else
|
2024-10-10 05:48:41 -07:00
|
|
|
echo "No radio selected"
|
2024-10-10 04:37:22 -07:00
|
|
|
fi
|
2024-10-21 14:47:45 -07:00
|
|
|
;;
|
2024-10-25 15:58:35 -07:00
|
|
|
callsign)
|
|
|
|
|
cat ${ET_USER_CONFIG} | jq -r .callsign
|
|
|
|
|
;;
|
|
|
|
|
grid)
|
|
|
|
|
cat ${ET_USER_CONFIG} | jq -r .grid
|
|
|
|
|
;;
|
2024-10-21 14:47:45 -07:00
|
|
|
et-audio)
|
|
|
|
|
|
|
|
|
|
# 1. Check if the symlink was created by the udev rules
|
|
|
|
|
if [ -e /dev/et-audio ]; then
|
2024-10-21 15:42:31 -07:00
|
|
|
|
|
|
|
|
UDEV_OUT=$(udevadm info /dev/et-audio | grep ET_DEVICE)
|
|
|
|
|
if [ $? -eq 0 ]; then
|
2024-10-23 15:45:41 -07:00
|
|
|
|
|
|
|
|
# Display friendly audio device name
|
|
|
|
|
ET_DEVICE=$(udevadm info /dev/et-audio | grep ET_DEVICE | cut -d"=" -f2)
|
|
|
|
|
case $ET_DEVICE in
|
|
|
|
|
"DIGIRIG_LITE")
|
|
|
|
|
echo "DigiRig Lite"
|
|
|
|
|
;;
|
|
|
|
|
"DIGIRIG_MOBILE")
|
|
|
|
|
echo "DigiRig Mobile"
|
|
|
|
|
;;
|
|
|
|
|
*)
|
|
|
|
|
echo $ET_DEVICE
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
|
2024-10-21 15:42:31 -07:00
|
|
|
else
|
|
|
|
|
echo "Connected"
|
|
|
|
|
fi
|
|
|
|
|
|
2024-10-21 14:47:45 -07:00
|
|
|
else
|
|
|
|
|
echo "Not connected"
|
|
|
|
|
fi
|
|
|
|
|
|
2024-10-21 16:20:42 -07:00
|
|
|
;;
|
|
|
|
|
et-audio-card)
|
|
|
|
|
|
|
|
|
|
# 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
|
|
|
|
|
AUDIO_CARD=$(echo $APLAY_OUT | cut -d":" -f1 | awk '{print $2}')
|
|
|
|
|
AUDIO_DEVICE=$(echo $APLAY_OUT | cut -d"," -f2 | cut -d":" -f1 | awk '{print $2}')
|
|
|
|
|
echo $AUDIO_CARD,$AUDIO_DEVICE
|
|
|
|
|
else
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
2024-10-10 04:37:22 -07:00
|
|
|
;;
|
2024-10-06 08:14:59 -07:00
|
|
|
et-cat)
|
2024-10-10 05:24:56 -07:00
|
|
|
|
2024-10-10 05:48:41 -07:00
|
|
|
if [ ! -L "${ET_HOME}/conf/radios.d/active-radio.json" ]; then
|
|
|
|
|
echo "N/A"
|
|
|
|
|
exit 0
|
|
|
|
|
fi
|
|
|
|
|
|
2024-10-10 05:24:56 -07:00
|
|
|
# 1. Check if the symlink was created by the udev rules
|
|
|
|
|
if [ -e /dev/et-cat ]; then
|
|
|
|
|
|
|
|
|
|
# 2. Check if the rigctl systemd unit is running properly
|
|
|
|
|
systemctl status rigctld --no-pager > /dev/null
|
|
|
|
|
if [ $? -eq 0 ]; then
|
2024-10-31 08:15:45 -07:00
|
|
|
|
|
|
|
|
# Note: I am disabling the VFO read as it causes issues with serval Icom
|
|
|
|
|
# radios and results in the VFO changing momentarily during this client
|
|
|
|
|
# request. It causes issues during TX and RX. If it is not bulletproof,
|
|
|
|
|
# features like this will be turned off. This is a problem given that
|
|
|
|
|
# Conky calls this method every 10 seconds.
|
|
|
|
|
#
|
2024-10-10 05:24:56 -07:00
|
|
|
# 3. Grab and format frequency
|
2024-10-31 08:15:45 -07:00
|
|
|
#FREQ=$(timeout 1 rigctl -m 2 f)
|
|
|
|
|
#if [ $? -eq 0 ]; then
|
|
|
|
|
# printf "%'d MHz\n" "$FREQ" | sed 's|,|.|g'
|
|
|
|
|
#else
|
|
|
|
|
# echo "Connected. Can't access VFO";
|
|
|
|
|
#fi
|
|
|
|
|
echo "Connected";
|
2024-10-10 05:24:56 -07:00
|
|
|
else
|
2024-10-25 11:19:32 -07:00
|
|
|
echo "Connected. No rig control"
|
2024-10-10 05:24:56 -07:00
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
echo "Not connected";
|
|
|
|
|
fi
|
|
|
|
|
|
2024-10-06 08:14:59 -07:00
|
|
|
;;
|
2025-09-04 08:58:20 -04:00
|
|
|
et-sdr)
|
|
|
|
|
# 1. Check if the symlink was created by the udev rules
|
|
|
|
|
if [ -e /dev/et-sdr ]; then
|
|
|
|
|
echo "Connected";
|
|
|
|
|
else
|
|
|
|
|
echo "Not connected";
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
;;
|
2024-10-06 08:14:59 -07:00
|
|
|
et-gps)
|
2024-10-11 07:59:09 -07:00
|
|
|
|
|
|
|
|
# 1. Check if the symlink was created by the udev rules
|
|
|
|
|
if [ -e /dev/et-gps ]; then
|
|
|
|
|
|
|
|
|
|
# 2. Check if the gpsd systemd unit is running properly
|
|
|
|
|
systemctl status gpsd --no-pager > /dev/null
|
|
|
|
|
if [ $? -eq 0 ]; then
|
|
|
|
|
|
|
|
|
|
# 3. Obtain the current GPS mode
|
2024-10-11 12:38:04 -07:00
|
|
|
GPS_JSON=$(gpspipe -w -n 10 | grep -m 1 TPV)
|
2024-10-11 07:59:09 -07:00
|
|
|
if [ $? -eq 0 ]; then
|
2024-10-11 12:38:04 -07:00
|
|
|
GPS_MODE=$(echo $GPS_JSON | jq --exit-status -r .mode)
|
2024-10-11 07:59:09 -07:00
|
|
|
|
|
|
|
|
case $GPS_MODE in
|
2024-10-11 12:20:24 -07:00
|
|
|
1)
|
2024-10-11 07:59:09 -07:00
|
|
|
echo "No fix"
|
|
|
|
|
;;
|
2024-10-11 12:20:24 -07:00
|
|
|
2)
|
2024-10-11 07:59:09 -07:00
|
|
|
echo "2D fix"
|
|
|
|
|
;;
|
2024-10-11 12:20:24 -07:00
|
|
|
3)
|
2024-10-11 12:38:04 -07:00
|
|
|
LAT=$(echo $GPS_JSON | jq -r .lat)
|
|
|
|
|
LON=$(echo $GPS_JSON | jq -r .lon)
|
|
|
|
|
printf "%.5f,%.5f\n" $LAT $LON
|
2024-10-11 07:59:09 -07:00
|
|
|
;;
|
|
|
|
|
*)
|
2024-10-11 12:20:24 -07:00
|
|
|
echo "Unknown mode"
|
2024-10-11 07:59:09 -07:00
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
else
|
|
|
|
|
echo "Connected. Can't decode"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
else
|
|
|
|
|
echo "Connected. gpsd not running"
|
|
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
echo "Not connected"
|
|
|
|
|
fi
|
|
|
|
|
|
2024-10-06 08:14:59 -07:00
|
|
|
;;
|
2024-11-06 13:06:16 -07:00
|
|
|
et-mode)
|
2024-11-07 09:51:45 -07:00
|
|
|
|
2024-11-06 13:06:16 -07:00
|
|
|
SELECTED_MODE=$(cat "${HOME}/.config/emcomm-tools/et-mode")
|
|
|
|
|
|
|
|
|
|
MODE_ID_NONE="none"
|
|
|
|
|
MODE_ID_APRS_DIGIPEATER="aprs-digipeater"
|
2024-12-03 05:50:39 -07:00
|
|
|
MODE_ID_BBS_CLIENT="bbs-client"
|
2024-12-17 06:24:26 -07:00
|
|
|
MODE_ID_BBS_CLIENT2="bbs-client2"
|
2025-03-25 07:09:48 -07:00
|
|
|
MODE_ID_BBS_SERVER="bbs-server"
|
2024-12-05 04:56:34 -07:00
|
|
|
MODE_ID_CHAT_CLIENT="chat-chattervox"
|
2024-11-08 14:39:49 -07:00
|
|
|
MODE_ID_PACKET_DIGIPEATER="packet-digipeater"
|
2024-11-06 13:06:16 -07:00
|
|
|
MODE_ID_APRS_CLIENT="aprs-client"
|
|
|
|
|
MODE_ID_WINLINK_ARDOP="winlink-ardop"
|
|
|
|
|
MODE_ID_WINLINK_PACKET="winlink-packet"
|
2025-02-07 02:30:32 -07:00
|
|
|
MODE_ID_WINLINK_VARA_HF="winlink-vara-hf"
|
|
|
|
|
MODE_ID_WINLINK_VARA_FM="winlink-vara-fm"
|
2024-11-06 13:06:16 -07:00
|
|
|
|
2024-11-07 09:51:45 -07:00
|
|
|
if [ ! -e /dev/et-audio ]; then
|
|
|
|
|
echo "Run 'et-mode' to set"
|
|
|
|
|
echo ${MODE_ID_NONE} > "${HOME}/.config/emcomm-tools/et-mode"
|
|
|
|
|
exit 0
|
|
|
|
|
fi
|
|
|
|
|
|
2024-11-06 13:06:16 -07:00
|
|
|
case ${SELECTED_MODE} in
|
|
|
|
|
${MODE_ID_NONE})
|
2024-11-07 09:58:01 -07:00
|
|
|
echo "Run 'et-mode' to set"
|
2024-11-06 13:06:16 -07:00
|
|
|
;;
|
|
|
|
|
${MODE_ID_APRS_DIGIPEATER})
|
2024-11-08 14:39:49 -07:00
|
|
|
echo "APRS Digipeater"
|
2024-11-06 13:06:16 -07:00
|
|
|
;;
|
|
|
|
|
${MODE_ID_APRS_CLIENT})
|
|
|
|
|
echo "APRS"
|
|
|
|
|
;;
|
2024-12-03 05:50:39 -07:00
|
|
|
${MODE_ID_BBS_CLIENT})
|
|
|
|
|
echo "BBS Client"
|
|
|
|
|
;;
|
2024-12-17 06:24:26 -07:00
|
|
|
${MODE_ID_BBS_CLIENT2})
|
|
|
|
|
echo "BBS Client"
|
|
|
|
|
;;
|
2025-03-25 07:09:48 -07:00
|
|
|
${MODE_ID_BBS_SERVER})
|
|
|
|
|
echo "BBS Server"
|
|
|
|
|
;;
|
2024-12-05 04:56:34 -07:00
|
|
|
${MODE_ID_CHAT_CLIENT})
|
|
|
|
|
echo "Chat (chattervox)"
|
|
|
|
|
;;
|
2024-11-08 14:39:49 -07:00
|
|
|
${MODE_ID_PACKET_DIGIPEATER})
|
|
|
|
|
echo "Packet Digipeater"
|
|
|
|
|
;;
|
2024-11-06 13:06:16 -07:00
|
|
|
${MODE_ID_WINLINK_ARDOP})
|
|
|
|
|
echo "Winlink ARDOP"
|
|
|
|
|
;;
|
|
|
|
|
${MODE_ID_WINLINK_PACKET})
|
|
|
|
|
echo "Winlink Packet"
|
|
|
|
|
;;
|
2025-02-07 02:30:32 -07:00
|
|
|
${MODE_ID_WINLINK_VARA_FM})
|
|
|
|
|
echo "Winlink VARA FM"
|
|
|
|
|
;;
|
|
|
|
|
${MODE_ID_WINLINK_VARA_HF})
|
|
|
|
|
echo "Winlink VARA HF"
|
|
|
|
|
;;
|
2024-11-06 13:06:16 -07:00
|
|
|
*)
|
|
|
|
|
echo "Unknown"
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
|
2024-11-21 19:30:04 -07:00
|
|
|
;;
|
|
|
|
|
et-time)
|
|
|
|
|
ET_OUT=$(${ET_HOME}/bin/et-time)
|
|
|
|
|
if [ $? -eq 0 ]; then
|
|
|
|
|
echo "Yes"
|
|
|
|
|
else
|
|
|
|
|
echo "No"
|
|
|
|
|
fi
|
|
|
|
|
|
2024-11-06 13:06:16 -07:00
|
|
|
;;
|
2024-10-06 08:14:59 -07:00
|
|
|
ip)
|
2024-10-20 07:24:12 -07:00
|
|
|
hostname -I | awk '{print $1}'
|
2024-10-06 08:14:59 -07:00
|
|
|
;;
|
|
|
|
|
release)
|
|
|
|
|
grep DISTRIB_DESCRIPTION /etc/lsb-release | sed 's|"||g' | awk '{print $1}' | cut -d"=" -f2
|
|
|
|
|
;;
|
|
|
|
|
*)
|
|
|
|
|
echo "Command not supported."
|
|
|
|
|
usage
|
|
|
|
|
exit 1
|
|
|
|
|
;;
|
|
|
|
|
esac
|