aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi.dcr@tutanota.com>2023-03-13 02:55:20 +0100
committerXavier Del Campo Romero <xavi.dcr@tutanota.com>2023-03-13 02:55:33 +0100
commit2fa7dd2eb1a2121d411f9a5d5a31a647af16df74 (patch)
treebb242e3e0e57858af8a989631e49c3043cf81af2
parent4911e897496d92af6b2d5105a7581bee4da8c5bf (diff)
Add modem-restart
-rwxr-xr-xmodem-restart38
-rw-r--r--modem-restart.service11
2 files changed, 49 insertions, 0 deletions
diff --git a/modem-restart b/modem-restart
new file mode 100755
index 0000000..422ca54
--- /dev/null
+++ b/modem-restart
@@ -0,0 +1,38 @@
+#! /bin/sh
+
+is_modem_available()
+{
+ if [ -z "$(lsusb | grep "2c7c:0125")" ]; then
+ return 1
+ fi
+
+ return 0
+}
+
+is_data_available()
+{
+ if ! nmcli c show --active | grep -e internet -e gsm > /dev/null; then
+ return 1
+ fi
+
+ return 0
+}
+
+TRY=0
+while :; do
+ if ! is_modem_available ; then
+ TRY=$((TRY + 1))
+ echo $(date) Restarting modem, $TRY try
+ systemctl restart eg25-manager
+ systemd-inhibit --what=sleep --why="Modem reset" sleep 60
+ elif [ $TRY -ne 0 ]; then
+ echo $(date): Modem restarted successfully
+ TRY=0
+ elif ! is_data_available; then
+ echo $(date): Restarting mobile data
+ systemd-inhibit --what=sleep --why="Restart mobile data" sleep 5
+ nmcli c up internet
+ fi
+
+ sleep 5
+done
diff --git a/modem-restart.service b/modem-restart.service
new file mode 100644
index 0000000..eb44442
--- /dev/null
+++ b/modem-restart.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Restarts eg25-manager if USB connection to the Quectel EG25 modem is lost
+
+[Service]
+User=root
+WorkingDirectory=/
+ExecStart=modem-restart
+Restart=always
+
+[Install]
+WantedBy=multi-user.target