You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
359 lines
8.4 KiB
359 lines
8.4 KiB
#!/bin/bash
|
|
|
|
function start-rtl {
|
|
|
|
value=`aplay -l | grep "Loopback"`
|
|
echo "$value" > /dev/null
|
|
set -- $value
|
|
|
|
#rtl_fm -M fm -f 144.39M -s 48k | aplay -D hw:${2:0:1},0,0 -r 48000 -t raw -f S16_LE -c 1
|
|
rtl_fm -M fm -f $frequency -s 48k | tee >(aplay -D hw:${2:0:1},0,0 -r 48000 -t raw -f S16_LE -c 1) | aplay -r 48000 -t raw -f S16_LE -c 1
|
|
|
|
rtl_fm -g 48 -M fm -f $frequency -s 48k | aplay -D hw:${2:0:1},0,0 -r 48000 -t raw -f S16_LE -c 1 &
|
|
|
|
}
|
|
|
|
# script to auto decode packets using Direwolf and FM TXC and run Pacsat Ground Station
|
|
|
|
sudo pkill -f "/home/pi/CubeSatSim/groundstation/direwolf-pacsat-tmp.conf"
|
|
|
|
loopback=0
|
|
vox=0
|
|
#rpitx=0
|
|
#card=0
|
|
#pwm=0
|
|
|
|
if [ "$1" = "l" ] ; then
|
|
loopback=1
|
|
elif [ "$1" = "v" ] ; then
|
|
vox=1
|
|
#elif [ "$1" = "c" ] ; then
|
|
# card=1
|
|
#else
|
|
# pwm=1
|
|
fi
|
|
|
|
if [[ $(lsusb | grep "RTL") ]] ; then
|
|
echo "RTL-SDR detected"
|
|
rtl=1
|
|
else
|
|
echo "No RTL-SDR detected"
|
|
rtl=0
|
|
# pwm=1
|
|
fi
|
|
|
|
if [[ $(arecord -l | grep "USB Audio Device") ]] ; then
|
|
echo "USB Sound Card detected"
|
|
soundcard=1
|
|
else
|
|
echo "No USB Sound Card detected"
|
|
soundcard=0
|
|
fi
|
|
|
|
gpio -g mode 12 up
|
|
if [[ $(gpio -g read 12 | grep 0) ]] ; then
|
|
echo "LPF is present"
|
|
lpf=1
|
|
else
|
|
echo "LPF not present"
|
|
lpf=0
|
|
fi
|
|
|
|
gpio -g mode 7 up
|
|
if [[ $(gpio -g read 7 | grep 0) ]] ; then
|
|
echo "TXC is present"
|
|
txc=1
|
|
else
|
|
echo "TXC not present"
|
|
txc=0
|
|
|
|
fi
|
|
|
|
FILE=/home/pi/CubeSatSim/battery_saver
|
|
if [ -f "$FILE" ]; then
|
|
rpitx=1
|
|
elif [ "$txc" = "0" ] && [ "$lpf" = "1" ]; then
|
|
rpitx=1
|
|
else
|
|
rpitx=0
|
|
fi
|
|
|
|
|
|
if [ "$soundcard" = "0" ] && [ "$rtl" = "0" ]; then
|
|
|
|
echo "Won't work since can't receive with Sound Card or RTL-SDR"
|
|
sleep 10
|
|
exit
|
|
|
|
fi
|
|
|
|
value=`cat /home/pi/CubeSatSim/.mode`
|
|
echo "$value" > /dev/null
|
|
set -- $value
|
|
|
|
MODE=$1
|
|
|
|
if [ ! "$MODE" = "P" ] && [ ! "$loopback" = "1" ] ; then
|
|
echo
|
|
echo "Changing to PacSat Ground Station Mode."
|
|
echo "You might reboot"
|
|
echo
|
|
sleep 5
|
|
/home/pi/CubeSatSim/config -I
|
|
fi
|
|
|
|
value=`cat /home/pi/CubeSatSim/sim.cfg`
|
|
echo "$value" > /dev/null
|
|
set -- $value
|
|
|
|
callsign="$1"
|
|
txfrequency="$7e3"
|
|
rxfrequency="$8e3"
|
|
frequency="$8e6"
|
|
|
|
echo -n "Callsign is "
|
|
echo $callsign
|
|
|
|
if [ "$loopback" = "1" ] ; then
|
|
|
|
# if [ ! "$MODE" = "p" ] ; then
|
|
echo
|
|
echo "Switching to PacSat mode for the Simulated PacSat Satellite"
|
|
echo
|
|
/home/pi/CubeSatSim/config -G n
|
|
# fi
|
|
|
|
if [ ! -d "/home/pi/PacSatGroundLoop" ] ; then
|
|
# if [ ! "$loopback" = "1" ] ; then # don't do this for now.
|
|
|
|
cd
|
|
sudo rm PacSatGroundLoop.zip &>/dev/null
|
|
# wget https://github.com/alanbjohnston/CubeSatSim/raw/refs/heads/master-b/spacecraft/PacSatGround_0.46o/PacSatGround.zip
|
|
cp /home/pi/CubeSatSim/spacecraft/PacSatGround_0.46o/PacSatGround.zip .
|
|
unzip PacSatGround.zip -d PacSatGroundLoop
|
|
sudo rm PacSatGround.zip
|
|
|
|
mkdir PacSatGroundLoop/spacecraft
|
|
mv PacSatGroundLoop/PacSatGround/spacecraft/PacSatSim.properties PacSatGroundLoop/spacecraft/PacSatSim.properties
|
|
mv PacSatGroundLoop/PacSatGround/stp.dat PacSatGroundLoop/stp.dat
|
|
mv PacSatGroundLoop/PacSatGround/seq.dat PacSatGroundLoop/seq.dat
|
|
mv PacSatGroundLoop/PacSatGround/PacSatGround.properties PacSatGroundLoop/PacSatGround.properties
|
|
|
|
sudo sed -i 's/logfile_dir=\/home\/pi\/PacSatGround/logfile_dir=\/home\/pi\/PacSatGroundLoop/g' /home/pi/PacSatGroundLoop/PacSatGround.properties
|
|
|
|
FILE=/home/pi/Desktop/PacsatGround/spacecraft/PacSatSim.properties
|
|
if [ -f "$FILE" ]; then
|
|
FILE2=/home/pi/PacSatGroundLoop/spacecraft/PacSatSim.properties
|
|
sudo rm $FILE2
|
|
cp $FILE $FILE2
|
|
else
|
|
echo
|
|
echo "The first time you run the Ground Station, you will need to select Yes to override files, then put in your callsign"
|
|
sleep 10
|
|
fi
|
|
fi
|
|
sudo sed -i "s/TNC_TX_DELAY=.*$/TNC_TX_DELAY=750/g" /home/pi/PacSatGroundLoop/PacSatGround.properties
|
|
|
|
else
|
|
|
|
echo -n "Transmit Frequency is "
|
|
echo $txfrequency
|
|
echo -n "Receive Frequency is "
|
|
echo $rxfrequency
|
|
sleep 2
|
|
|
|
echo
|
|
echo "Mode is PacSat Ground Station"
|
|
echo
|
|
|
|
if [ ! -d "/home/pi/PacSatGround" ] ; then
|
|
|
|
cd
|
|
sudo rm PacSatGround.zip &>/dev/null
|
|
# wget https://github.com/alanbjohnston/CubeSatSim/raw/refs/heads/master-b/spacecraft/PacSatGround_0.46o/PacSatGround.zip
|
|
cp /home/pi/CubeSatSim/spacecraft/PacSatGround_0.46o/PacSatGround.zip .
|
|
unzip PacSatGround.zip
|
|
sudo rm PacSatGround.zip
|
|
|
|
FILE=/home/pi/Desktop/PacsatGround/spacecraft/PacSatSim.properties
|
|
if [ -f "$FILE" ]; then
|
|
FILE2=/home/pi/PacSatGround/spacecraft/PacSatSim.properties
|
|
sudo rm $FILE2
|
|
cp $FILE $FILE2
|
|
else
|
|
echo
|
|
echo "The first time you run the Ground Station, you will need to select Yes to override files, then put in your callsign"
|
|
sleep 10
|
|
fi
|
|
|
|
fi
|
|
sudo sed -i "s/TNC_TX_DELAY=.*$/TNC_TX_DELAY=750/g" /home/pi/PacSatGround/PacSatGround.properties
|
|
fi
|
|
|
|
sudo modprobe snd-aloop
|
|
|
|
sudo systemctl stop command >/dev/null 2>&1
|
|
|
|
sudo systemctl stop command >/dev/null 2>&1
|
|
|
|
sudo systemctl stop openwebrx >/dev/null 2>&1
|
|
|
|
sudo systemctl stop rtl_tcp >/dev/null 2>&1
|
|
|
|
pkill -o chromium &>/dev/null
|
|
|
|
pkill -o firefox &>/dev/null
|
|
|
|
sudo killall -9 rtl_fm &>/dev/null
|
|
|
|
sudo killall -9 sdrpp &>/dev/null
|
|
|
|
sudo killall -9 qsstv &>/dev/null
|
|
|
|
sudo killall -9 rtl_tcp &>/dev/null
|
|
|
|
sudo killall -9 java &>/dev/null
|
|
|
|
sudo killall -9 CubicSDR &>/dev/null
|
|
|
|
sudo killall -9 zenity &>/dev/null
|
|
|
|
sudo usermod -a -G gpio pi
|
|
|
|
|
|
if [ "$loopback" = "1" ] ; then
|
|
|
|
echo "1: Using Audio Loopback, No Transmit or Receive"
|
|
ADEVICE="ADEVICE plughw:CARD=Loopback,DEV=1"
|
|
PTT="PTT GPIOD gpiochip0 17"
|
|
|
|
else
|
|
|
|
if [ "$lpf" = "1" ] ; then
|
|
|
|
if [ "$txc" = "1" ] && [ "$soundcard" = "1" ] ; then
|
|
|
|
if [ "$rpitx" = "1" ] ; then
|
|
|
|
echo "2: Using FM for Receive and rpitx for Transmit"
|
|
ADEVICE="ADEVICE shared_mic plughw:CARD=Loopback,DEV=0"
|
|
PTT="PTT GPIOD gpiochip0 17"
|
|
|
|
else
|
|
|
|
echo "3: Using FM for Receive and Transmit"
|
|
ADEVICE="ADEVICE shared_mic plughw:CARD=Headphones,DEV=0"
|
|
PTT="PTT GPIOD gpiochip0 -20"
|
|
|
|
fi
|
|
|
|
elif [ "$txc" = "1" ] && [ "$soundcard" = "0" ] ; then
|
|
|
|
if [ "$rtl" = "1" ]; then
|
|
|
|
if [ "$rpitx" = "1" ]; then
|
|
|
|
echo "2b: Using RTL-SDR for Receive and rpitx for Transmit"
|
|
start-rtl
|
|
# ADEVICE="ADEVICE shared_mic plughw:CARD=Loopback,DEV=0"
|
|
ADEVICE="ADEVICE plughw:CARD=Loopback,DEV=1"
|
|
PTT="PTT GPIOD gpiochip0 17"
|
|
|
|
else
|
|
|
|
echo "3b: RTL-SDR for Receive Only"
|
|
ADEVICE="ADEVICE plughw:CARD=Loopback,DEV=1"
|
|
PTT="#PTT GPIOD gpiochip0 17"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
echo "Won't work since can't receive with Sound Card or RTL-SDR"
|
|
sleep 10
|
|
exit
|
|
|
|
fi
|
|
else
|
|
|
|
if [ "$rtl" = "1" ]; then
|
|
|
|
echo "4: Using RTL-SDR for Receive and rpitx for Transmit"
|
|
start-rtl
|
|
# ADEVICE="ADEVICE shared_mic plughw:CARD=Loopback,DEV=0"
|
|
ADEVICE="ADEVICE plughw:CARD=Loopback,DEV=1"
|
|
PTT="PTT GPIOD gpiochip0 17"
|
|
|
|
else
|
|
|
|
echo "5: Using Sound Card for Receive and rpitx for Transmit"
|
|
ADEVICE="ADEVICE shared_mic plughw:CARD=Headphones,DEV=0"
|
|
PTT="PTT GPIOD gpiochip0 17"
|
|
|
|
fi
|
|
fi
|
|
|
|
else
|
|
|
|
if [ "$txc" = "1" ] ; then
|
|
|
|
echo "6: Using FM for Receive Only"
|
|
ADEVICE="ADEVICE shared_mic plughw:CARD=Headphones,DEV=0"
|
|
PTT="#PTT GPIOD gpiochip0 -20"
|
|
|
|
else
|
|
|
|
if [ "$rtl" = "1" ] ; then
|
|
|
|
start-rtl
|
|
echo "7: Using RTL-SDR for Receive Only"
|
|
ADEVICE="ADEVICE plughw:CARD=Loopback,DEV=1"
|
|
PTT="#PTT GPIOD gpiochip0 17"
|
|
|
|
else
|
|
|
|
echo "8: Using Sound Card for Receive and Transmit"
|
|
ADEVICE="ADEVICE plughw:CARD=Device,DEV=0"
|
|
PTT="PTT GPIOD gpiochip0 17"
|
|
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
DIREWOLF_CONF="/home/pi/CubeSatSim/groundstation/direwolf-pacsat-tmp.conf"
|
|
|
|
echo "$ADEVICE" > $DIREWOLF_CONF
|
|
echo "MYCALL $callsign-1" >> $DIREWOLF_CONF
|
|
echo "$PTT" >> $DIREWOLF_CONF
|
|
cat /home/pi/CubeSatSim/groundstation/direwolf/direwolf-pacsat.conf >> $DIREWOLF_CONF
|
|
|
|
echo
|
|
echo "$DIREWOLF_CONF"
|
|
echo
|
|
cat $DIREWOLF_CONF
|
|
echo
|
|
|
|
direwolf -P+ -D1 -qd -r 48000 -c $DIREWOLF_CONF &
|
|
|
|
cd /home/pi/Desktop/PacsatGround/
|
|
|
|
if [ "$loopback" = "1" ] ; then
|
|
|
|
setsid java -Xmx512M -jar PacSatGround.jar "/home/pi/PacSatGroundLoop" # removed &
|
|
|
|
else
|
|
|
|
setsid java -Xmx512M -jar PacSatGround.jar "/home/pi/PacSatGround" # removed &
|
|
|
|
fi
|
|
|
|
sleep 10
|
|
|
|
#echo "Stopping Pacsatsim"
|
|
|
|
#$SHELL
|
|
|
|
|
|
|