#!/bin/bash echo -e "\ninstallation script for CubeSatSim v2.2\n" if [[ $(grep '11.' /etc/debian_version) ]]; then echo "Installing on Debian 11 (Bullseye)" else echo "The OS is not Debian 11 (Bullseye)!" echo "Installation is not likely to work." echo "It is recommended you start with" echo "Bullseye as your OS." echo sleep 10 fi FILE=/home/pi/CubeSatSim/sim.cfg if [ -f "$FILE" ]; then echo "$FILE exists." else echo "creating $FILE" echo "AMSAT 1 0.0 0.0" > /home/pi/CubeSatSim/sim.cfg 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 cd CubeSatSim/config -c -n CubeSatSim/config -l -n sudo apt-get update && sudo apt-get dist-upgrade -y sudo apt-get remove pulseaudio -y # removed wiringpi and python-picamera python3-picamera sudo apt-get install -y git libasound2-dev i2c-tools build-essential libgd-dev libmagic-dev minicom cd /tmp # wget https://project-downloads.drogon.net/wiringpi-latest.deb # sudo dpkg -i wiringpi-latest.deb cd git clone https://github.com/alanbjohnston/WiringPi cd WiringPi ./build debian sudo dpkg -i debian-template/wiringpi-2.61-1.deb cd #changed to python3-smbus sudo apt install -y python3-pip python3-smbus libjpeg-dev zlib1g-dev libfreetype6-dev libopenjp2-7 libtiff5 python3-pil python3-serial libusb-1.0 sudo pip3 install --upgrade setuptools sudo pip3 install adafruit-blinka RPI.GPIO adafruit-extended-bus adafruit-circuitpython-ina219 cd ~/CubeSatSim git pull --no-rebase make debug FILE=/home/pi/CubeSatSim/.mode if [ -f "$FILE" ]; then echo "$FILE exists." else echo "creating $FILE" echo "b" > .mode fi cd git clone https://github.com/alanbjohnston/direwolf.git cd direwolf make -j sudo make install make install-rpi cd git clone https://github.com/alanbjohnston/pi-power-button.git cd pi-power-button git checkout master ./script/install cd echo "Installing SSDV for FUNcube mode" git clone https://github.com/alanbjohnston/ssdv.git # install ssdv for FUNcube images cd ssdv make cd echo "Installing fctelem binary v0.2 for FUNcube mode" 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 fctelem.zip cd 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 git clone https://github.com/alanbjohnston/PiSSTVpp.git cd PiSSTVpp make pisstvpp 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 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 cd git clone https://github.com/alanbjohnston/rpitx.git cd rpitx ./install.sh cd sudo cp ~/CubeSatSim/systemd/cubesatsim.service /etc/systemd/system/cubesatsim.service sudo systemctl enable cubesatsim sudo cp ~/CubeSatSim/systemd/transmit.service /etc/systemd/system/transmit.service # sudo systemctl enable transmit sudo cp ~/CubeSatSim/systemd/command.service /etc/systemd/system/command.service sudo systemctl enable command sudo cp /home/pi/CubeSatSim/asound.conf /etc/asound.conf 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 #if [ "$1" = "u" ]; then #fi ## sudo sed -i 's/console=serial0,115200 //g' /boot/cmdline.txt 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/#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 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 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 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' changed=0 value=`cat /home/pi/CubeSatSim/sim.cfg` 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 n10="0" ; changed=1 ; else n10=${10} ; fi # rx pl code if [ -z "${11}" ] ; then n11="0" ; changed=1 ; else n11=${11} ; fi # tx pl code 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} echo -e "\nCubeSatSim configuraation sim.cfg file updated to: \n" echo echo $n1 $n2 $n3 $n4 $n5 $n6 $n7 $n8 $n9 $n10 $n11 echo $n1 $n2 $n3 $n4 $n5 $n6 $n7 $n8 $n9 $n10 $n11 > /home/pi/CubeSatSim/sim.cfg echo fi 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