Sixfab_PPP_Installer/ppp_install_jetson.sh
2022-06-12 07:29:28 -07:00

200 lines
5.7 KiB
Bash
Executable File

#!/bin/bash
# Created on July 12, 2019 by Saeed Johar (saeedjohar)
# Revised on November 19, 2020 by Yasin Kaya (selengalp)
source src/functions.sh
SIXFAB_PATH="/opt/sixfab"
PPP_PATH="/opt/sixfab/ppp_connection_manager"
# NEEDS TO BE CHANGED TO SIXFAB IF PULLED
REPO_PATH="https://raw.githubusercontent.com/bzt/Sixfab_PPP_Installer"
BRANCH=master
SOURCE_PATH="$REPO_PATH/$BRANCH/src"
SCRIPT_PATH="$REPO_PATH/$BRANCH/src/reconnect_scripts"
MANAGER_SCRIPT_NAME="jetson_ppp_connection_manager.sh"
SERVICE_NAME="jetson_ppp_connection_manager.service"
UDEV_RULE_NAME="20-usb-bus.rules"
YELLOW='\033[1;33m'
RED='\033[0;31m'
BLUE='\033[1;34m'
SET='\033[0m'
function colored_echo
{
COLOR=${2:-$YELLOW}
echo -e "$COLOR$1 ${SET}"
}
# Check Sixfab path
if [[ -e $SIXFAB_PATH ]]; then
colored_echo "Sixfab path already exist!" ${SET}
else
sudo mkdir $SIXFAB_PATH
colored_echo "Sixfab path is created." ${SET}
fi
# Check PPP path
if [[ -e $PPP_PATH ]]; then
colored_echo "PPP path already exist!" ${SET}
else
sudo mkdir $PPP_PATH
colored_echo "PPP path is created." ${SET}
fi
colored_echo "Please choose your Sixfab Shield/HAT:"
colored_echo "1: GSM/GPRS Shield"
colored_echo "2: 3G, 4G/LTE Base Shield"
colored_echo "3: Cellular IoT App Shield"
colored_echo "4: Cellular IoT HAT"
colored_echo "5: Tracker HAT"
colored_echo "6: 3G/4G Base HAT"
read shield_hat
case $shield_hat in
1) colored_echo "You chose GSM/GPRS Shield";;
2) colored_echo "You chose Base Shield";;
3) colored_echo "You chose CellularIoT Shield";;
4) colored_echo "You chose CellularIoT HAT";;
5) colored_echo "You chose Tracker HAT";;
6) colored_echo "You chose 3G/4G Base HAT";;
*) colored_echo "Wrong Selection, exiting" ${RED}; exit 1;
esac
colored_echo "Checking requiremments..."
colored_echo "Installing python3 if it is required..."
if ! [ -x "$(command -v python3)" ]; then
sudo apt-get install python3 -y >/dev/null
fi
colored_echo "Installing pip3 if it is required..."
if ! [ -x "$(command -v pip3)" ]; then
sudo apt-get install python3-pip -y >/dev/null
fi
colored_echo "Installing or upgrading atcom if it is required..."
pip3 install -U atcom && source ~/.profile
colored_echo "Downloading setup files..."
wget --no-check-certificate $SOURCE_PATH/chat-connect -O chat-connect
if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi
wget --no-check-certificate $SOURCE_PATH/chat-disconnect -O chat-disconnect
if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi
wget --no-check-certificate $SOURCE_PATH/provider -O provider
if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi
colored_echo "ppp installing"
apt-get install ppp -y
colored_echo "What is your carrier APN?"
read carrierapn
while [ 1 ]
do
colored_echo "Does your carrier need username and password? [Y/n]"
read usernpass
case $usernpass in
[Yy]* ) while [ 1 ]
do
colored_echo "Enter username"
read username
colored_echo "Enter password"
read password
sed -i "s/noauth/#noauth\nuser \"$username\"\npassword \"$password\"/" provider
break
done
break;;
[Nn]* ) break;;
*) colored_echo "Wrong Selection, Select among Y or n" ${RED};;
esac
done
colored_echo "What is your device communication PORT? (ttyS0/ttyUSB3/etc.)"
read devicename
mkdir -p /etc/chatscripts
mv chat-connect /etc/chatscripts/
mv chat-disconnect /etc/chatscripts/
mkdir -p /etc/ppp/peers
sed -i "s/#APN/$carrierapn/" provider
sed -i "s/#DEVICE/$devicename/" provider
mv provider /etc/ppp/peers/provider
chmod 600 /etc/ppp/*-secrets
if ! (grep -q 'sudo route' /etc/ppp/ip-up ); then
echo "sudo route add default ppp0" >> /etc/ppp/ip-up
fi
while [ 1 ]
do
colored_echo "Do you want to activate auto connect service at boot up? [Y/n]"
read auto_reconnect
colored_echo "You chose $auto_connect" ${GREEN}
case $auto_reconnect in
[Yy]* ) colored_echo "Copying setup file..."
wget --no-check-certificate $SOURCE_PATH/$SERVICE_NAME -O $SERVICE_NAME
if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi
wget --no-check-certificate $SOURCE_PATH/functions.sh -O functions.sh
if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi
wget --no-check-certificate $SOURCE_PATH/configs.sh -O configs.sh
if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi
wget --no-check-certificate $SOURCE_PATH/jetson_configure_modem.sh -O jetson_configure_modem.sh
if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi
wget --no-check-certificate $SOURCE_PATH/$MANAGER_SCRIPT_NAME -O $MANAGER_SCRIPT_NAME
if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi
wget --no-check-certificate $SOURCE_PATH/$UDEV_RULE_NAME -O $UDEV_RULE_NAME
if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi
# APN Configuration
sed -i "s/SIM_APN/$carrierapn/" jetson_configure_modem.sh
# Devicename
sed -i "s/DEVICE/$devicename/" jetson_configure_modem.sh
sed -i "s/DEVICE/$devicename/" functions.sh
mv functions.sh $PPP_PATH
mv configs.sh $PPP_PATH
mv jetson_configure_modem.sh $PPP_PATH
mv $MANAGER_SCRIPT_NAME $PPP_PATH
mv $SERVICE_NAME /etc/systemd/system/
mv $UDEV_RULE_NAME /etc/udev/rules.d/
systemctl daemon-reload
systemctl enable $SERVICE_NAME
break;;
[Nn]* ) echo -e "${YELLOW}To connect to internet run ${BLUE}\"sudo pon\"${YELLOW} and to disconnect run ${BLUE}\"sudo poff\" ${SET}"
break;;
*) colored_echo "Wrong Selection, Select among Y or n" ${RED};;
esac
done
read -p "Press ENTER key to reboot" ENTER
reboot