From 5afb4a826e8d0f127f28ffce05f7df5899175887 Mon Sep 17 00:00:00 2001 From: fujr Date: Sat, 11 May 2024 14:59:54 +0800 Subject: [PATCH] fix: endless loop ,use better way to get dial driver --- luci-app-modem/root/etc/init.d/modem | 53 +++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/luci-app-modem/root/etc/init.d/modem b/luci-app-modem/root/etc/init.d/modem index b917635..aa9558e 100755 --- a/luci-app-modem/root/etc/init.d/modem +++ b/luci-app-modem/root/etc/init.d/modem @@ -509,6 +509,50 @@ get_mode() echo "$mode" } +#获取拨号驱动 +#$1:模块号 +get_driver() +{ + local modem_no="$1" + local phy_id=$(uci -q get modem.modem${modem_no}.path) + for i in $(find $phy_id -name driver);do + lsfile=$(ls -l $i) + type=${lsfile:0:1} + if [ "$type" == "l" ];then + link=$(basename $(ls -l $i | awk '{print $11}')) + case $link in + "qmi_wwan"*) + mode="qmi" + break + ;; + "cdc_mbim") + mode="mbim" + break + ;; + "cdc_ncm") + mode="ncm" + break + ;; + "cdc_ether") + mode="ecm" + break + ;; + "rndis_host") + mode="rndis" + break + ;; + *) + if [ -z "$mode" ]; then + mode="unknown" + fi + ;; + esac + fi + done + echo "$mode" + +} + #网络预设 connect_presets() { @@ -621,11 +665,18 @@ dial() #获取模组的拨号模式 local mode - while true; do + mode=$(get_driver ${modem_no}) + if [ "$mode" == "unknown" ]; then + time_start = $(date +%s) + timeout = 30 + timeout=$(($time_start + $timeout)) + while [ $(date +%s) -lt $timeout ]; do mode=$(get_mode ${modem_no}) [ -n "$mode" ] && [ "$mode" != "unknown" ] && break sleep 5s done + fi + #查看该移动网络是否已经有拨号配置在运行 mkdir -m 0755 -p "${MODEM_RUNDIR}"