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.
833 lines
24 KiB
833 lines
24 KiB
#!/bin/bash
|
|
|
|
FLAG=0
|
|
checkout=0
|
|
BULLSEYE=0
|
|
UPDATE=0
|
|
|
|
FILE=/home/pi/CubeSatSim/cubesatsim # code has already been compiled
|
|
if [ -f "$FILE" ]; then
|
|
|
|
UPDATE=1
|
|
|
|
echo -e "\nUpdate script for CubeSatSim v2.2\n"
|
|
|
|
if [ -z "$1" ] ; then
|
|
checkout=0
|
|
else
|
|
checkout=1
|
|
branch="$1"
|
|
echo -n "changing to branch "
|
|
echo $branch
|
|
FLAG=1
|
|
fi
|
|
|
|
if [ "$2" = "n" ] ; then
|
|
noreboot=1
|
|
else
|
|
noreboot=0
|
|
fi
|
|
|
|
else
|
|
|
|
echo -e "\nInstallation script for CubeSatSim v2.2\n"
|
|
|
|
touch /home/pi/CubeSatSim/command_control_direwolf
|
|
|
|
echo "creating $FILE"
|
|
echo "AMSAT 0 0 0 no 3 434.9 435 no 0 0 no 60" > /home/pi/CubeSatSim/sim.cfg
|
|
|
|
/home/pi/CubeSatSim/config -c -n
|
|
|
|
/home/pi/CubeSatSim/config -l -n
|
|
|
|
fi
|
|
|
|
if [[ $(grep '11.' /etc/debian_version) ]]; then
|
|
|
|
BULLSEYE=1
|
|
|
|
echo "Debian 11 (Bullseye) detected"
|
|
|
|
sudo cp /boot/config.txt /boot/config.txt.0
|
|
|
|
sudo cp /boot/cmdline.txt /boot/cmdline.txt.0
|
|
|
|
sudo raspi-config nonint do_i2c 0
|
|
|
|
sudo raspi-config nonint do_camera 0
|
|
|
|
sudo raspi-config nonint do_legacy 0
|
|
|
|
sudo sed -i 's/console=serial0,115200 //g' /boot/cmdline.txt
|
|
|
|
# sudo sed -i 's/console=tty1 r/console=tty1 maxcpus=1 r/g' /boot/cmdline.txt # single core if Pi Zero 2
|
|
sudo sed -i 's/console=tty1 maxcpus=1 r/console=tty1 r/g' /boot/cmdline.txt
|
|
|
|
# sudo sed -i 's/maxcpus=2/maxcpus=1/g' /boot/cmdline.txt # single core if Pi Zero 2
|
|
|
|
sudo sed -i 's/#dtparam=i2c_arm=on/dtparam=i2c_arm=on/g' /boot/config.txt
|
|
|
|
if [[ $(grep 'dtoverlay=i2c-gpio,bus=3,i2c_gpio_delay_us=1,i2c_gpio_sda=23,i2c_gpio_scl=24' /boot/config.txt) ]]; then
|
|
echo "dtoverlay=i2c-gpio already in /boot/config.txt"
|
|
else
|
|
echo "adding dtoverlay=i2c-gpio to /boot/config.txt"
|
|
sudo sh -c 'echo "\ndtoverlay=i2c-gpio,bus=3,i2c_gpio_delay_us=1,i2c_gpio_sda=23,i2c_gpio_scl=24" >> /boot/config.txt'
|
|
fi
|
|
|
|
if [[ $(grep 'enable_uart=1' /boot/config.txt) ]]; then
|
|
echo "enable_uart=1 already in /boot/config.txt"
|
|
else
|
|
echo "adding enable_uart=1 to /boot/config.txt"
|
|
sudo sh -c 'echo "\nenable_uart=1" >> /boot/config.txt'
|
|
fi
|
|
|
|
if [[ $(grep 'dtoverlay=disable-bt' /boot/config.txt) ]]; then
|
|
echo "dtoverlay=disable-bt already in /boot/config.txt"
|
|
else
|
|
echo "adding dtoverlay=disable-bt to /boot/config.txt"
|
|
sudo sh -c 'echo "\ndtoverlay=disable-bt" >> /boot/config.txt'
|
|
fi
|
|
|
|
if [[ $(grep 'dtoverlay=dwc2' /boot/config.txt) ]]; then
|
|
echo "dtoverlay=dwc2 aalready in /boot/config.txt"
|
|
else
|
|
echo "adding dtoverlay=dwc2 to /boot/config.txt"
|
|
sudo sh -c 'echo "\ndtoverlay=dwc2" >> /boot/config.txt'
|
|
fi
|
|
|
|
if [[ $(grep 'modules-load=dwc2,g_ether' /boot/cmdline.txt) ]]; then
|
|
echo "modules-load=dwc2,g_ether already in /boot/cmdline.txt"
|
|
else
|
|
echo "adding modules-load=dwc2,g_ether to /boot/cmdline.txt"
|
|
sudo sed -i 's/ rootwait/ rootwait modules-load=dwc2,g_ether/g' /boot/cmdline.txt
|
|
fi
|
|
|
|
if [[ $(grep 'dtparam=audio=on' /boot/config.txt) ]]; then
|
|
echo "dtparam=audio=on already in /boot/config.txt"
|
|
else
|
|
echo "adding dtparam=audio=on to /boot/config.txt"
|
|
sudo sh -c 'echo "\ndtparam=audio=on" >> /boot/config.txt'
|
|
fi
|
|
|
|
if [[ $(grep 'dtoverlay=audremap,enable_jack=on' /boot/config.txt) ]]; then
|
|
echo "dtoverlay=audremap,enable_jack=on already in /boot/config.txt"
|
|
else
|
|
echo "adding dtoverlay=audremap,enable_jack=on to /boot/config.txt"
|
|
sudo sh -c 'echo "\ndtoverlay=audremap,enable_jack=on" >> /boot/config.txt'
|
|
fi
|
|
|
|
if [[ $(grep 'dtoverlay=pwm,pin=18,func=2' /boot/config.txt) ]]; then
|
|
echo "dtoverlay=pwm,pin=18,func=2 already in /boot/config.txt"
|
|
else
|
|
echo "adding overlay=pwm,pin=18,func=2 to /boot/config.txt"
|
|
sudo sh -c 'echo "\ndtoverlay=pwm,pin=18,func=2" >> /boot/config.txt'
|
|
fi
|
|
|
|
if [[ $(grep 'disable_splash=1' /boot/config.txt) ]]; then
|
|
echo "disable_splash=1 already in /boot/config.txt"
|
|
else
|
|
echo "adding disable_splash=1 to /boot/config.txt"
|
|
sudo sh -c 'echo "\ndisable_splash=1" >> /boot/config.txt'
|
|
fi
|
|
|
|
if [[ $(grep 'boot_delay=0' /boot/config.txt) ]]; then
|
|
echo "boot_delay=0 already in /boot/config.txt"
|
|
else
|
|
echo "adding boot_delay=0 to /boot/config.txt"
|
|
sudo sh -c 'echo "\nboot_delay=0" >> /boot/config.txt'
|
|
fi
|
|
|
|
if ! grep -q force_turbo=1 /boot/config.txt ; then sudo sh -c 'echo "force_turbo=1" >> /boot/config.txt'; fi
|
|
|
|
sudo sh -c 'echo "\n" >> /boot/config.txt'
|
|
fi
|
|
|
|
if [[ $(grep 'bookworm' /etc/os-release) ]]; then
|
|
|
|
echo "Debian 12 (Bookworm) detected"
|
|
|
|
sudo cp /boot/firmware/config.txt /boot/firmware/config.txt.0
|
|
|
|
sudo cp /boot/firmware/cmdline.txt /boot/firmware/cmdline.txt.0
|
|
|
|
sudo raspi-config nonint do_i2c 0
|
|
|
|
sudo raspi-config nonint do_camera 0
|
|
|
|
sudo raspi-config nonint do_legacy 0
|
|
|
|
sudo sed -i 's/console=serial0,115200 //g' /boot/firmware/cmdline.txt
|
|
|
|
# sudo sed -i 's/console=tty1 r/console=tty1 maxcpus=1 r/g' /boot/firmware/cmdline.txt # single core if Pi Zero 2
|
|
sudo sed -i 's/console=tty1 maxcpus=1 r/console=tty1 r/g' /boot/firmware/cmdline.txt
|
|
|
|
|
|
# sudo sed -i 's/maxcpus=2/maxcpus=1/g' /boot/firmware/cmdline.txt # single core if Pi Zero 2
|
|
|
|
sudo sed -i 's/#dtparam=i2c_arm=on/dtparam=i2c_arm=on/g' /boot/firmware/config.txt
|
|
|
|
if [[ $(grep 'dtoverlay=i2c-gpio,bus=3,i2c_gpio_delay_us=1,i2c_gpio_sda=23,i2c_gpio_scl=24' /boot/firmware/config.txt) ]]; then
|
|
echo "dtoverlay=i2c-gpio already in /boot/firmware/config.txt"
|
|
else
|
|
echo "adding dtoverlay=i2c-gpio to /boot/firmware/config.txt"
|
|
sudo sh -c 'echo "\ndtoverlay=i2c-gpio,bus=3,i2c_gpio_delay_us=1,i2c_gpio_sda=23,i2c_gpio_scl=24" >> /boot/firmware/config.txt'
|
|
fi
|
|
|
|
if [[ $(grep 'enable_uart=1' /boot/firmware/config.txt) ]]; then
|
|
echo "enable_uart=1 already in /boot/firmware/config.txt"
|
|
else
|
|
echo "adding enable_uart=1 to /boot/firmware/config.txt"
|
|
sudo sh -c 'echo "\nenable_uart=1" >> /boot/firmware/config.txt'
|
|
fi
|
|
|
|
if [[ $(grep 'dtoverlay=disable-bt' /boot/firmware/config.txt) ]]; then
|
|
echo "dtoverlay=disable-bt already in /boot/firmware/config.txt"
|
|
else
|
|
echo "adding dtoverlay=disable-bt to /boot/firmware/config.txt"
|
|
sudo sh -c 'echo "\ndtoverlay=disable-bt" >> /boot/firmware/config.txt'
|
|
fi
|
|
|
|
if [[ $(grep 'dtoverlay=dwc2' /boot/firmware/config.txt) ]]; then
|
|
echo "dtoverlay=dwc2 aalready in /boot/firmware/config.txt"
|
|
else
|
|
echo "adding dtoverlay=dwc2 to /boot/firmware/config.txt"
|
|
sudo sh -c 'echo "\ndtoverlay=dwc2" >> /boot/firmware/config.txt'
|
|
fi
|
|
|
|
if [[ $(grep 'modules-load=dwc2,g_ether' /boot/firmware/cmdline.txt) ]]; then
|
|
echo "modules-load=dwc2,g_ether already in /boot/firmware/cmdline.txt"
|
|
else
|
|
echo "adding modules-load=dwc2,g_ether to /boot/firmware/cmdline.txt"
|
|
sudo sed -i 's/ rootwait/ rootwait modules-load=dwc2,g_ether/g' /boot/firmware/cmdline.txt
|
|
fi
|
|
|
|
if [[ $(grep 'dtparam=audio=on' /boot/firmware/config.txt) ]]; then
|
|
echo "dtparam=audio=on already in /boot/firmware/config.txt"
|
|
else
|
|
echo "adding dtparam=audio=on to /boot/firmware/config.txt"
|
|
sudo sh -c 'echo "\ndtparam=audio=on" >> /boot/firmware/config.txt'
|
|
fi
|
|
|
|
if [[ $(grep 'dtoverlay=audremap,enable_jack=on' /boot/firmware/config.txt) ]]; then
|
|
echo "dtoverlay=audremap,enable_jack=on already in /boot/firmware/config.txt"
|
|
else
|
|
echo "adding dtoverlay=audremap,enable_jack=on to /boot/firmware/config.txt"
|
|
sudo sh -c 'echo "\ndtoverlay=audremap,enable_jack=on" >> /boot/firmware/config.txt'
|
|
fi
|
|
|
|
if [[ $(grep 'dtoverlay=pwm,pin=18,func=2' /boot/firmware/config.txt) ]]; then
|
|
echo "dtoverlay=pwm,pin=18,func=2 already in /boot/firmware/config.txt"
|
|
else
|
|
echo "adding to /boot/firmware/config.txt"
|
|
sudo sh -c 'echo "\ndtoverlay=pwm,pin=18,func=2" >> /boot/firmware/config.txt'
|
|
fi
|
|
|
|
if [[ $(grep 'disable_splash=1' /boot/firmware/config.txt) ]]; then
|
|
echo "disable_splash=1 already in /boot/firmware/config.txt"
|
|
else
|
|
echo "adding disable_splash=1 to /boot/firmware/config.txt"
|
|
sudo sh -c 'echo "\ndisable_splash=1" >> /boot/firmware/config.txt'
|
|
fi
|
|
|
|
if [[ $(grep 'boot_delay=0' /boot/firmware/config.txt) ]]; then
|
|
echo "boot_delay=0 already in /boot/firmware/config.txt"
|
|
else
|
|
echo "adding boot_delay=0 to /boot/firmware/config.txt"
|
|
sudo sh -c 'echo "\nboot_delay=0" >> /boot/firmware/config.txt'
|
|
fi
|
|
|
|
if [[ $(grep 'camera_auto_detect=1' /boot/firmware/config.txt) ]]; then
|
|
echo "camera_auto_detect=1 already in /boot/firmware/config.txt"
|
|
else
|
|
echo "adding camera_auto_detect=1 to /boot/firmware/config.txt"
|
|
sudo sh -c 'echo "\ncamera_auto_detect=1" >> /boot/firmware/config.txt'
|
|
fi
|
|
|
|
if ! grep -q force_turbo=1 /boot/firmware/config.txt ; then sudo sh -c 'echo "force_turbo=1" >> /boot/firmware/config.txt'; fi
|
|
|
|
sudo sh -c 'echo "\n" >> /boot/firmware/config.txt'
|
|
|
|
elif [[ $(grep 'trixie' /etc/os-release) ]]; then
|
|
|
|
echo "Trixie detected, installation continuing."
|
|
echo "Your Pi OS version is not Bookworm or Bullseye."
|
|
echo "The software installation will likely not work."
|
|
echo "See the README.md for how to install using Bookworm."
|
|
echo
|
|
|
|
echo "Are you sure you want to continue the installation (y/n)?"
|
|
|
|
read -r ANS
|
|
|
|
if [ "$ANS" = "n" ]; then
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
FILE=/home/pi/CubeSatSim/sim.cfg
|
|
if [ -f "$FILE" ]; then
|
|
echo "$FILE exists."
|
|
|
|
changed=0
|
|
value=`cat /home/pi/CubeSatSim/sim.cfg`
|
|
# echo "$value"
|
|
echo "$value" > /dev/null
|
|
set -- $value
|
|
|
|
if [ -z "$1" ] ; then n1="AMSAT" ; changed=1 ; else n1=$1 ; fi # callsign
|
|
if [ -z "$2" ] ; then n2="0" ; changed=1 ; else n2=$2 ; fi # reset count
|
|
if [ -z "$3" ] ; then n3="0" ; changed=1 ; else n3=$3 ; fi # lat
|
|
if [ -z "$4" ] ; then n4="0" ; changed=1 ; else n4=$4 ; fi # lon
|
|
if [ -z "$5" ] ; then n5="no" ; changed=1 ; else n5=$5 ; fi # sim mode
|
|
if [ -z "$6" ] ; then n6="3" ; changed=1 ; else n6=$6 ; fi # squelch
|
|
if [ -z "$7" ] ; then n7="434.9000" ; changed=1 ; else n7=$7 ; fi # transmit frequency
|
|
if [ -z "$8" ] ; then n8="435.0000" ; changed=1 ; else n8=$8 ; fi # receive frequency
|
|
if [ -z "$9" ] ; then n9="no" ; changed=1 ; else n9=$9 ; fi # hab mode
|
|
if [ -z "${10}" ] ; then m1="0" ; changed=1 ; else m1=${10} ; fi # rx pl code
|
|
if [ -z "${11}" ] ; then m2="0" ; changed=1 ; else m2=${11} ; fi # tx pl code
|
|
if [ -z "${12}" ] ; then m3="no" ; changed=1 ; else m3=${12} ; fi # random fail
|
|
if [ -z "${13}" ] ; then m4="60" ; changed=1 ; else m4=${13} ; fi # random fail period
|
|
|
|
if [ $changed -eq 1 ]; then
|
|
echo -e "Current sim.cfg configuration file:"
|
|
echo
|
|
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13}
|
|
echo -e "\nCubeSatSim configuration sim.cfg file updated to: \n"
|
|
echo
|
|
echo $n1 $n2 $n3 $n4 $n5 $n6 $n7 $n8 $n9 $m1 $m2 $m3 $m4
|
|
echo $n1 $n2 $n3 $n4 $n5 $n6 $n7 $n8 $n9 $m1 $m2 $m3 $m4> /home/pi/CubeSatSim/sim.cfg
|
|
echo
|
|
fi
|
|
|
|
else
|
|
echo "creating $FILE"
|
|
echo "AMSAT 0 0 0 no 3 434.9 435 no 0 0 no 60" > /home/pi/CubeSatSim/sim.cfg
|
|
fi
|
|
|
|
if [[ $(grep 'cubesatsim' /etc/motd) ]]; then
|
|
echo "motd already updated"
|
|
else
|
|
echo "updating motd"
|
|
sudo sh -c 'cat /home/pi/CubeSatSim/motd.txt >> /etc/motd'
|
|
fi
|
|
|
|
FILE=/home/pi/CubeSatSim/command_tx
|
|
if [ -f "$FILE" ]; then
|
|
echo "$FILE exists."
|
|
else
|
|
echo "creating $FILE"
|
|
echo "True\n" > /home/pi/CubeSatSim/command_tx
|
|
fi
|
|
|
|
FILE=/home/pi/CubeSatSim/command_count.txt
|
|
if [ -f "$FILE" ]; then
|
|
echo "$FILE exists."
|
|
else
|
|
echo "creating $FILE"
|
|
echo "0\n" > /home/pi/CubeSatSim/command_count.txt
|
|
fi
|
|
|
|
sudo apt-get update && sudo apt-get dist-upgrade -y
|
|
|
|
# if [ $BULLSEYE -eq 1 ]; then
|
|
# sudo apt purge -y python3-pip
|
|
# sudo apt install -y python3-pip
|
|
# fi
|
|
|
|
cp /home/pi/CubeSatSim/groundstation/pacsat.desktop /home/pi/Desktop/pacsat.desktop
|
|
|
|
if [ ! -d "/home/pi/venv" ]; then
|
|
|
|
cd
|
|
sudo apt install -y python3-venv
|
|
sudo python3 -m venv venv
|
|
source /home/pi/venv/bin/activate
|
|
|
|
curl https://bootstrap.pypa.io/get-pip.py | sudo /home/pi/venv/bin/python3
|
|
|
|
sudo /home/pi/venv/bin/pip3 install adafruit_extended_bus
|
|
sudo /home/pi/venv/bin/pip3 install adafruit-circuitpython-ina219
|
|
|
|
fi
|
|
|
|
sudo apt-get remove pulseaudio -y
|
|
|
|
sudo apt-get install -y gcc g++ make cmake libasound2-dev libudev-dev libavahi-client-dev libgpiod-dev raspi-config
|
|
|
|
# removed wiringpi and python-picamera python3-picamera
|
|
sudo apt-get install -y git libasound2-dev i2c-tools build-essential libgd-dev libmagic-dev minicom
|
|
|
|
if [ -d "/home/pi/direwolf" ]; then
|
|
|
|
# Get the URL of the 'origin' remote
|
|
REPO_URL=$(git config --get remote.origin.url)
|
|
|
|
# Check if the command was successful and a URL was retrieved
|
|
if [ $? -eq 0 ] && [ -n "$REPO_URL" ]; then
|
|
|
|
if [ ! "$REPO_URL" = "https://github.com/wb2osz/direwolf.git" ]; then
|
|
|
|
echo "Current Direwolf git repository URL is $REPO_URL"
|
|
echo "Reinstalling Direwolf from https://github.com/wb2osz/direwolf.git"
|
|
sudo rm -r /home/pi/direwolf
|
|
fi
|
|
else
|
|
echo "Could not find the URL for the 'origin' remote for Direwolf"
|
|
fi
|
|
fi
|
|
|
|
if [ ! -d "/home/pi/direwolf" ]; then
|
|
|
|
cd
|
|
git clone https://github.com/wb2osz/direwolf.git
|
|
cd direwolf
|
|
mkdir build
|
|
cd build
|
|
cmake ..
|
|
make -j4
|
|
sudo make install
|
|
make install-conf
|
|
|
|
fi
|
|
|
|
sudo apt-get install -y gpsd gpsd-clients libgps-dev python3-gps
|
|
sudo systemctl disable gpsd
|
|
sudo systemctl disable gpsd.socket
|
|
|
|
if [ ! -d "/home/pi/WiringPi" ]; then
|
|
cd
|
|
git clone https://github.com/alanbjohnston/WiringPi
|
|
cd WiringPi
|
|
./build debian
|
|
sudo dpkg -i debian-template/wiringpi-2.61-1.deb
|
|
fi
|
|
|
|
cd
|
|
|
|
if [ ! $BULLSEYE -eq 1 ]; then
|
|
sudo apt install -y libtiff6
|
|
fi
|
|
|
|
sudo apt install -y python3-pip python3-smbus libjpeg-dev zlib1g-dev libfreetype6-dev libopenjp2-7 python3-pil python3-serial libusb-1.0-0 libusb-1.0-0-dev
|
|
|
|
if [ $BULLSEYE -eq 1 ] || [ $UPDATE -eq 0 ] ; then
|
|
|
|
sudo pip3 install --upgrade setuptools
|
|
|
|
sudo pip3 install adafruit-blinka RPI.GPIO adafruit-extended-bus adafruit-circuitpython-ina219
|
|
|
|
fi
|
|
|
|
cd /home/pi/CubeSatSim
|
|
|
|
git pull --no-rebase > .updated
|
|
|
|
if [ $checkout -eq 1 ]; then
|
|
git checkout $branch
|
|
git pull --no-rebase > .updated
|
|
FLAG=1
|
|
echo "Running update again"
|
|
/home/pi/CubeSatSim/install
|
|
exit
|
|
fi
|
|
|
|
grep 'install' /home/pi/CubeSatSim/.updated
|
|
if [[ $(grep 'install' /home/pi/CubeSatSim/.updated) ]]; then
|
|
echo "install script updated, running again"
|
|
/home/pi/CubeSatSim/install
|
|
exit
|
|
fi
|
|
|
|
make debug
|
|
|
|
FILE=/home/pi/CubeSatSim/.mode
|
|
if [ -f "$FILE" ]; then
|
|
echo "$FILE exists."
|
|
else
|
|
echo "creating $FILE"
|
|
echo "b" > .mode
|
|
fi
|
|
|
|
if [ ! -d "/home/pi/pi-power-button" ]; then
|
|
|
|
cd
|
|
git clone https://github.com/alanbjohnston/pi-power-button.git
|
|
cd pi-power-button
|
|
git checkout master
|
|
./script/install
|
|
sudo apt-get install -y libraspberrypi-dev
|
|
|
|
fi
|
|
|
|
cd /home/pi/pi-power-button
|
|
|
|
git pull --no-rebase > .updated_p
|
|
git checkout master
|
|
grep 'changed' /home/pi/pi-power-button/.updated_p
|
|
if [[ $(grep 'changed' /home/pi/pi-power-button/.updated_p) ]]; then
|
|
|
|
echo "updating pi-power-button."
|
|
script/install
|
|
FLAG=1
|
|
fi
|
|
|
|
cd
|
|
|
|
FILE=/home/pi/pi_pacsat/Debug/pi_pacsat # code has already been compiled
|
|
if [ ! -f "$FILE" ]; then
|
|
cd
|
|
git clone https://github.com/alanbjohnston/g0kla_common.git
|
|
cd g0kla_common/Debug/
|
|
make clean
|
|
make all
|
|
sudo ./install.sh
|
|
|
|
cd
|
|
#git clone https://github.com/alanbjohnston/pi_pacsat.git
|
|
git clone https://github.com/ac2cz/pi_pacsat.git
|
|
cd pi_pacsat
|
|
#git checkout master-debug
|
|
cd Debug
|
|
make clean
|
|
make all
|
|
|
|
mkdir /home/pi/PacSat
|
|
mkdir /home/pi/PacSat/pacsat
|
|
mkdir /home/pi/PacSat/pacsat/dir
|
|
|
|
export LD_LIBRARY_PATH=/mnt/usb-disk/ariss/lib:/usr/local/lib/iors_common:$LD_LIBRARY_PATH
|
|
|
|
#value=`cat /home/pi/CubeSatSim/sim.cfg`
|
|
#echo "$value" > /dev/null
|
|
#set -- $value
|
|
|
|
echo "bit_rate=9600" > pacsat.config
|
|
echo "bbs_callsign=AMSAT-12" >> pacsat.config
|
|
echo "broadcast_callsign=AMSAT-11" >> pacsat.config
|
|
echo "digi_callsign=AMSAT-1" >> pacsat.config
|
|
echo "max_frames_in_tx_buffer=5" >> pacsat.config
|
|
|
|
echo "pb_open=1" > pacsat.state
|
|
echo "uplink_open=1" >> pacsat.state
|
|
echo "pb_max_period_for_client_in_seconds=60" >> pacsat.state
|
|
echo "uplink_max_period_for_client_in_seconds=60" >> pacsat.state
|
|
fi
|
|
|
|
cd /home/pi/pi_pacsat/Debug/
|
|
|
|
git pull --no-rebase > .updated
|
|
grep 'changed' /home/pi/pi_pacsat/Debug/.updated
|
|
if [[ $(grep 'changed' /home/pi/pi_pacsat/Debug/.updated) ]]; then
|
|
|
|
echo "updating pi_pacsat"
|
|
make clean
|
|
make all
|
|
FLAG=1
|
|
fi
|
|
|
|
FILE=/home/pi/pacsat_telem/Debug/pacsat_telem # code has already been compiled
|
|
if [ ! -f "$FILE" ]; then
|
|
cd
|
|
sudo apt-get install -y libbsd-dev
|
|
git clone https://github.com/alanbjohnston/pacsat_telem.git
|
|
cd pacsat_telem
|
|
git checkout master-fox
|
|
cd Debug
|
|
make clean
|
|
make all
|
|
fi
|
|
|
|
cd /home/pi/pacsat_telem/Debug/
|
|
|
|
git pull --no-rebase > .updated
|
|
# git checkout master-fox
|
|
grep 'changed' /home/pi/pacsat_telem/Debug/.updated
|
|
if [[ $(grep 'changed' /home/pi/pacsat_telem/Debug/.updated) ]]; then
|
|
|
|
echo "updating pacsat_telem"
|
|
make clean
|
|
make all
|
|
FLAG=1
|
|
fi
|
|
|
|
sudo sed -i 's/#hdmi_group=1/hdmi_group=2/g' /boot/config.txt
|
|
sudo sed -i 's/#hdmi_mode=1/hdmi_mode=16/g' /boot/config.txt
|
|
sudo sed -i 's/#hdmi_force_hotplug=1/hdmi_force_hotplug=1/g' /boot/config.txt
|
|
|
|
sudo raspi-config nonint do_vnc 0
|
|
|
|
cd /tmp
|
|
|
|
wget https://www.g0kla.com/pacsat/downloads/test/PacsatGround_unix_0_46o.tar.gz
|
|
|
|
tar -xzf PacsatGround_unix_0_46o.tar.gz -C /home/pi/Desktop
|
|
|
|
rm PacsatGround_unix_0_46o.tar.gz
|
|
|
|
cp /home/pi/CubeSatSim/spacecraft/PacSatGround_0.46o/* /home/pi/Desktop/PacsatGround/spacecraft/
|
|
|
|
mkdir /home/pi/PacSatGround
|
|
|
|
sudo usermod -a -G gpio pi
|
|
|
|
sudo apt-get install default-jdk -y
|
|
|
|
cd
|
|
|
|
if [ ! -d "/home/pi/PiSSTVpp" ]; then
|
|
|
|
sudo apt-get update -y
|
|
sudo apt-get install -y python-picamera python3-picamera build-essential libgd-dev libmagic-dev
|
|
cd
|
|
git clone https://github.com/alanbjohnston/PiSSTVpp.git
|
|
cd PiSSTVpp
|
|
make pisstvpp
|
|
|
|
fi
|
|
|
|
if [ ! -d "/home/pi/rpitx" ]; then
|
|
|
|
cd
|
|
git clone https://github.com/alanbjohnston/rpitx.git
|
|
cd rpitx
|
|
./install.sh
|
|
cd
|
|
else
|
|
|
|
if [[ $(grep 'SYNCWITHPWM' /home/pi/rpitx/src/librpitx/src/fskburst.h) ]]; then
|
|
echo "rpitx library already updated"
|
|
else
|
|
echo "updating rpitx"
|
|
cd /home/pi/rpitx
|
|
git pull
|
|
./update.sh
|
|
cd
|
|
fi
|
|
fi
|
|
|
|
FILE=/etc/systemd/system/cubesatsim.service
|
|
if [ -f "$FILE" ]; then
|
|
if [[ $(diff /home/pi/CubeSatSim/systemd/cubesatsim.service /etc/systemd/system/cubesatsim.service) ]]; then
|
|
echo "changed cubesatsim.service."
|
|
sudo cp /home/pi/CubeSatSim/systemd/cubesatsim.service /etc/systemd/system/cubesatsim.service
|
|
FLAG=1
|
|
else
|
|
echo "no changes to cubesatsim.service."
|
|
fi
|
|
else
|
|
echo "creating cubesatsim.service."
|
|
sudo cp /home/pi/CubeSatSim/systemd/cubesatsim.service /etc/systemd/system/cubesatsim.service
|
|
sudo systemctl enable cubesatsim
|
|
|
|
FLAG=1
|
|
fi
|
|
|
|
FILE=/etc/systemd/system/rpitx.service
|
|
if [ -f "$FILE" ]; then
|
|
sudo systemctl disable rpitx
|
|
sudo rm /etc/systemd/system/rpitx.service
|
|
fi
|
|
|
|
FILE=/etc/systemd/system/transmit.service
|
|
if [ -f "$FILE" ]; then
|
|
if [[ $(diff /home/pi/CubeSatSim/systemd/transmit.service /etc/systemd/system/transmit.service) ]]; then
|
|
echo "changed transmit.service."
|
|
sudo cp /home/pi/CubeSatSim/systemd/transmit.service /etc/systemd/system/transmit.service
|
|
FLAG=1
|
|
else
|
|
echo "no change to transmit.service."
|
|
fi
|
|
else
|
|
echo "creating transmit.service."
|
|
sudo cp /home/pi/CubeSatSim/systemd/transmit.service /etc/systemd/system/transmit.service
|
|
FLAG=1
|
|
fi
|
|
|
|
FILE=/etc/systemd/system/command.service
|
|
if [ -f "$FILE" ]; then
|
|
if [[ $(diff /home/pi/CubeSatSim/systemd/command.service /etc/systemd/system/command.service) ]]; then
|
|
echo "changed command.service."
|
|
sudo cp /home/pi/CubeSatSim/systemd/command.service /etc/systemd/system/command.service
|
|
FLAG=1
|
|
else
|
|
echo "no change to command.service."
|
|
fi
|
|
else
|
|
echo "creating command.service."
|
|
sudo cp /home/pi/CubeSatSim/systemd/command.service /etc/systemd/system/command.service
|
|
sudo systemctl enable command
|
|
FLAG=1
|
|
fi
|
|
|
|
FILE=/etc/systemd/system/pacsatsim.service
|
|
if [ -f "$FILE" ]; then
|
|
if [[ $(diff /home/pi/CubeSatSim/systemd/pacsatsim.service /etc/systemd/system/pacsatsim.service) ]]; then
|
|
echo "changed pacsatsim.service."
|
|
sudo cp /home/pi/CubeSatSim/systemd/pacsatsim.service /etc/systemd/system/pacsatsim.service
|
|
FLAG=1
|
|
else
|
|
echo "no change to pacsatsim.service."
|
|
fi
|
|
else
|
|
echo "creating pacsatsim.service."
|
|
sudo cp /home/pi/CubeSatSim/systemd/pacsatsim.service /etc/systemd/system/pacsatsim.service
|
|
sudo systemctl enable command
|
|
FLAG=1
|
|
fi
|
|
|
|
FILE=/etc/asound.conf
|
|
if [ -f "$FILE" ]; then
|
|
if [[ $(diff /home/pi/CubeSatSim/asound.conf /etc/asound.conf) ]]; then
|
|
echo "changed /etc/asound.conf."
|
|
sudo cp /home/pi/CubeSatSim/asound.conf /etc/asound.conf
|
|
FLAG=1
|
|
else
|
|
echo "no change to /etc/asound.conf."
|
|
fi
|
|
else
|
|
echo "creating /etc/asound.conf."
|
|
sudo cp /home/pi/CubeSatSim/asound.conf /etc/asound.conf
|
|
FLAG=1
|
|
fi
|
|
|
|
FILE=/home/pi/CubeSatSim/sstv_image_1_320_x_256.jpg
|
|
if [ ! -f "$FILE" ]; then
|
|
echo "Copying SSTV image 1."
|
|
cp /home/pi/CubeSatSim/sstv/sstv_image_1_320_x_256.jpg /home/pi/CubeSatSim/sstv_image_1_320_x_256.jpg
|
|
fi
|
|
|
|
FILE=/home/pi/CubeSatSim/sstv_image_2_320_x_256.jpg
|
|
if [ ! -f "$FILE" ]; then
|
|
echo "Copying SSTV image 2."
|
|
cp /home/pi/CubeSatSim/sstv/sstv_image_2_320_x_256.jpg /home/pi/CubeSatSim/sstv_image_2_320_x_256.jpg
|
|
fi
|
|
|
|
sudo sed -i 's/DEVICES=""/DEVICES="\/dev\/serial0"/g' /etc/default/gpsd
|
|
|
|
sudo sed -i 's/GPSD_OPTIONS=""/GPSD_OPTIONS="-s 9600"/g' /etc/default/gpsd
|
|
|
|
if [ ! -d "/home/pi/fctelem" ]; then
|
|
echo "Installing fctelem binary v0.2 for FUNcube mode"
|
|
cd
|
|
mkdir /home/pi/fctelem
|
|
mkdir /home/pi/fctelem/public_html
|
|
cd fctelem
|
|
wget https://github.com/alanbjohnston/go/releases/download/v0.2/fctelem.zip
|
|
unzip -u fctelem.zip
|
|
FLAG=1
|
|
elif [ ! -f "/home/pi/fctelem/v0.2" ]; then
|
|
echo "Updating fctelem binary to version v0.2 for FUNcube mode"
|
|
cd
|
|
cd /home/pi/fctelem
|
|
sudo mv fctelem fctelem.bk
|
|
sudo mv fcdecode.conf fcdecode.conf.bk
|
|
sudo mv fctelem.zip fctelem.zip.1
|
|
wget https://github.com/alanbjohnston/go/releases/download/v0.2/fctelem.zip
|
|
unzip -u fctelem.zip
|
|
FLAG=1
|
|
fi
|
|
|
|
if [ ! -f "/home/pi/MPU6050-C-CPP-Library-for-Raspberry-Pi/mpu6050" ]; then
|
|
echo "Installing MPU6050-C-CPP-Library-for-Raspberry-Pi"
|
|
sudo apt-get install -y libi2c-dev
|
|
cd
|
|
git clone https://github.com/alanbjohnston/MPU6050-C-CPP-Library-for-Raspberry-Pi.git
|
|
cd MPU6050-C-CPP-Library-for-Raspberry-Pi
|
|
sudo make install
|
|
make payload
|
|
fi
|
|
|
|
cd /home/pi/MPU6050-C-CPP-Library-for-Raspberry-Pi
|
|
git checkout master
|
|
git pull --no-rebase > .updated_p
|
|
|
|
if [[ $(grep 'changed' /home/pi/MPU6050-C-CPP-Library-for-Raspberry-Pi/.updated_p) ]]; then
|
|
echo "updating MPU6050-C-CPP-Library-for-Raspberry-Pi"
|
|
sudo make install
|
|
make payload
|
|
else
|
|
echo "nothing to do for MPU6050-C-CPP-Library-for-Raspberry-Pi."
|
|
fi
|
|
|
|
if [ ! -f "/home/pi/raspberry-pi-bme280/bme280" ]; then
|
|
echo "Installing raspberry-pi-bme280"
|
|
sudo apt-get install -y libi2c-dev
|
|
cd
|
|
git clone https://github.com/alanbjohnston/raspberry-pi-bme280.git
|
|
cd raspberry-pi-bme280
|
|
git checkout payload
|
|
make
|
|
fi
|
|
|
|
cd /home/pi/raspberry-pi-bme280
|
|
git checkout payload
|
|
git pull --no-rebase > .updated_p
|
|
|
|
if [[ $(grep 'changed' /home/pi/raspberry-pi-bme280/.updated_p) ]]; then
|
|
|
|
echo "updating raspberry-pi-bme280"
|
|
make
|
|
|
|
else
|
|
echo "nothing to do for raspberry-pi-bme280."
|
|
fi
|
|
|
|
if [ ! -f "/home/pi/fcdctl/fcdctl" ]; then
|
|
echo "Installing fcdctl to set FUNcubeDongle Pro gain"
|
|
sudo rm /var/lib/dpkg/info/python3-pip.list
|
|
sudo apt install python3-pip --reinstall
|
|
sudo apt-get install -y python3-smbus libusb-1.0
|
|
cd
|
|
git clone https://github.com/csete/fcdctl.git
|
|
cd fcdctl
|
|
make fcdpp
|
|
fi
|
|
|
|
if [ ! -f "/home/pi/ssdv/ssdv" ]; then
|
|
cd
|
|
echo "Installing SSDV for FUNcube mode"
|
|
git clone https://github.com/alanbjohnston/ssdv.git # install ssdv for FUNcube images
|
|
cd ssdv
|
|
make
|
|
fi
|
|
|
|
cd
|
|
|
|
#echo "Would you like to reboot to complete the installation (y/n)?"
|
|
|
|
#read -r ANS
|
|
|
|
#if [ "$ANS" = "y" ]; then
|
|
|
|
# sudo reboot now
|
|
|
|
#else
|
|
|
|
# echo "The CubeSatSim software will start next time you reboot"
|
|
|
|
#fi
|
|
|
|
if [ "$noreboot" = "0" ] ; then
|
|
|
|
if [ $FLAG -eq 1 ]; then # Not sure if this is needed
|
|
echo "systemctl daemon-reload and reboot"
|
|
sudo systemctl daemon-reload
|
|
sudo reboot -h now
|
|
# sudo cubesatsim
|
|
else
|
|
grep 'changed' /home/pi/CubeSatSim/.updated
|
|
if [[ $(grep 'changed' /home/pi/CubeSatSim/.updated) ]]; then
|
|
echo "reboot due to code changes " | wall
|
|
sudo reboot -h now
|
|
# sudo cubesatsim
|
|
else
|
|
echo "nothing to do."
|
|
fi
|
|
fi
|
|
else
|
|
if [ $FLAG -eq 1 ]; then
|
|
echo "reboot needed for changes to take effect" | wall
|
|
fi
|
|
fi
|