From c905901dd051feb9dc9afee246a1f3aff5eb9561 Mon Sep 17 00:00:00 2001 From: Droid Sitebots Date: Wed, 5 May 2021 11:37:38 +0200 Subject: [PATCH 1/6] jetson install & service install --- ppp_install_jetson.sh | 50 ++++++++++++- src/jetson_configure_modem.sh | 85 +++++++++++++++++++++++ src/jetson_ppp_connection_manager.service | 13 ++++ src/jetson_ppp_connection_manager.sh | 20 ++++++ 4 files changed, 166 insertions(+), 2 deletions(-) create mode 100644 src/jetson_configure_modem.sh create mode 100644 src/jetson_ppp_connection_manager.service create mode 100644 src/jetson_ppp_connection_manager.sh diff --git a/ppp_install_jetson.sh b/ppp_install_jetson.sh index a1d3474..d5334e8 100755 --- a/ppp_install_jetson.sh +++ b/ppp_install_jetson.sh @@ -11,8 +11,8 @@ 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" +MANAGER_SCRIPT_NAME="jetson_ppp_connection_manager.sh" +SERVICE_NAME="jetson_ppp_connection_manager.service" YELLOW='\033[1;33m' RED='\033[0;31m' @@ -137,5 +137,51 @@ 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/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..." + + 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 + + # APN Configuration + sed -i "s/SIM_APN/$carrierapn/" jetson_configure_modem.sh + + mv functions.sh $PPP_PATH + mv configs.sh $PPP_PATH + mv jetson_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 reboot diff --git a/src/jetson_configure_modem.sh b/src/jetson_configure_modem.sh new file mode 100644 index 0000000..6a67cf0 --- /dev/null +++ b/src/jetson_configure_modem.sh @@ -0,0 +1,85 @@ +#!/bin/bash + +source functions.sh + +# only for "2: 3G, 4G/LTE Base Shield" + +# default arguments +APN=${SIM_APN:-super} + +### 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 +# ON JETSON ONLY THE vendor:product ID is SHOWN +lsusb | grep 2c7c >> /dev/null +IS_QUECTEL=$? + + +# Modem Mode Configuration +# ------------------------ +# For Quectel +if [[ $IS_QUECTEL -eq 0 ]]; then + + # Quectel EC25-E + lsusb | grep 0125 > /dev/null + MODEL_EC25E=$? + + if [[ $MODEL_EC25E -eq 0 ]]; then + + # 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 + +# 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 registration is failed!. Modem configuration is unsuccesfully ended!"; exit 1; fi + diff --git a/src/jetson_ppp_connection_manager.service b/src/jetson_ppp_connection_manager.service new file mode 100644 index 0000000..7f657ad --- /dev/null +++ b/src/jetson_ppp_connection_manager.service @@ -0,0 +1,13 @@ +[Unit] +Description=Jetson PPP Connection Manager +After=network.target + +[Service] +ExecStart=/bin/bash jetson_ppp_connection_manager.sh +WorkingDirectory=/opt/sixfab/ppp_connection_manager +StandardOutput=inherit +StandardError=inherit +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/src/jetson_ppp_connection_manager.sh b/src/jetson_ppp_connection_manager.sh new file mode 100644 index 0000000..802fc8d --- /dev/null +++ b/src/jetson_ppp_connection_manager.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +source functions.sh + +for i in {1..4}; do + bash jetson_configure_modem.sh + + if [[ $MODEM_CONFIG -eq 0 ]]; then + break + fi + sleep 1 +done + +if [[ $MODEM_CONFIG -eq 0 ]]; then + bash ppp_reconnect.sh +else + debug "Modem configuration is failed multiple times!" + debug "Checkout other troubleshooting steps on docs.sixfab.com." + exit 1 +fi From 009351176829909fd7a33d3206b747ecaafeef39 Mon Sep 17 00:00:00 2001 From: Droid Sitebots Date: Wed, 5 May 2021 11:43:02 +0200 Subject: [PATCH 2/6] using fork adress & unique service --- jetson_ppp_connection_manager.service | 0 ppp_install_jetson.sh | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 jetson_ppp_connection_manager.service diff --git a/jetson_ppp_connection_manager.service b/jetson_ppp_connection_manager.service new file mode 100644 index 0000000..e69de29 diff --git a/ppp_install_jetson.sh b/ppp_install_jetson.sh index d5334e8..0b18b9e 100755 --- a/ppp_install_jetson.sh +++ b/ppp_install_jetson.sh @@ -6,7 +6,7 @@ SIXFAB_PATH="/opt/sixfab" PPP_PATH="/opt/sixfab/ppp_connection_manager" -REPO_PATH="https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer" +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" From 95af3d1371422fd676a99f8518ce856cf1a75c1d Mon Sep 17 00:00:00 2001 From: Droid Sitebots Date: Thu, 6 May 2021 11:36:36 +0200 Subject: [PATCH 3/6] final test & bugfixes --- jetson_ppp_connection_manager.service | 0 ppp_install_jetson.sh | 32 +++++++++++-------- src/jetson_configure_modem.sh | 39 +++-------------------- src/jetson_ppp_connection_manager.service | 9 ++++-- src/jetson_ppp_connection_manager.sh | 10 +----- 5 files changed, 31 insertions(+), 59 deletions(-) delete mode 100644 jetson_ppp_connection_manager.service diff --git a/jetson_ppp_connection_manager.service b/jetson_ppp_connection_manager.service deleted file mode 100644 index e69de29..0000000 diff --git a/ppp_install_jetson.sh b/ppp_install_jetson.sh index 0b18b9e..25620b3 100755 --- a/ppp_install_jetson.sh +++ b/ppp_install_jetson.sh @@ -3,14 +3,16 @@ # 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" -RECONNECT_SCRIPT_NAME="ppp_reconnect.sh" MANAGER_SCRIPT_NAME="jetson_ppp_connection_manager.sh" SERVICE_NAME="jetson_ppp_connection_manager.service" @@ -139,10 +141,10 @@ fi while [ 1 ] do - colored_echo "Do you want to activate auto connect/reconnect service at R.Pi boot up? [Y/n]" + colored_echo "Do you want to activate auto connect service at boot up? [Y/n]" read auto_reconnect - colored_echo "You chose $auto_reconnect" ${GREEN} + colored_echo "You chose $auto_connect" ${GREEN} case $auto_reconnect in [Yy]* ) colored_echo "Copying setup file..." @@ -164,18 +166,20 @@ do # APN Configuration sed -i "s/SIM_APN/$carrierapn/" jetson_configure_modem.sh + + # Devicename + sed -i "s/DEVICE/$devicename/" jetson_configure_modem.sh - mv functions.sh $PPP_PATH - mv configs.sh $PPP_PATH - mv jetson_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;; + 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/ + + 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;; diff --git a/src/jetson_configure_modem.sh b/src/jetson_configure_modem.sh index 6a67cf0..29ab887 100644 --- a/src/jetson_configure_modem.sh +++ b/src/jetson_configure_modem.sh @@ -5,17 +5,18 @@ source functions.sh # only for "2: 3G, 4G/LTE Base Shield" # default arguments -APN=${SIM_APN:-super} +APN=SIM_APN +PORT=/dev/DEVICE ### Modem configuration for RMNET/PPP mode ################################## debug "Checking APN and Modem Modem..." # APN Configuration # ----------------- -atcom "AT+CGDCONT?" | grep $APN > /dev/null +atcom -p $PORT "AT+CGDCONT?" | grep $APN > /dev/null if [[ $? -ne 0 ]]; then - atcom "AT+CGDCONT=1,\"IPV4V6\",\"$APN\"" + atcom -p $PORT "AT+CGDCONT=1,\"IPV4V6\",\"$APN\"" debug "APN is updated." fi @@ -37,38 +38,8 @@ if [[ $IS_QUECTEL -eq 0 ]]; then if [[ $MODEL_EC25E -eq 0 ]]; then # EC25 or derives. - atcom "AT+QCFG=\"usbnet\"" | grep 0 > /dev/null + sudo pon - 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 # Unknown diff --git a/src/jetson_ppp_connection_manager.service b/src/jetson_ppp_connection_manager.service index 7f657ad..b816344 100644 --- a/src/jetson_ppp_connection_manager.service +++ b/src/jetson_ppp_connection_manager.service @@ -1,13 +1,18 @@ [Unit] Description=Jetson PPP Connection Manager -After=network.target +# NEEDS TO BE CHANGED TO YOUR DEVICE +After=dev-sixfab03.device +# OR +# After=network.target [Service] +Type=simple ExecStart=/bin/bash jetson_ppp_connection_manager.sh WorkingDirectory=/opt/sixfab/ppp_connection_manager StandardOutput=inherit StandardError=inherit -Restart=always +RemainAfterExit=true +Restart=on-failure [Install] WantedBy=multi-user.target diff --git a/src/jetson_ppp_connection_manager.sh b/src/jetson_ppp_connection_manager.sh index 802fc8d..6e4227f 100644 --- a/src/jetson_ppp_connection_manager.sh +++ b/src/jetson_ppp_connection_manager.sh @@ -9,12 +9,4 @@ for i in {1..4}; do break fi sleep 1 -done - -if [[ $MODEM_CONFIG -eq 0 ]]; then - bash ppp_reconnect.sh -else - debug "Modem configuration is failed multiple times!" - debug "Checkout other troubleshooting steps on docs.sixfab.com." - exit 1 -fi +done \ No newline at end of file From b81b3e676d2023f28a2fe5bd74bc0d57ac3ea026 Mon Sep 17 00:00:00 2001 From: Droid Sitebots Date: Thu, 6 May 2021 12:11:49 +0200 Subject: [PATCH 4/6] jetson sixfab connect on boot --- src/jetson_ppp_connection_manager.service | 1 + src/jetson_ppp_connection_manager.sh | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/jetson_ppp_connection_manager.service b/src/jetson_ppp_connection_manager.service index b816344..1d7134e 100644 --- a/src/jetson_ppp_connection_manager.service +++ b/src/jetson_ppp_connection_manager.service @@ -13,6 +13,7 @@ StandardOutput=inherit StandardError=inherit RemainAfterExit=true Restart=on-failure +RestartSec=5s [Install] WantedBy=multi-user.target diff --git a/src/jetson_ppp_connection_manager.sh b/src/jetson_ppp_connection_manager.sh index 6e4227f..f31d5b0 100644 --- a/src/jetson_ppp_connection_manager.sh +++ b/src/jetson_ppp_connection_manager.sh @@ -4,9 +4,18 @@ source functions.sh for i in {1..4}; do bash jetson_configure_modem.sh + WAS_SUCCESSFUL=$? + + + if [[ $WAS_SUCCESSFUL -eq 0 ]]; then + debug "Jetson configure modem successful" + else + debug "Jetson configure modem failed: Exit code = $WAS_SUCCESSFUL" + exit 1 + fi if [[ $MODEM_CONFIG -eq 0 ]]; then break fi sleep 1 -done \ No newline at end of file +done From 18ea0eed3fc0ea3f26e12e70f26ae78c762ce12a Mon Sep 17 00:00:00 2001 From: Droid Sitebots Date: Thu, 6 May 2021 12:23:52 +0200 Subject: [PATCH 5/6] adding udev rule install for sixfab with quectel EC-25-E --- ppp_install_jetson.sh | 5 +++++ src/20-usb-bus.rules | 3 +++ 2 files changed, 8 insertions(+) create mode 100644 src/20-usb-bus.rules diff --git a/ppp_install_jetson.sh b/ppp_install_jetson.sh index 25620b3..39c3f0e 100755 --- a/ppp_install_jetson.sh +++ b/ppp_install_jetson.sh @@ -15,6 +15,7 @@ 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' @@ -163,6 +164,9 @@ do 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 @@ -175,6 +179,7 @@ do 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 diff --git a/src/20-usb-bus.rules b/src/20-usb-bus.rules new file mode 100644 index 0000000..2f4de32 --- /dev/null +++ b/src/20-usb-bus.rules @@ -0,0 +1,3 @@ +# UDEV RULE FOR SIXFAB WITH EC-25-E +SUBSYSTEMS=="usb", ENV{ID_USB_INTERFACE_NUM}="$attr{bInterfaceNumber}" +SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", SYMLINK+="sixfab$env{ID_USB_INTERFACE_NUM}", TAG+="systemd" From cc99c34a5e9ca748f707f522a6c72436b8dc326c Mon Sep 17 00:00:00 2001 From: Droid Sitebots Date: Tue, 25 May 2021 09:04:38 +0200 Subject: [PATCH 6/6] fixing install functions --- ppp_install_jetson.sh | 1 + src/functions.sh | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ppp_install_jetson.sh b/ppp_install_jetson.sh index 39c3f0e..618943e 100755 --- a/ppp_install_jetson.sh +++ b/ppp_install_jetson.sh @@ -173,6 +173,7 @@ do # 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 diff --git a/src/functions.sh b/src/functions.sh index d3e28c7..fb22d49 100644 --- a/src/functions.sh +++ b/src/functions.sh @@ -10,6 +10,9 @@ CYAN='\033[0;36m' PURPLE='\033[0;35m' SET='\033[0m' +# default arguments +PORT=/dev/DEVICE + function debug { ECHO_PARAM=${2:-''} @@ -25,14 +28,14 @@ function check_network() NETWORK_OK=0 debug "SIM Status: " "-n" # no line break - atcom AT+CPIN? | grep "CPIN: READY" + atcom -p $PORT AT+CPIN? | grep "CPIN: READY" SIM_READY=$? - if [[ $SIM_READY -ne 0 ]]; then atcom AT+CPIN? | grep "CPIN:"; fi + if [[ $SIM_READY -ne 0 ]]; then atcom -p $PORT AT+CPIN? | grep "CPIN:"; fi debug "Network Registration Status: " "-n" # no line break - NR_TEXT=`atcom AT+CREG? | grep "CREG:"` + NR_TEXT=`atcom -p $PORT AT+CREG? | grep "CREG:"` echo $NR_TEXT # For super SIM