diff --git a/README.md b/README.md index a5fce33..b756b6b 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,24 @@ Each of these shield can be connected to Internet via PPP(Point to Point Protoco Without further ado let us jump into the installation process: +There are two method to installation. +1. Standalone installation +2. Installation by using repository + +You can choose one of them and go on the installation. + +## Standalone Installation + +All source files are downloded from internet in this method. It is enough to download **ppp_install_standalone.sh** and run it. + +``` +wget https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_install_standalone.sh +sudo chmod +x ppp_install_standalone.sh +sudo ./ppp_install_standalone.sh +``` + +## Installation by using repository + Clone the repository `git clone https://github.com/sixfab/Sixfab_PPP_Installer.git` @@ -26,14 +44,16 @@ Clone the repository Now change the permission of the downloaded script. ``` -cd Sixfab_PPP_Installer/ppp_installer -chmod +x install.sh +cd Sixfab_PPP_Installer +chmod +x ppp_install.sh ``` Now install the script -`sudo ./install.sh` - +`sudo ./ppp_install.sh` + + +## After running installation script It will ask several questions, just answer them accordingly to complete the installation process. The questions are: `Please choose your Sixfab Shield/HAT` @@ -43,7 +63,7 @@ Then it installs ppp.  `What is your carrier APN?` -Here, it asks for your carrier's APN. For me it is hologram. +Here, it asks for your carrier's APN. For me it is `super`. Because I use Sixfab SIM. Please search it on documentations of your SIM provider . You can reach the information by using `WHAT IS [YOUR PROVIDER NAME]'s APN` keywords probably. `Does your carrier need username and password? [Y/n]` @@ -55,11 +75,9 @@ If yes then it will ask for user name. `Enter password` Then it will ask for password. -Once you type the username asks for password. - `What is your device communication PORT? (ttyS0/ttyUSB3/etc.` -In this step you will enter your PORT. e.g For 3G, 4G/LTE Base Shield it will be ttyUSB3. +In this step you will enter your PORT. e.g For 3G, 4G/LTE Base Shield it will be ttyUSB3. `Do you want to activate auto connect/reconnect service at R.Pi boot up?` diff --git a/ppp_install.sh b/ppp_install.sh new file mode 100755 index 0000000..c9a2054 --- /dev/null +++ b/ppp_install.sh @@ -0,0 +1,305 @@ +#!/bin/bash + +# Created on November 27, 2020 by Yasin Kaya (selengalp) + +SIXFAB_PATH="/opt/sixfab" +PPP_PATH="/opt/sixfab/ppp_connection_manager" + +REPO_PATH="https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer" +BRANCH=master +SOURCE_PATH="./src" +SCRIPT_PATH="./src/reconnect_scripts" +RECONNECT_SCRIPT_NAME="ppp_reconnect.sh" +MANAGER_SCRIPT_NAME="ppp_connection_manager.sh" +SERVICE_NAME="ppp_connection_manager.service" + +YELLOW='\033[1;33m' +RED='\033[0;31m' +BLUE='\033[1;34m' +GREEN='\033[0;32m' +SET='\033[0m' + +# Global Varibales +POWERUP_REQ=1 +POWERUP_NOT_REQ=0 + +STATUS_GPRS=19 +STATUS_CELL_IOT_APP=20 +STATUS_CELL_IOT=23 +STATUS_TRACKER=23 + +POWERKEY_GPRS=26 +POWERKEY_CELL_IOT_APP=11 +POWERKEY_CELL_IOT=24 +POWERKEY_TRACKER=24 + + +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" ${GREEN};; + 2) colored_echo "You chose Base Shield" ${GREEN};; + 3) colored_echo "You chose CellularIoT Shield" ${GREEN};; + 4) colored_echo "You chose CellularIoT HAT" ${GREEN};; + 5) colored_echo "You chose Tracker HAT" ${GREEN};; + 6) colored_echo "You chose 3G/4G Base HAT" ${GREEN};; + *) colored_echo "Wrong Selection, exiting" ${RED}; exit 1; +esac + +colored_echo "Checking requirements..." + +colored_echo "Updating headers..." +sudo apt-get update + +colored_echo "Installing python3 if it is required..." +if ! [ -x "$(command -v python3)" ]; then + sudo apt-get install python3 -y + if [[ $? -ne 0 ]]; then colored_echo "Process failed" ${RED}; exit 1; fi +fi + +colored_echo "Installing pip3 if it is required..." +if ! [ -x "$(command -v pip3)" ]; then + sudo apt-get install python3-pip -y + if [[ $? -ne 0 ]]; then colored_echo "Process failed" ${RED}; exit 1; fi +fi + +colored_echo "Installing or upgrading atcom if it is required..." + +pip3 install -U atcom +if [[ $? -ne 0 ]]; then colored_echo "Process failed" ${RED}; exit 1; fi + +source ~/.profile +if [[ $? -ne 0 ]]; then colored_echo "Process failed" ${RED}; exit 1; fi + + +colored_echo "Copying setup files..." + +cp $SOURCE_PATH/chat-connect chat-connect +cp $SOURCE_PATH/chat-disconnect chat-disconnect +cp $SOURCE_PATH/provider provider + +colored_echo "ppp and wiringpi (gpio tool) installing..." +apt-get install ppp wiringpi -y +if [[ $? -ne 0 ]]; then colored_echo "Process failed" ${RED}; exit 1; fi + +# test wiringpi and fix if there is any issue +gpio readall | grep Oops > /dev/null +if [[ $? -ne 1 ]]; then + colored_echo "Known wiringpi issue is detected! Wiringpi is updating..." + wget https://project-downloads.drogon.net/wiringpi-latest.deb + sudo dpkg -i wiringpi-latest.deb +fi + +colored_echo "What is your carrier APN?" +read carrierapn + +colored_echo "Your Input is : $carrierapn" ${GREEN} + +while [ 1 ] +do + colored_echo "Does your carrier need username and password? [Y/n]" + read usernpass + + colored_echo "You chose $usernpass" ${GREEN} + + case $usernpass in + [Yy]* ) + + while [ 1 ] + do + + colored_echo "Enter username" + read username + + colored_echo "Your Input is : $username" ${GREEN} + + colored_echo "Enter password" + read password + + colored_echo "Your Input is : $password" ${GREEN} + + 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 + +colored_echo "Your input is: $devicename" ${GREEN} + +if grep -q "ttyS0" <<<"$devicename"; then + colored_echo "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-" ${BLUE} + colored_echo "REMINDER!" ${BLUE} + colored_echo "- Disable serial console and enable miniuart to use ttyS0 as the serial interface." ${SET} + colored_echo "✔ If your ttyS0 (miniuart) port is enabled, press ENTER and continue to installation." ${SET} + colored_echo "✘ If not, please follow the instructions to enable ttyS0 interface on Raspberry Pi" ${SET} + echo -e " + 1. Start raspi-config: ${BLUE}sudo raspi-config${SET}. + 2. Select option 3 - ${BLUE}Interface Options${SET}. + 3. Select option P6 - ${BLUE}Serial Port${SET}. + 4. ${BLUE}At the prompt Would you like a login shell to be accessible over serial?${SET} answer ${BLUE}'No'${SET} + 5. ${BLUE}At the prompt Would you like the serial port hardware to be enabled?${SET} answer ${BLUE}'Yes'${SET} + 6. Exit raspi-config and ${BLUE}reboot${SET} the Pi for changes to take effect. + " + colored_echo "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-" ${BLUE} + echo + echo -e "Press ${BLUE}ENTER${SET} key to continue to installation or press ${BLUE}CTRL^C${SET} to abort installation and enable ttyS0 serial interface." + read -p "" ENTER + + colored_echo "Doing atcom configuration for ttyS0 serial..." + # create atcom config + echo port: "/dev/ttyS0" > configs.yml + mv configs.yml $PPP_PATH +else + # delete atcom config + ls $PPP_PATH | grep configs.yml > /dev/null + if [[ $? -eq 0 ]]; then rm $PPP_PATH/configs.yml; fi +fi + +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 + +if ! (grep -q 'sudo route' /etc/ppp/ip-up ); then + echo "sudo route add default ppp0" >> /etc/ppp/ip-up +fi + +if [[ $shield_hat -eq 2 ]] || [[ $shield_hat -eq 6 ]]; then + if ! (grep -q 'max_usb_current' /boot/config.txt ); then + echo "max_usb_current=1" >> /boot/config.txt + fi +fi + +while [ 1 ] +do + colored_echo "Do you want to activate auto connect/reconnect service at R.Pi boot up? [Y/n]" + read auto_reconnect + + colored_echo "You chose $auto_reconnect" ${GREEN} + + case $auto_reconnect in + [Yy]* ) colored_echo "Copying setup file..." + + cp $SOURCE_PATH/$SERVICE_NAME $SERVICE_NAME + cp $SOURCE_PATH/functions.sh functions.sh + cp $SOURCE_PATH/configs.sh configs.sh + cp $SOURCE_PATH/configure_modem.sh configure_modem.sh + cp $SOURCE_PATH/$MANAGER_SCRIPT_NAME $MANAGER_SCRIPT_NAME + + # APN Configuration + sed -i "s/SIM_APN/$carrierapn/" configure_modem.sh + + if [ $shield_hat -eq 1 ]; then + + cp $SCRIPT_PATH/reconnect_gprsshield $RECONNECT_SCRIPT_NAME + + sed -i "s/STATUS_PIN/$STATUS_GPRS/" configure_modem.sh + sed -i "s/POWERKEY_PIN/$POWERKEY_GPRS/" configure_modem.sh + sed -i "s/POWERUP_FLAG/$POWERUP_REQ/" configure_modem.sh + + + elif [ $shield_hat -eq 2 ]; then + + cp $SCRIPT_PATH/reconnect_baseshield $RECONNECT_SCRIPT_NAME + + sed -i "s/POWERUP_FLAG/$POWERUP_NOT_REQ/" configure_modem.sh + + elif [ $shield_hat -eq 3 ]; then + + cp $SCRIPT_PATH/reconnect_cellulariot_app $RECONNECT_SCRIPT_NAME + + sed -i "s/STATUS_PIN/$STATUS_CELL_IOT_APP/" configure_modem.sh + sed -i "s/POWERKEY_PIN/$POWERKEY_CELL_IOT_APP/" configure_modem.sh + sed -i "s/POWERUP_FLAG/$POWERUP_REQ/" configure_modem.sh + + elif [ $shield_hat -eq 4 ]; then + + cp $SCRIPT_PATH/reconnect_cellulariot $RECONNECT_SCRIPT_NAME + + sed -i "s/STATUS_PIN/$STATUS_CELL_IOT/" configure_modem.sh + sed -i "s/POWERKEY_PIN/$POWERKEY_CELL_IOT/" configure_modem.sh + sed -i "s/POWERUP_FLAG/$POWERUP_REQ/" configure_modem.sh + + elif [ $shield_hat -eq 5 ]; then + + cp $SCRIPT_PATH/reconnect_tracker $RECONNECT_SCRIPT_NAME + + sed -i "s/STATUS_PIN/$STATUS_TRACKER/" configure_modem.sh + sed -i "s/POWERKEY_PIN/$POWERKEY_TRACKER/" configure_modem.sh + sed -i "s/POWERUP_FLAG/$POWERUP_REQ/" configure_modem.sh + + elif [ $shield_hat -eq 6 ]; then + + cp $SCRIPT_PATH/reconnect_basehat $RECONNECT_SCRIPT_NAME + + sed -i "s/POWERUP_FLAG/$POWERUP_NOT_REQ/" configure_modem.sh + + fi + + mv functions.sh $PPP_PATH + mv configs.sh $PPP_PATH + mv configure_modem.sh $PPP_PATH + mv $RECONNECT_SCRIPT_NAME $PPP_PATH + mv $MANAGER_SCRIPT_NAME $PPP_PATH + mv $SERVICE_NAME /etc/systemd/system/ + + 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 + +colored_echo "Rebooting..." ${GREEN} +reboot diff --git a/ppp_install_jetson.sh b/ppp_install_jetson.sh new file mode 100755 index 0000000..9db430c --- /dev/null +++ b/ppp_install_jetson.sh @@ -0,0 +1,140 @@ +#!/bin/bash + +# Created on July 12, 2019 by Saeed Johar (saeedjohar) +# Revised on November 19, 2020 by Yasin Kaya (selengalp) + +SIXFAB_PATH="/opt/sixfab" +PPP_PATH="/opt/sixfab/ppp_connection_manager" + +REPO_PATH="https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer" +BRANCH=master +SOURCE_PATH="$REPO_PATH/$BRANCH/src" +SCRIPT_PATH="$REPO_PATH/$BRANCH/src/reconnect_scripts" +RECONNECT_SCRIPT_NAME="ppp_reconnect.sh" +MANAGER_SCRIPT_NAME="ppp_connection_manager.sh" +SERVICE_NAME="ppp_connection_manager.service" + +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 + +if ! (grep -q 'sudo route' /etc/ppp/ip-up ); then + echo "sudo route add default ppp0" >> /etc/ppp/ip-up +fi + +read -p "Press ENTER key to reboot" ENTER +reboot \ No newline at end of file diff --git a/ppp_install_standalone.sh b/ppp_install_standalone.sh new file mode 100755 index 0000000..fc25a5d --- /dev/null +++ b/ppp_install_standalone.sh @@ -0,0 +1,325 @@ +#!/bin/bash + +# Re-created on November 27, 2020 by Yasin Kaya (selengalp) + +SIXFAB_PATH="/opt/sixfab" +PPP_PATH="/opt/sixfab/ppp_connection_manager" + +REPO_PATH="https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer" +BRANCH=master +SOURCE_PATH="$REPO_PATH/$BRANCH/src" +SCRIPT_PATH="$REPO_PATH/$BRANCH/src/reconnect_scripts" +RECONNECT_SCRIPT_NAME="ppp_reconnect.sh" +MANAGER_SCRIPT_NAME="ppp_connection_manager.sh" +SERVICE_NAME="ppp_connection_manager.service" + +YELLOW='\033[1;33m' +RED='\033[0;31m' +BLUE='\033[1;34m' +GREEN='\033[0;32m' +SET='\033[0m' + +# Global Varibales +POWERUP_REQ=1 +POWERUP_NOT_REQ=0 + +STATUS_GPRS=19 +STATUS_CELL_IOT_APP=20 +STATUS_CELL_IOT=23 +STATUS_TRACKER=23 + +POWERKEY_GPRS=26 +POWERKEY_CELL_IOT_APP=11 +POWERKEY_CELL_IOT=24 +POWERKEY_TRACKER=24 + + +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" ${GREEN};; + 2) colored_echo "You chose Base Shield" ${GREEN};; + 3) colored_echo "You chose CellularIoT Shield" ${GREEN};; + 4) colored_echo "You chose CellularIoT HAT" ${GREEN};; + 5) colored_echo "You chose Tracker HAT" ${GREEN};; + 6) colored_echo "You chose 3G/4G Base HAT" ${GREEN};; + *) colored_echo "Wrong Selection, exiting" ${RED}; exit 1; +esac + +colored_echo "Checking requirements..." + +colored_echo "Updating headers..." +sudo apt-get update + +colored_echo "Installing python3 if it is required..." +if ! [ -x "$(command -v python3)" ]; then + sudo apt-get install python3 -y + if [[ $? -ne 0 ]]; then colored_echo "Process failed" ${RED}; exit 1; fi +fi + +colored_echo "Installing pip3 if it is required..." +if ! [ -x "$(command -v pip3)" ]; then + sudo apt-get install python3-pip -y + if [[ $? -ne 0 ]]; then colored_echo "Process failed" ${RED}; exit 1; fi +fi + +colored_echo "Installing or upgrading atcom if it is required..." + +pip3 install -U atcom +if [[ $? -ne 0 ]]; then colored_echo "Process failed" ${RED}; exit 1; fi + +source ~/.profile +if [[ $? -ne 0 ]]; then colored_echo "Process failed" ${RED}; exit 1; fi + + +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 and wiringpi (gpio tool) installing..." +apt-get install ppp wiringpi -y +if [[ $? -ne 0 ]]; then colored_echo "Process failed" ${RED}; exit 1; fi + +# test wiringpi and fix if there is any issue +gpio readall | grep Oops > /dev/null +if [[ $? -ne 1 ]]; then + colored_echo "Known wiringpi issue is detected! Wiringpi is updating..." + wget https://project-downloads.drogon.net/wiringpi-latest.deb + sudo dpkg -i wiringpi-latest.deb +fi + +colored_echo "What is your carrier APN?" +read carrierapn + +colored_echo "Your Input is : $carrierapn" ${GREEN} + +while [ 1 ] +do + colored_echo "Does your carrier need username and password? [Y/n]" + read usernpass + + colored_echo "You chose $usernpass" ${GREEN} + + case $usernpass in + [Yy]* ) + + while [ 1 ] + do + + colored_echo "Enter username" + read username + + colored_echo "Your Input is : $username" ${GREEN} + + colored_echo "Enter password" + read password + + colored_echo "Your Input is : $password" ${GREEN} + + 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 + +colored_echo "Your input is: $devicename" ${GREEN} + +if grep -q "ttyS0" <<<"$devicename"; then + colored_echo "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-" ${BLUE} + colored_echo "REMINDER!" ${BLUE} + colored_echo "- Disable serial console and enable miniuart to use ttyS0 as the serial interface." ${SET} + colored_echo "✔ If your ttyS0 (miniuart) port is enabled, press ENTER and continue to installation." ${SET} + colored_echo "✘ If not, please follow the instructions to enable ttyS0 interface on Raspberry Pi" ${SET} + echo -e " + 1. Start raspi-config: ${BLUE}sudo raspi-config${SET}. + 2. Select option 3 - ${BLUE}Interface Options${SET}. + 3. Select option P6 - ${BLUE}Serial Port${SET}. + 4. ${BLUE}At the prompt Would you like a login shell to be accessible over serial?${SET} answer ${BLUE}'No'${SET} + 5. ${BLUE}At the prompt Would you like the serial port hardware to be enabled?${SET} answer ${BLUE}'Yes'${SET} + 6. Exit raspi-config and ${BLUE}reboot${SET} the Pi for changes to take effect. + " + colored_echo "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-" ${BLUE} + echo + echo -e "Press ${BLUE}ENTER${SET} key to continue to installation or press ${BLUE}CTRL^C${SET} to abort installation and enable ttyS0 serial interface." + read -p "" ENTER + + colored_echo "Doing atcom configuration for ttyS0 serial..." + # create atcom config + echo port: "/dev/ttyS0" > configs.yml + mv configs.yml $PPP_PATH +else + # delete atcom config + ls $PPP_PATH | grep configs.yml > /dev/null + if [[ $? -eq 0 ]]; then rm $PPP_PATH/configs.yml; fi +fi + +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 + +if ! (grep -q 'sudo route' /etc/ppp/ip-up ); then + echo "sudo route add default ppp0" >> /etc/ppp/ip-up +fi + +if [[ $shield_hat -eq 2 ]] || [[ $shield_hat -eq 6 ]]; then + if ! (grep -q 'max_usb_current' /boot/config.txt ); then + echo "max_usb_current=1" >> /boot/config.txt + fi +fi + +while [ 1 ] +do + colored_echo "Do you want to activate auto connect/reconnect service at R.Pi boot up? [Y/n]" + read auto_reconnect + + colored_echo "You chose $auto_reconnect" ${GREEN} + + case $auto_reconnect in + [Yy]* ) colored_echo "Downloading setup file..." + + wget --no-check-certificate $SOURCE_PATH/$SERVICE_NAME + if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi + + wget --no-check-certificate $SOURCE_PATH/functions.sh + if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi + + wget --no-check-certificate $SOURCE_PATH/configs.sh + if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi + + wget --no-check-certificate $SOURCE_PATH/configure_modem.sh + if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi + + wget --no-check-certificate $SOURCE_PATH/$MANAGER_SCRIPT_NAME + if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi + + # APN Configuration + sed -i "s/SIM_APN/$carrierapn/" configure_modem.sh + + if [ $shield_hat -eq 1 ]; then + + wget --no-check-certificate $SCRIPT_PATH/reconnect_gprsshield -O $RECONNECT_SCRIPT_NAME + if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi + + sed -i "s/STATUS_PIN/$STATUS_GPRS/" configure_modem.sh + sed -i "s/POWERKEY_PIN/$POWERKEY_GPRS/" configure_modem.sh + sed -i "s/POWERUP_FLAG/$POWERUP_REQ/" configure_modem.sh + + + elif [ $shield_hat -eq 2 ]; then + + wget --no-check-certificate $SCRIPT_PATH/reconnect_baseshield -O $RECONNECT_SCRIPT_NAME + if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi + + sed -i "s/POWERUP_FLAG/$POWERUP_NOT_REQ/" configure_modem.sh + + elif [ $shield_hat -eq 3 ]; then + + wget --no-check-certificate $SCRIPT_PATH/reconnect_cellulariot_app -O $RECONNECT_SCRIPT_NAME + if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi + + sed -i "s/STATUS_PIN/$STATUS_CELL_IOT_APP/" configure_modem.sh + sed -i "s/POWERKEY_PIN/$POWERKEY_CELL_IOT_APP/" configure_modem.sh + sed -i "s/POWERUP_FLAG/$POWERUP_REQ/" configure_modem.sh + + elif [ $shield_hat -eq 4 ]; then + + wget --no-check-certificate $SCRIPT_PATH/reconnect_cellulariot -O $RECONNECT_SCRIPT_NAME + if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi + + sed -i "s/STATUS_PIN/$STATUS_CELL_IOT/" configure_modem.sh + sed -i "s/POWERKEY_PIN/$POWERKEY_CELL_IOT/" configure_modem.sh + sed -i "s/POWERUP_FLAG/$POWERUP_REQ/" configure_modem.sh + + elif [ $shield_hat -eq 5 ]; then + + wget --no-check-certificate $SCRIPT_PATH/reconnect_tracker -O $RECONNECT_SCRIPT_NAME + if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi + + sed -i "s/STATUS_PIN/$STATUS_TRACKER/" configure_modem.sh + sed -i "s/POWERKEY_PIN/$POWERKEY_TRACKER/" configure_modem.sh + sed -i "s/POWERUP_FLAG/$POWERUP_REQ/" configure_modem.sh + + elif [ $shield_hat -eq 6 ]; then + + wget --no-check-certificate $SCRIPT_PATH/reconnect_basehat -O $RECONNECT_SCRIPT_NAME + if [[ $? -ne 0 ]]; then colored_echo "Download failed" ${RED}; exit 1; fi + + sed -i "s/POWERUP_FLAG/$POWERUP_NOT_REQ/" configure_modem.sh + + fi + + mv functions.sh $PPP_PATH + mv configs.sh $PPP_PATH + mv configure_modem.sh $PPP_PATH + mv $RECONNECT_SCRIPT_NAME $PPP_PATH + mv $MANAGER_SCRIPT_NAME $PPP_PATH + mv $SERVICE_NAME /etc/systemd/system/ + + 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 + +colored_echo "Rebooting..." ${GREEN} +reboot diff --git a/ppp_installer/install.sh b/ppp_installer/install.sh deleted file mode 100755 index 6b0bf6b..0000000 --- a/ppp_installer/install.sh +++ /dev/null @@ -1,155 +0,0 @@ -#!/bin/sh - -YELLOW='\033[1;33m' -RED='\033[0;31m' -BLUE='\033[1;34m' -SET='\033[0m' - -echo "${YELLOW}Please choose your Sixfab Shield/HAT:${SET}" -echo "${YELLOW}1: GSM/GPRS Shield${SET}" -echo "${YELLOW}2: 3G, 4G/LTE Base Shield${SET}" -echo "${YELLOW}3: Cellular IoT App Shield${SET}" -echo "${YELLOW}4: Cellular IoT HAT${SET}" -echo "${YELLOW}5: Tracker HAT${SET}" -echo "${YELLOW}6: 3G/4G Base HAT${SET}" - - -read shield_hat -case $shield_hat in - 1) echo "${YELLOW}You chose GSM/GPRS Shield${SET}";; - 2) echo "${YELLOW}You chose Base Shield${SET}";; - 3) echo "${YELLOW}You chose CellularIoT Shield${SET}";; - 4) echo "${YELLOW}You chose CellularIoT HAT${SET}";; - 5) echo "${YELLOW}You chose Tracker HAT${SET}";; - 6) echo "${YELLOW}You chose 3G/4G Base HAT${SET}";; - *) echo "${RED}Wrong Selection, exiting${SET}"; exit 1; -esac - -echo "${YELLOW}Downloading setup files${SET}" -wget --no-check-certificate https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_installer/chat-connect -O chat-connect - -if [ $? -ne 0 ]; then - echo "${RED}Download failed${SET}" - exit 1; -fi - -wget --no-check-certificate https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_installer/chat-disconnect -O chat-disconnect - -if [ $? -ne 0 ]; then - echo "${RED}Download failed${SET}" - exit 1; -fi - -wget --no-check-certificate https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_installer/provider -O provider - -if [ $? -ne 0 ]; then - echo "${RED}Download failed${SET}" - exit 1; -fi - -echo "${YELLOW}ppp and wiringpi (gpio tool) install${SET}" -apt install ppp wiringpi -y - -echo "${YELLOW}What is your carrier APN?${SET}" -read carrierapn - -while [ 1 ] -do - echo "${YELLOW}Does your carrier need username and password? [Y/n]${SET}" - read usernpass - - case $usernpass in - [Yy]* ) while [ 1 ] - do - - echo "${YELLOW}Enter username${SET}" - read username - - echo "${YELLOW}Enter password${SET}" - read password - sed -i "s/noauth/#noauth\nuser \"$username\"\npassword \"$password\"/" provider - break - done - - break;; - - [Nn]* ) break;; - *) echo "${RED}Wrong Selection, Select among Y or n${SET}";; - esac -done - -echo "${YELLOW}What is your device communication PORT? (ttyS0/ttyUSB3/etc.)${SET}" -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 - -if ! (grep -q 'sudo route' /etc/ppp/ip-up ); then - echo "sudo route add default ppp0" >> /etc/ppp/ip-up -fi - -if [ $shield_hat -eq 2 ]; then - if ! (grep -q 'max_usb_current' /boot/config.txt ); then - echo "max_usb_current=1" >> /boot/config.txt - fi -fi - -while [ 1 ] -do - echo "${YELLOW}Do you want to activate auto connect/reconnect service at R.Pi boot up? [Y/n] ${SET}" - read auto_reconnect - - case $auto_reconnect in - [Yy]* ) echo "${YELLOW}Downloading setup file${SET}" - - wget --no-check-certificate https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_installer/reconnect_service -O reconnect.service - - if [ $shield_hat -eq 1 ]; then - - wget --no-check-certificate https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_installer/reconnect_gprsshield -O reconnect.sh - - elif [ $shield_hat -eq 2 ]; then - - wget --no-check-certificate https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_installer/reconnect_baseshield -O reconnect.sh - - elif [ $shield_hat -eq 3 ]; then - - wget --no-check-certificate https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_installer/reconnect_cellulariot_app -O reconnect.sh - - elif [ $shield_hat -eq 4 ]; then - - wget --no-check-certificate https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_installer/reconnect_cellulariot -O reconnect.sh - - elif [ $shield_hat -eq 5 ]; then - - wget --no-check-certificate https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_installer/reconnect_tracker -O reconnect.sh - - elif [ $shield_hat -eq 6 ]; then - - wget --no-check-certificate https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_installer/reconnect_basehat -O reconnect.sh - - fi - - mv reconnect.sh /usr/src/ - mv reconnect.service /etc/systemd/system/ - - systemctl daemon-reload - systemctl enable reconnect.service - - break;; - - [Nn]* ) echo "${YELLOW}To connect to internet run ${BLUE}\"sudo pon\"${YELLOW} and to disconnect run ${BLUE}\"sudo poff\" ${SET}" - break;; - *) echo "${RED}Wrong Selection, Select among Y or n${SET}";; - esac -done - -read -p "Press ENTER key to reboot" ENTER -reboot diff --git a/ppp_installer/install_ppp_jetson.sh b/ppp_installer/install_ppp_jetson.sh deleted file mode 100755 index 5127f80..0000000 --- a/ppp_installer/install_ppp_jetson.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/sh -' -Created on July 12, 2019 by Saeed Johar (saeedjohar) -' -YELLOW='\033[1;33m' -RED='\033[0;31m' -BLUE='\033[1;34m' -SET='\033[0m' - -echo "${YELLOW}Please choose your Sixfab Shield/HAT:${SET}" -echo "${YELLOW}1: GSM/GPRS Shield${SET}" -echo "${YELLOW}2: 3G, 4G/LTE Base Shield${SET}" -echo "${YELLOW}3: Cellular IoT App Shield${SET}" -echo "${YELLOW}4: Cellular IoT HAT${SET}" -echo "${YELLOW}5: Tracker HAT${SET}" -echo "${YELLOW}6: 3G/4G Base HAT${SET}" - -read shield_hat -case $shield_hat in - 1) echo "${YELLOW}You chose GSM/GPRS Shield${SET}";; - 2) echo "${YELLOW}You chose Base Shield${SET}";; - 3) echo "${YELLOW}You chose CellularIoT Shield${SET}";; - 4) echo "${YELLOW}You chose CellularIoT HAT${SET}";; - 5) echo "${YELLOW}You chose Tracker HAT${SET}";; - 6) echo "${YELLOW}You chose 3G/4G Base HAT${SET}";; - *) echo "${RED}Wrong Selection, exiting${SET}"; exit 1; -esac - -echo "${YELLOW}Downloading setup files${SET}" -wget --no-check-certificate https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_installer/chat-connect -O chat-connect - -if [ $? -ne 0 ]; then - echo "${RED}Download failed${SET}" - exit 1; -fi - -wget --no-check-certificate https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_installer/chat-disconnect -O chat-disconnect - -if [ $? -ne 0 ]; then - echo "${RED}Download failed${SET}" - exit 1; -fi - -wget --no-check-certificate https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_installer/provider -O provider - -if [ $? -ne 0 ]; then - echo "${RED}Download failed${SET}" - exit 1; -fi - -echo "${YELLOW}ppp install${SET}" -apt-get install ppp -y - -echo "${YELLOW}What is your carrier APN?${SET}" -read carrierapn - -while [ 1 ] -do - echo "${YELLOW}Does your carrier need username and password? [Y/n]${SET}" - read usernpass - - case $usernpass in - [Yy]* ) while [ 1 ] - do - - echo "${YELLOW}Enter username${SET}" - read username - - echo "${YELLOW}Enter password${SET}" - read password - sed -i "s/noauth/#noauth\nuser \"$username\"\npassword \"$password\"/" provider - break - done - - break;; - - [Nn]* ) break;; - *) echo "${RED}Wrong Selection, Select among Y or n${SET}";; - esac -done - -echo "${YELLOW}What is your device communication PORT? (ttyS0/ttyUSB3/etc.)${SET}" -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 - -if ! (grep -q 'sudo route' /etc/ppp/ip-up ); then - echo "sudo route del default" >> /etc/ppp/ip-up - echo "sudo route add default ppp0" >> /etc/ppp/ip-up -fi - -read -p "Press ENTER key to reboot" ENTER -reboot \ No newline at end of file diff --git a/ppp_installer/install_supersim.sh b/ppp_installer/install_supersim.sh deleted file mode 100644 index 297e239..0000000 --- a/ppp_installer/install_supersim.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/sh - -YELLOW='\033[1;33m' -RED='\033[0;31m' -BLUE='\033[1;34m' -SET='\033[0m' - -echo "${YELLOW}Installing PPP for Sixfab Cellular IoT Shield/HAT with Twilio Super SIM${SET}" - -echo "${YELLOW}Downloading setup files${SET}" -wget --no-check-certificate https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_installer/chat-connect -O chat-connect - -if [ $? -ne 0 ]; then - echo "${RED}Download failed${SET}" - exit 1; -fi - -wget --no-check-certificate https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_installer/chat-disconnect -O chat-disconnect - -if [ $? -ne 0 ]; then - echo "${RED}Download failed${SET}" - exit 1; -fi - -wget --no-check-certificate https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_installer/provider -O provider - -if [ $? -ne 0 ]; then - echo "${RED}Download failed${SET}" - exit 1; -fi - -echo "${YELLOW}ppp and wiringpi (gpio tool) install${SET}" -apt install ppp wiringpi -y - -mkdir -p /etc/chatscripts - -mv chat-connect /etc/chatscripts/ -mv chat-disconnect /etc/chatscripts/ - -mkdir -p /etc/ppp/peers -sed -i "s/#APN/super/" provider -sed -i "s/#DEVICE/ttyUSB3/" provider -mv provider /etc/ppp/peers/provider - -if ! (grep -q 'sudo route' /etc/ppp/ip-up ); then - echo "sudo route del default" >> /etc/ppp/ip-up - echo "sudo route add default ppp0" >> /etc/ppp/ip-up -fi - -while [ 1 ] -do - echo "${YELLOW}Do you want to activate auto connect/reconnect service at R.Pi boot up? [Y/n] ${SET}" - read auto_reconnect - - case $auto_reconnect in - [Yy]* ) echo "${YELLOW}Downloading setup file${SET}" - - wget --no-check-certificate https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_installer/reconnect_service -O reconnect.service - - wget --no-check-certificate https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_installer/reconnect_cellulariot -O reconnect.sh - - mv reconnect.sh /usr/src/ - mv reconnect.service /etc/systemd/system/ - - systemctl daemon-reload - systemctl enable reconnect.service - - break;; - - [Nn]* ) echo "${YELLOW}To connect to internet run ${BLUE}\"sudo pon\"${YELLOW} and to disconnect run ${BLUE}\"sudo poff\" ${SET}" - break;; - *) echo "${RED}Wrong Selection, Select among Y or n${SET}";; - esac -done - -read -p "Press ENTER key to reboot" ENTER -reboot diff --git a/ppp_installer/reconnect_basehat b/ppp_installer/reconnect_basehat deleted file mode 100644 index e870673..0000000 --- a/ppp_installer/reconnect_basehat +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -# /usr/src/reconnect -# for Base HAT - -gpio -g mode 26 out #HAT_POWER_OFF -gpio -g mode 19 out #W_DISABLE - -gpio -g write 26 0 -gpio -g write 19 0 - -while true; do - - ping -q -I ppp0 -c 1 8.8.8.8 -s 0 >/dev/null - - if [ $? -ne 0 ]; then - echo "Connection down, reconnecting..." - sudo pon - fi - - sleep 10 -done diff --git a/ppp_installer/reconnect_baseshield b/ppp_installer/reconnect_baseshield deleted file mode 100644 index 0688998..0000000 --- a/ppp_installer/reconnect_baseshield +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -while true; do - - ping -q -I ppp0 -c 1 8.8.8.8 -s 0 >/dev/null - - if [ $? -ne 0 ]; then - echo "Connection down, reconnecting..." - sudo pon - fi - - sleep 10 -done diff --git a/ppp_installer/reconnect_cellulariot b/ppp_installer/reconnect_cellulariot deleted file mode 100644 index 35cf79c..0000000 --- a/ppp_installer/reconnect_cellulariot +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh - -gpio -g mode 23 in #status -gpio -g mode 24 out #powerkey -gpio -g mode 17 out #enable - -gpio -g write 17 1 -sleep 1 -gpio -g write 17 0 - -while true; do - - if [ $(gpio -g read 23) = "1" ]; then - echo "Power up" - - #gpio -g write 24 0 - gpio -g write 24 1 - sleep 2 - gpio -g write 24 0 - sleep 2 - else - ping -q -I ppp0 -c 1 8.8.8.8 -s 0 >/dev/null - - if [ $? -ne 0 ]; then - echo "Connection down, reconnecting..." - sudo pon - fi - fi - - sleep 10 -done diff --git a/ppp_installer/reconnect_cellulariot_app b/ppp_installer/reconnect_cellulariot_app deleted file mode 100644 index 5633ecc..0000000 --- a/ppp_installer/reconnect_cellulariot_app +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh - -gpio -g mode 20 in -gpio -g mode 11 out -gpio -g mode 26 out - -gpio -g write 26 0 -sleep 1 -gpio -g write 26 1 - -while true; do - - if [ $(gpio -g read 20) = "1" ]; then - echo "Power up" - - gpio -g write 11 0 - gpio -g write 11 1 - sleep 2 - gpio -g write 11 0 - sleep 2 - else - ping -q -I ppp0 -c 1 8.8.8.8 -s 0 >/dev/null - - if [ $? -ne 0 ]; then - echo "Connection down, reconnecting..." - sudo pon - fi - fi - - sleep 10 -done diff --git a/ppp_installer/reconnect_gprsshield b/ppp_installer/reconnect_gprsshield deleted file mode 100644 index d68f971..0000000 --- a/ppp_installer/reconnect_gprsshield +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh - -gpio -g mode 19 in -gpio -g mode 26 out - -while true; do - - if [ $(gpio -g read 19) = "0" ]; then - echo "Power up" - - gpio -g write 26 0 - gpio -g write 26 1 - sleep 2 - gpio -g write 26 0 - sleep 2 - else - ping -q -I ppp0 -c 1 8.8.8.8 -s 0 >/dev/null - - if [ $? -ne 0 ]; then - echo "Connection down, reconnecting..." - sudo pon - fi - fi - - sleep 10 -done diff --git a/ppp_installer/reconnect_tracker b/ppp_installer/reconnect_tracker deleted file mode 100644 index faee971..0000000 --- a/ppp_installer/reconnect_tracker +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh - -gpio -g mode 23 in #status -gpio -g mode 24 out #powerkey -gpio -g mode 17 out #disable -# enabling the power of the HAT -gpio -g write 17 1 -sleep 1 -gpio -g write 17 0 - -while true; do - - if [ $(gpio -g read 23) = "0" ]; then - echo "Power up" - - gpio -g write 24 1 - sleep 2 - gpio -g write 24 0 - sleep 2 - else - ping -q -I ppp0 -c 1 8.8.8.8 -s 0 >/dev/null - - if [ $? -ne 0 ]; then - echo "Connection down, reconnecting..." - sudo pon - fi - fi - - sleep 10 -done diff --git a/ppp_installer/chat-connect b/src/chat-connect similarity index 61% rename from ppp_installer/chat-connect rename to src/chat-connect index 83b0057..01bad1e 100644 --- a/ppp_installer/chat-connect +++ b/src/chat-connect @@ -7,7 +7,15 @@ ABORT "NO ANSWER" TIMEOUT 30 "" AT OK ATE0 +<<<<<<< HEAD:src/chat-connect +OK AT+CPIN? +OK AT+CSQ +OK AT+CREG? +OK AT+CGREG? +OK AT+COPS? +======= OK ATI;+CSQ;+COPS?;+CGREG?;&D2 +>>>>>>> master:ppp_installer/chat-connect OK AT+CGDCONT=1,"IP","\T",,0,0 OK ATD*99# CONNECT diff --git a/ppp_installer/chat-disconnect b/src/chat-disconnect similarity index 100% rename from ppp_installer/chat-disconnect rename to src/chat-disconnect diff --git a/src/configs.sh b/src/configs.sh new file mode 100644 index 0000000..9f7cceb --- /dev/null +++ b/src/configs.sh @@ -0,0 +1,6 @@ +#!/bin/env bash + +INTERVAL=60 # Seconds, Interval between two connection check of internet +DOUBLE_CHECK_WAIT=10 # Seconds, wait time for double check when the connection is down +PING_TIMEOUT=9 # Seconds, Timeout of ping command +NETWORK_CHECK_TIMEOUT=150 # Count, Check network for ($NETWORK_TIMEOUT x 2 Seconds) \ No newline at end of file diff --git a/src/configure_modem.sh b/src/configure_modem.sh new file mode 100644 index 0000000..3d3b251 --- /dev/null +++ b/src/configure_modem.sh @@ -0,0 +1,181 @@ +#!/bin/bash + +source functions.sh + +# default pins set for cellulariot hat +STATUS=${STATUS_PIN:-23} +POWERKEY=${POWERKEY_PIN:-24} +POWER_UP_REQUIRED=${POWERUP_FLAG:-1} + +# default arguments +APN=${SIM_APN:-super} + +# 1 : STATUS +# 2 : POWERKEY +function power_up_module +{ + # Configure pins + gpio -g mode $STATUS in + gpio -g mode $POWERKEY out + + for i in {1..20}; do + if [[ $(gpio -g read $STATUS) -eq 1 ]]; then + debug "Module is powering up..." + + gpio -g write $POWERKEY 0 + gpio -g write $POWERKEY 1 + sleep 2 + gpio -g write $POWERKEY 0 + sleep 5 + + if [[ $(gpio -g read $STATUS) -eq 0 ]]; then + debug "Module is powered up." + return 0 + break + else + debug "Module couldn't be powered up!" + sleep 2 + fi + else + debug "Module is just powered up." + return 0 + break + fi + done + return 1 +} + +if [[ $POWER_UP_REQUIRED -eq 1 ]]; then + if power_up_module -eq 0 ; then sleep 0.1; else debug "Module couldn't be powered up! Check the hardware setup!"; fi +else + debug "Power up is not required." +fi + +### Modem configuration for RMNET/PPP mode ################################## +debug "Checking APN and Modem Modem..." + +# APN Configuration +# ----------------- +atcom "AT+CGDCONT?" | grep $APN > /dev/null + +if [[ $? -ne 0 ]]; then + atcom "AT+CGDCONT=1,\"IPV4V6\",\"$APN\"" + debug "APN is updated." +fi + +# Check the vendor +lsusb | grep Quectel >> /dev/null +IS_QUECTEL=$? + +lsusb | grep Telit >> /dev/null +IS_TELIT=$? + +# Modem Mode Configuration +# ------------------------ +# For Quectel +if [[ $IS_QUECTEL -eq 0 ]]; then + + lsusb | grep BG9 > /dev/null + MODEL_BG9X=$? + + if [[ $MODEL_BG9X -eq 0 ]]; then + # BG95 and BG96 + + # RAT Searching Sequence + atcom "AT+QCFG=\"nwscanseq\"" | grep 020301 > /dev/null + + if [[ $? -ne 0 ]]; then + atcom "AT+QCFG=\"nwscanseq\",00" + debug "Configure RAT Searching Sequence is updated." + fi + + # RAT(s) to be Searched + atcom "AT+QCFG=\"nwscanmode\"" | grep 0 > /dev/null + + if [[ $? -ne 0 ]]; then + atcom "AT+QCFG=\"nwscanmode\",0" + debug "RAT(s) to be Searched is updated." + fi + + # Network Category to be Searched under LTE RAT + atcom "AT+QCFG=\"iotopmode\"" | grep 0 > /dev/null + + if [[ $? -ne 0 ]]; then + atcom "AT+QCFG=\"iotopmode\",0" + debug "Network Category to be Searched under LTE RAT is updated." + fi + + # end of configuraiton for BG95/6 + else + # EC25 or derives. + atcom "AT+QCFG=\"usbnet\"" | grep 0 > /dev/null + + if [[ $? -ne 0 ]]; then + atcom "AT+QCFG=\"usbnet\",0" + debug "PPP mode is activated." + debug "Modem restarting..." + + sleep 20 + + # Check modem is started + route -n | grep wwan0 >> /dev/null + if [[ $? -eq 0 ]]; then + echo + else + # If modem don't reboot automatically, reset manually + atcom "AT+CFUN=1,1" # rebooting modem + sleep 20 + fi + + # Check modem is started! + for i in {1..120}; do + route -n | grep wwan0 >> /dev/null + if [[ $? -eq 0 ]]; then + echo + debug "Modem is restarted." + break + fi + sleep 1 + printf "*" + done + sleep 5 # wait until modem is ready + fi + fi + +# For Telit +elif [[ $IS_TELIT -eq 0 ]]; then + atcom "AT#USBCFG?" | grep 0 >> /dev/null + + if [[ $? -ne 0 ]]; then + atcom "AT#USBCFG=0" + debug "PPP mode is activated." + debug "Modem restarting..." + + sleep 20 + + # Check modem is started! + for i in {1..120}; do + route -n | grep wwan0 >> /dev/null + if [[ $? -eq 0 ]]; then + echo + debug "Modem is restarted." + break + fi + sleep 1 + printf "*" + done + sleep 5 # wait until modem is ready + fi + +# Unknown +else + debug "The cellular module couldn't be detected!" + exit 1 +fi +### End of Modem configuration for RMNET/PPP mode ############################ + + +# Check the network is ready +# -------------------------- +if check_network -eq 0; then exit 0; else debug "Network registeration is failed!. Modem configuration is unsuccesfully ended!"; exit 1; fi + diff --git a/src/functions.sh b/src/functions.sh new file mode 100644 index 0000000..035f191 --- /dev/null +++ b/src/functions.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +source configs.sh + +YELLOW='\033[1;33m' +RED='\033[0;31m' +BLUE='\033[1;34m' +GREEN='\033[0;32m' +CYAN='\033[0;36m' +PURPLE='\033[0;35m' +SET='\033[0m' + +function debug +{ + ECHO_PARAM=${2:-''} + echo -e $ECHO_PARAM ${GREEN}$(date "+%Y/%m/%d->${BLUE}%H:%M:%S") ${SET} "$1" +} + +function check_network() +{ + # Check the network is ready + debug "Checking the network is ready..." + + for n in $(seq 1 $NETWORK_CHECK_TIMEOUT); do + NETWORK_OK=0 + + debug "SIM Status: " "-n" # no line break + atcom AT+CPIN? | grep "CPIN: READY" + SIM_READY=$? + + if [[ $SIM_READY -ne 0 ]]; then atcom AT+CPIN? | grep "CPIN:"; fi + + + debug "Network Registeration Status: " "-n" # no line break + NR_TEXT=`atcom AT+CREG? | grep "CREG:"` + echo $NR_TEXT + + # For super SIM + echo $NR_TEXT | grep "CREG: 0,5" > /dev/null + NETWORK_REG=$? + # For native SIM + echo $NR_TEXT | grep "CREG: 0,1" > /dev/null + NETWORK_REG_2=$? + # Combined network registeration status + NETWORK_REG=$((NETWORK_REG+NETWORK_REG_2)) + + if [[ $SIM_READY -eq 0 ]] && [[ $NETWORK_REG -le 1 ]]; then + debug "Network is ready." + NETWORK_OK=1 + return 0 + break + else + debug "Retrying network registeration..." + fi + sleep 2 + done + debug "Network registeration is failed! Please check SIM card, data plan, antennas etc." + return 1 +} diff --git a/ppp_installer/reconnect_service b/src/ppp_connection_manager.service similarity index 50% rename from ppp_installer/reconnect_service rename to src/ppp_connection_manager.service index c3a9d65..e521796 100644 --- a/ppp_installer/reconnect_service +++ b/src/ppp_connection_manager.service @@ -1,14 +1,13 @@ [Unit] -Description=PPP Auto Connection +Description=PPP Connection Manager After=network.target [Service] -ExecStart=/bin/sh /usr/src/reconnect.sh -WorkingDirectory=/usr/src/ +ExecStart=/bin/bash ppp_connection_manager.sh +WorkingDirectory=/opt/sixfab/ppp_connection_manager StandardOutput=inherit StandardError=inherit Restart=always -User=pi [Install] WantedBy=multi-user.target diff --git a/src/ppp_connection_manager.sh b/src/ppp_connection_manager.sh new file mode 100644 index 0000000..43fa8bb --- /dev/null +++ b/src/ppp_connection_manager.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +source functions.sh + +LOG_FOLDER="./logs" +LOG_FILE_NAME=$(date "+%Y_%m_%d_%H:%M:%S") + +if [[ -e $LOG_FOLDER ]]; then + debug "Log folder already exist!" +else + sudo mkdir $LOG_FOLDER + debug "Log folder is created." +fi + +for i in {1..4}; do + bash configure_modem.sh |& sudo tee -a ./logs/$LOG_FILE_NAME.log + MODEM_CONFIG=${PIPESTATUS[0]} # compatible with only bash + + if [[ $MODEM_CONFIG -eq 0 ]]; then + break + fi + sleep 1 +done + +if [[ $MODEM_CONFIG -eq 0 ]]; then + bash ppp_reconnect.sh |& sudo tee -a ./logs/$LOG_FILE_NAME.log +else + debug "Modem configuration is failed multiple times!" + debug "Checkout other troubleshooting steps on docs.sixfab.com." + exit 1 +fi diff --git a/ppp_installer/provider b/src/provider similarity index 100% rename from ppp_installer/provider rename to src/provider diff --git a/src/reconnect_scripts/reconnect_basehat b/src/reconnect_scripts/reconnect_basehat new file mode 100644 index 0000000..6593766 --- /dev/null +++ b/src/reconnect_scripts/reconnect_basehat @@ -0,0 +1,58 @@ +#!/bin/bash + +source functions.sh +source configs.sh + +# Pinout for base hat +POWER_OFF=26 +W_DISABLE=19 + +# Control pins +gpio -g mode $POWER_OFF out #HAT_POWER_OFF +gpio -g mode $W_DISABLE out #W_DISABLE + +gpio -g write $POWER_OFF 0 +gpio -g write $W_DISABLE 0 + + +if check_network -eq 0; then + debug "PPP chatscript is starting..."; + sudo pon; + + # check default interface + route | grep ppp | grep default > /dev/null + PPP_IS_DEFAULT=$? + if [[ $PPP_IS_DEFAULT -ne 0 ]]; then sudo route add default ppp0; debug "ppp0 is added as default interface manually."; fi +else + debug "Network registeration is failed!"; +fi + +while true; do + # Checking cellular internet connection + ping -q -c 1 -s 0 -w $PING_TIMEOUT -I ppp0 8.8.8.8 > /dev/null 2>&1 + PINGG=$? + + if [[ $PINGG -eq 0 ]]; then + printf "." + else + printf "/" + sleep $DOUBLE_CHECK_WAIT + # Checking cellular internet connection + ping -q -c 1 -s 0 -w $PING_TIMEOUT -I ppp0 8.8.8.8 > /dev/null 2>&1 + PINGG=$? + + if [[ $PINGG -eq 0 ]]; then + printf "+" + else + debug "Connection is down, reconnecting..." + if check_network -eq 0; then sleep 0.1; else debug "Network registeration is failed!"; fi + sudo pon + + # check default interface + route | grep ppp | grep default > /dev/null + PPP_IS_DEFAULT=$? + if [[ $PPP_IS_DEFAULT -ne 0 ]]; then sudo route add default ppp0; debug "ppp0 is added as default interface manually."; fi + fi + fi + sleep $INTERVAL +done diff --git a/src/reconnect_scripts/reconnect_baseshield b/src/reconnect_scripts/reconnect_baseshield new file mode 100755 index 0000000..00f80c7 --- /dev/null +++ b/src/reconnect_scripts/reconnect_baseshield @@ -0,0 +1,46 @@ +#!/bin/bash + +source functions.sh +source configs.sh + +if check_network -eq 0; then + debug "PPP chatscript is starting..."; + sudo pon; + + # check default interface + route | grep ppp | grep default > /dev/null + PPP_IS_DEFAULT=$? + if [[ $PPP_IS_DEFAULT -ne 0 ]]; then sudo route add default ppp0; debug "ppp0 is added as default interface manually."; fi +else + debug "Network registeration is failed!"; +fi + +while true; do + # Checking cellular internet connection + ping -q -c 1 -s 0 -w $PING_TIMEOUT -I ppp0 8.8.8.8 > /dev/null 2>&1 + PINGG=$? + + if [[ $PINGG -eq 0 ]]; then + printf "." + else + printf "/" + sleep $DOUBLE_CHECK_WAIT + # Checking cellular internet connection + ping -q -c 1 -s 0 -w $PING_TIMEOUT -I ppp0 8.8.8.8 > /dev/null 2>&1 + PINGG=$? + + if [[ $PINGG -eq 0 ]]; then + printf "+" + else + debug "Connection is down, reconnecting..." + if check_network -eq 0; then sleep 0.1; else debug "Network registeration is failed!"; fi + sudo pon + + # check default interface + route | grep ppp | grep default > /dev/null + PPP_IS_DEFAULT=$? + if [[ $PPP_IS_DEFAULT -ne 0 ]]; then sudo route add default ppp0; debug "ppp0 is added as default interface manually."; fi + fi + fi + sleep $INTERVAL +done diff --git a/src/reconnect_scripts/reconnect_cellulariot b/src/reconnect_scripts/reconnect_cellulariot new file mode 100644 index 0000000..be9d093 --- /dev/null +++ b/src/reconnect_scripts/reconnect_cellulariot @@ -0,0 +1,102 @@ +#!/bin/bash + +source functions.sh +source configs.sh + +# Pinout for cellulariot hat +STATUS=23 +POWERKEY=24 +ENABLE=17 + +# Configure pins +gpio -g mode $STATUS in +gpio -g mode $POWERKEY out +gpio -g mode $ENABLE out + + +function power_up_module() +{ + for i in {1..20}; do + if [[ $(gpio -g read $STATUS) -eq 1 ]]; then + debug "Module is powering up..." + + gpio -g write $POWERKEY 1 + sleep 2 + gpio -g write $POWERKEY 0 + sleep 5 + + if [[ $(gpio -g read $STATUS) -eq 0 ]]; then + debug "Module is powered up." + return 0 + break + else + debug "Module couldn't be powered up!" + sleep 2 + fi + else + debug "Module is just powered up." + return 0 + break + fi + done + return 1 +} + +function restart_power() +{ + debug "Power of the module is restarting..." + # Restart power + gpio -g write $ENABLE 1 # power is disabled + sleep 2 + gpio -g write $ENABLE 0 # power is enabled +} + +#restart_power + +# Modem power up +if power_up_module -eq 0 ; then sleep 0.1; else debug "Module couldn't be powered up! Check the hardware setup!"; fi + +if check_network -eq 0; then + debug "PPP chatscript is starting..."; + sudo pon; + + # check default interface + route | grep ppp | grep default > /dev/null + PPP_IS_DEFAULT=$? + if [[ $PPP_IS_DEFAULT -ne 0 ]]; then sudo route add default ppp0; debug "ppp0 is added as default interface manually."; fi + +else + debug "Network registeration is failed!"; +fi + +while true; do + # Checking cellular internet connection + ping -q -c 1 -s 0 -w $PING_TIMEOUT -I ppp0 8.8.8.8 > /dev/null 2>&1 + PINGG=$? + + if [[ $PINGG -eq 0 ]]; then + printf "." + else + printf "/" + sleep $DOUBLE_CHECK_WAIT + # Checking cellular internet connection + ping -q -c 1 -s 0 -w $PING_TIMEOUT -I ppp0 8.8.8.8 > /dev/null 2>&1 + PINGG=$? + + if [[ $PINGG -eq 0 ]]; then + printf "+" + else + debug "Connection is down, reconnecting..." + restart_power + if power_up_module -eq 0 ; then sleep 0.1; else debug "Module couldn't be powered up! Check the hardware setup!"; fi + if check_network -eq 0; then sleep 0.1; else debug "Network registeration is failed!"; fi + sudo pon + + # check default interface + route | grep ppp | grep default > /dev/null + PPP_IS_DEFAULT=$? + if [[ $PPP_IS_DEFAULT -ne 0 ]]; then sudo route add default ppp0; debug "ppp0 is added as default interface manually."; fi + fi + fi + sleep $INTERVAL +done diff --git a/src/reconnect_scripts/reconnect_cellulariot_app b/src/reconnect_scripts/reconnect_cellulariot_app new file mode 100644 index 0000000..b1053f1 --- /dev/null +++ b/src/reconnect_scripts/reconnect_cellulariot_app @@ -0,0 +1,102 @@ +#!/bin/bash + +source functions.sh +source configs.sh + +# Pinout for cellulariot app shield +STATUS=20 +POWERKEY=11 +DISABLE=26 + +# Configure pins +gpio -g mode $STATUS in +gpio -g mode $POWERKEY out +gpio -g mode $DISABLE out + + +function power_up_module() +{ + for i in {1..20}; do + if [[ $(gpio -g read $STATUS) -eq 1 ]]; then + debug "Module is powering up..." + + gpio -g write $POWERKEY 0 + gpio -g write $POWERKEY 1 + sleep 2 + gpio -g write $POWERKEY 0 + sleep 5 + + if [[ $(gpio -g read $STATUS) -eq 0 ]]; then + debug "Module is powered up." + return 0 + break + else + debug "Module couldn't be powered up!" + sleep 2 + fi + else + debug "Module is just powered up." + return 0 + break + fi + done + return 1 +} + +function restart_power() +{ + debug "Power of the module is restarting..." + # Restart power + gpio -g write $DISABLE 0 # power is disabled + sleep 2 + gpio -g write $DISABLE 1 # power is enabled +} + +#restart_power + +# Modem power up +if power_up_module -eq 0 ; then sleep 0.1; else debug "Module couldn't be powered up! Check the hardware setup!"; fi + +if check_network -eq 0; then + debug "PPP chatscript is starting..."; + sudo pon; + + # check default interface + route | grep ppp | grep default > /dev/null + PPP_IS_DEFAULT=$? + if [[ $PPP_IS_DEFAULT -ne 0 ]]; then sudo route add default ppp0; debug "ppp0 is added as default interface manually."; fi +else + debug "Network registeration is failed!"; +fi + +while true; do + # Checking cellular internet connection + ping -q -c 1 -s 0 -w $PING_TIMEOUT -I ppp0 8.8.8.8 > /dev/null 2>&1 + PINGG=$? + + if [[ $PINGG -eq 0 ]]; then + printf "." + else + printf "/" + sleep $DOUBLE_CHECK_WAIT + # Checking cellular internet connection + ping -q -c 1 -s 0 -w $PING_TIMEOUT -I ppp0 8.8.8.8 > /dev/null 2>&1 + PINGG=$? + + if [[ $PINGG -eq 0 ]]; then + printf "+" + else + debug "Connection is down, reconnecting..." + restart_power + if power_up_module -eq 0 ; then sleep 0.1; else debug "Module couldn't be powered up! Check the hardware setup!"; fi + if check_network -eq 0; then sleep 0.1; else debug "Network registeration is failed!"; fi + sudo pon + + # check default interface + route | grep ppp | grep default > /dev/null + PPP_IS_DEFAULT=$? + if [[ $PPP_IS_DEFAULT -ne 0 ]]; then sudo route add default ppp0; debug "ppp0 is added as default interface manually."; fi + fi + fi + sleep $INTERVAL +done diff --git a/src/reconnect_scripts/reconnect_gprsshield b/src/reconnect_scripts/reconnect_gprsshield new file mode 100644 index 0000000..a630ff2 --- /dev/null +++ b/src/reconnect_scripts/reconnect_gprsshield @@ -0,0 +1,89 @@ +#!/bin/bash + +source functions.sh +source configs.sh + +# Pinout for cellulariot hat +STATUS=19 +POWERKEY=26 + + +# Configure pins +gpio -g mode $STATUS in +gpio -g mode $POWERKEY out +gpio -g mode $ENABLE out + + +function power_up_module() +{ + for i in {1..20}; do + if [[ $(gpio -g read $STATUS) -eq 1 ]]; then + debug "Module is powering up..." + + gpio -g write $POWERKEY 0 + gpio -g write $POWERKEY 1 + sleep 2 + gpio -g write $POWERKEY 0 + sleep 5 + + if [[ $(gpio -g read $STATUS) -eq 0 ]]; then + debug "Module is powered up." + return 0 + break + else + debug "Module couldn't be powered up!" + sleep 2 + fi + else + debug "Module is just powered up." + return 0 + break + fi + done + return 1 +} + +# Modem power up +if power_up_module -eq 0 ; then sleep 0.1; else debug "Module couldn't be powered up! Check the hardware setup!"; fi + +if check_network -eq 0; then + debug "PPP chatscript is starting..."; + sudo pon; + + # check default interface + route | grep ppp | grep default > /dev/null + PPP_IS_DEFAULT=$? + if [[ $PPP_IS_DEFAULT -ne 0 ]]; then sudo route add default ppp0; debug "ppp0 is added as default interface manually."; fi +else + debug "Network registeration is failed!"; +fi + +while true; do + # Checking cellular internet connection + ping -q -c 1 -s 0 -w $PING_TIMEOUT -I ppp0 8.8.8.8 > /dev/null 2>&1 + PINGG=$? + + if [[ $PINGG -eq 0 ]]; then + printf "." + else + printf "/" + sleep $DOUBLE_CHECK_WAIT + # Checking cellular internet connection + ping -q -c 1 -s 0 -w $PING_TIMEOUT -I ppp0 8.8.8.8 > /dev/null 2>&1 + PINGG=$? + + if [[ $PINGG -eq 0 ]]; then + printf "+" + else + debug "Connection is down, reconnecting..." + if check_network -eq 0; then sleep 0.1; else debug "Network registeration is failed!"; fi + sudo pon + + # check default interface + route | grep ppp | grep default > /dev/null + PPP_IS_DEFAULT=$? + if [[ $PPP_IS_DEFAULT -ne 0 ]]; then sudo route add default ppp0; debug "ppp0 is added as default interface manually."; fi + fi + fi + sleep $INTERVAL +done diff --git a/src/reconnect_scripts/reconnect_tracker b/src/reconnect_scripts/reconnect_tracker new file mode 100644 index 0000000..cda4543 --- /dev/null +++ b/src/reconnect_scripts/reconnect_tracker @@ -0,0 +1,103 @@ +#!/bin/bash + +source functions.sh +source configs.sh + +# Pinout for cellulariot app shield +STATUS=23 +POWERKEY=24 +DISABLE=17 + +# Configure pins +gpio -g mode $STATUS in +gpio -g mode $POWERKEY out +gpio -g mode $DISABLE out + + +function power_up_module() +{ + for i in {1..20}; do + if [[ $(gpio -g read $STATUS) -eq 1 ]]; then + debug "Module is powering up..." + + gpio -g write $POWERKEY 0 + gpio -g write $POWERKEY 1 + sleep 2 + gpio -g write $POWERKEY 0 + sleep 5 + + if [[ $(gpio -g read $STATUS) -eq 0 ]]; then + debug "Module is powered up." + return 0 + break + else + debug "Module couldn't be powered up!" + sleep 2 + fi + else + debug "Module is just powered up." + return 0 + break + fi + done + return 1 +} + +function restart_power() +{ + debug "Power of the module is restarting..." + # Restart power + gpio -g write $DISABLE 0 # power is disabled + sleep 2 + gpio -g write $DISABLE 1 # power is enabled +} + +#restart_power + +# Modem power up +if power_up_module -eq 0 ; then sleep 0.1; else debug "Module couldn't be powered up! Check the hardware setup!"; fi + +if check_network -eq 0; then + debug "PPP chatscript is starting..."; + sudo pon; + + # check default interface + route | grep ppp | grep default > /dev/null + PPP_IS_DEFAULT=$? + if [[ $PPP_IS_DEFAULT -ne 0 ]]; then sudo route add default ppp0; debug "ppp0 is added as default interface manually."; fi +else + debug "Network registeration is failed!"; +fi + +while true; do + # Checking cellular internet connection + ping -q -c 1 -s 0 -w $PING_TIMEOUT -I ppp0 8.8.8.8 > /dev/null 2>&1 + PINGG=$? + + if [[ $PINGG -eq 0 ]]; then + printf "." + else + printf "/" + sleep $DOUBLE_CHECK_WAIT + # Checking cellular internet connection + ping -q -c 1 -s 0 -w $PING_TIMEOUT -I ppp0 8.8.8.8 > /dev/null 2>&1 + PINGG=$? + + if [[ $PINGG -eq 0 ]]; then + printf "+" + else + debug "Connection is down, reconnecting..." + restart_power + if power_up_module -eq 0 ; then sleep 0.1; else debug "Module couldn't be powered up! Check the hardware setup!"; fi + if check_network -eq 0; then sleep 0.1; else debug "Network registeration is failed!"; fi + sudo pon + + # check default interface + route | grep ppp | grep default > /dev/null + PPP_IS_DEFAULT=$? + if [[ $PPP_IS_DEFAULT -ne 0 ]]; then sudo route add default ppp0; debug "ppp0 is added as default interface manually."; fi + fi + fi + sleep $INTERVAL +done +