diff --git a/luci/luci-app-qmodem/luasrc/model/cbi/qmodem/dial_config.lua b/luci/luci-app-qmodem/luasrc/model/cbi/qmodem/dial_config.lua index c6aa731..59f49ed 100644 --- a/luci/luci-app-qmodem/luasrc/model/cbi/qmodem/dial_config.lua +++ b/luci/luci-app-qmodem/luasrc/model/cbi/qmodem/dial_config.lua @@ -73,6 +73,10 @@ extend_prefix = s:taboption("advanced", Flag, "extend_prefix", translate("Extend extend_prefix.description = translate("Once checking, the prefix will be apply to lan zone") extend_prefix.default = "0" +soft_reboot = s:taboption("advanced", Flag, "soft_reboot", translate("Soft Reboot")) +soft_reboot.description = translate("enable modem soft reboot") +soft_reboot.default = "0" + -- 网络类型 pdp_type= s:taboption("advanced", ListValue, "pdp_type", translate("PDP Type")) pdp_type.default = "ipv4v6" diff --git a/luci/luci-app-qmodem/luasrc/model/cbi/qmodem/modem_config.lua b/luci/luci-app-qmodem/luasrc/model/cbi/qmodem/modem_config.lua index 5a2f4b0..2906ebb 100644 --- a/luci/luci-app-qmodem/luasrc/model/cbi/qmodem/modem_config.lua +++ b/luci/luci-app-qmodem/luasrc/model/cbi/qmodem/modem_config.lua @@ -69,6 +69,9 @@ name.cfgvalue = function(t, n) return Value.cfgvalue(t, n) or "-" end +soft_reboot = s:option(Flag, "soft_reboot", translate("Soft Reboot")) +soft_reboot.default = "0" + -- PDP Context Index define_connect = s:option(Value, "define_connect", translate("PDP Context Index")) define_connect.default = "1" diff --git a/luci/luci-app-qmodem/po/template/qmodem.po b/luci/luci-app-qmodem/po/template/qmodem.po index b4a988d..41baac7 100644 --- a/luci/luci-app-qmodem/po/template/qmodem.po +++ b/luci/luci-app-qmodem/po/template/qmodem.po @@ -48,6 +48,9 @@ msgstr "" msgid "Once checking, the prefix will be apply to lan zone" msgstr "" +msgid "enable modem soft reboot" +msgstr "" + msgid "PDP Type" msgstr "" diff --git a/luci/luci-app-qmodem/po/zh-cn/qmodem.po b/luci/luci-app-qmodem/po/zh-cn/qmodem.po index 9dd62c1..9f60990 100644 --- a/luci/luci-app-qmodem/po/zh-cn/qmodem.po +++ b/luci/luci-app-qmodem/po/zh-cn/qmodem.po @@ -64,6 +64,9 @@ msgstr "扩展前缀" msgid "Once checking, the prefix will be apply to lan zone" msgstr "启用后,该接口的前缀会被通告至Lan区域" +msgid "enable modem soft reboot" +msgstr "启用模组软重启" + msgid "PDP Type" msgstr "PDP类型" diff --git a/luci/luci-app-qmodem/po/zh_Hans/qmodem.po b/luci/luci-app-qmodem/po/zh_Hans/qmodem.po index 9dd62c1..9f60990 100644 --- a/luci/luci-app-qmodem/po/zh_Hans/qmodem.po +++ b/luci/luci-app-qmodem/po/zh_Hans/qmodem.po @@ -64,6 +64,9 @@ msgstr "扩展前缀" msgid "Once checking, the prefix will be apply to lan zone" msgstr "启用后,该接口的前缀会被通告至Lan区域" +msgid "enable modem soft reboot" +msgstr "启用模组软重启" + msgid "PDP Type" msgstr "PDP类型" diff --git a/luci/luci-app-qmodem/root/etc/init.d/qmodem_reboot b/luci/luci-app-qmodem/root/etc/init.d/qmodem_reboot old mode 100644 new mode 100755 index e678e50..612f825 --- a/luci/luci-app-qmodem/root/etc/init.d/qmodem_reboot +++ b/luci/luci-app-qmodem/root/etc/init.d/qmodem_reboot @@ -1,9 +1,7 @@ #!/bin/sh /etc/rc.common -# Copyright (C) 2006 OpenWrt.org -USE_PROCD=1 - START=95 STOP=0 +USE_PROCD=1 start_service() { : @@ -12,28 +10,25 @@ start_service() { stop_service() { procd_set_param timeout 30 config_load qmodem - config_foreach _reboot_usb modem-device + config_foreach _soft_reboot modem-device } -_reboot_usb() { - config_get data_interface $1 data_interface - if [ "$data_interface" == "usb" ]; then - config_get name $1 name - if [ "$name" == "fm350-gl" ]; then - config_get at_port $1 at_port +_soft_reboot() { + config_get soft_reboot $1 soft_reboot + if [ "$soft_reboot" == "1" ]; then + config_get at_port $1 at_port + response=$(tom_modem -d "$at_port" -o a -c "AT+CFUN=1,1") + retries=3 + while ! echo "$response" | grep -qi "ok" && [ $retries -gt 0 ]; do + sleep 1 response=$(tom_modem -d "$at_port" -o a -c "AT+CFUN=1,1") - retries=3 - while ! echo "$response" | grep -qi "ok" && [ $retries -gt 0 ]; do - sleep 1 - response=$(tom_modem -d "$at_port" -o a -c "AT+CFUN=1,1") - retries=$((retries - 1)) - done - max_retries=15 - while [ -e "/dev/$at_port" ] && [ $max_retries -gt 0 ]; do - sleep 1 - max_retries=$((max_retries - 1)) - done - fi + retries=$((retries - 1)) + done + max_retries=15 + while [ -e "$at_port" ] && [ $max_retries -gt 0 ]; do + sleep 1 + max_retries=$((max_retries - 1)) + done fi } \ No newline at end of file diff --git a/luci/luci-app-qmodem/root/etc/uci-defaults/luci-app-qmodem b/luci/luci-app-qmodem/root/etc/uci-defaults/luci-app-qmodem index ee1d75b..69cfb7b 100644 --- a/luci/luci-app-qmodem/root/etc/uci-defaults/luci-app-qmodem +++ b/luci/luci-app-qmodem/root/etc/uci-defaults/luci-app-qmodem @@ -1,8 +1,7 @@ #!/bin/sh # Copyright (C) 2024 Tom -/etc/init.d/modeminit enable -/etc/init.d/modem enable +/etc/init.d/qmodem_reboot enable uci -q batch <<-EOF >/dev/null delete ucitrack.@qmodem[-1] diff --git a/luci/luci-app-qmodem/root/usr/share/qmodem/modem_scan.sh b/luci/luci-app-qmodem/root/usr/share/qmodem/modem_scan.sh index c735d10..090c9b8 100755 --- a/luci/luci-app-qmodem/root/usr/share/qmodem/modem_scan.sh +++ b/luci/luci-app-qmodem/root/usr/share/qmodem/modem_scan.sh @@ -412,6 +412,7 @@ add() set qmodem.$section_name.path="$modem_path" set qmodem.$section_name.data_interface="$slot_type" set qmodem.$section_name.enable_dial="1" +set qmodem.$section_name.soft_reboot="0" set qmodem.$section_name.pdp_type="ip" set qmodem.$section_name.state="enabled" set qmodem.$section_name.metric=$metric