This commit is contained in:
ling 2024-03-24 00:38:06 +08:00
parent e8394c927d
commit 7ea94507fd
14 changed files with 241 additions and 144 deletions

View File

@ -19,6 +19,8 @@ LUCI_DEPENDS:=+luci-compat +kmod-usb-net +kmod-usb-net-cdc-ether +kmod-usb-acm
+kmod-pcie_mhi \ +kmod-pcie_mhi \
+pciutils \ +pciutils \
+quectel-CM-5G \ +quectel-CM-5G \
+modemmanager \
+luci-proto-modemmanager \
+sms-tool \ +sms-tool \
+jq +grep\ +jq +grep\

View File

@ -69,18 +69,19 @@ getMobileNetwork()
--------advanced-------- --------advanced--------
-- 拨号工具 -- 拨号工具
dial_tool = s:taboption("advanced", Value, "dial_tool", translate("Dial Tool")) dial_tool = s:taboption("advanced", ListValue, "dial_tool", translate("Dial Tool"))
dial_tool.rmempty = true dial_tool.rmempty = true
dial_tool:value("", translate("Auto Choose")) dial_tool:value("", translate("Auto Choose"))
dial_tool:value("quectel-CM", translate("quectel-CM")) dial_tool:value("quectel-CM", translate("quectel-CM"))
dial_tool:value("mmcli", translate("mmcli"))
-- 网络类型 -- 网络类型
pdp_type= s:taboption("advanced", ListValue, "pdp_type", translate("PDP Type")) pdp_type= s:taboption("advanced", ListValue, "pdp_type", translate("PDP Type"))
pdp_type.default = "ipv4_ipv6" pdp_type.default = "ipv4v6"
pdp_type.rmempty = false pdp_type.rmempty = false
pdp_type:value("ipv4", translate("IPv4")) pdp_type:value("ipv4", translate("IPv4"))
pdp_type:value("ipv6", translate("IPv6")) pdp_type:value("ipv6", translate("IPv6"))
pdp_type:value("ipv4_ipv6", translate("IPv4/IPv6")) pdp_type:value("ipv4v6", translate("IPv4/IPv6"))
-- 接入点 -- 接入点
apn = s:taboption("advanced", Value, "apn", translate("APN")) apn = s:taboption("advanced", Value, "apn", translate("APN"))
@ -99,13 +100,12 @@ username.rmempty = true
password = s:taboption("advanced", Value, "password", translate("PAP/CHAP Password")) password = s:taboption("advanced", Value, "password", translate("PAP/CHAP Password"))
password.rmempty = true password.rmempty = true
auth = s:taboption("advanced", Value, "auth", translate("Authentication Type")) auth = s:taboption("advanced", ListValue, "auth", translate("Authentication Type"))
auth.default = "" auth.default = "none"
auth.rmempty = true auth.rmempty = false
auth:value("", translate("NONE")) auth:value("none", translate("NONE"))
auth:value("both", "PAP/CHAP (both)") auth:value("both", translate("PAP/CHAP (both)"))
auth:value("pap", "PAP") auth:value("pap", "PAP")
auth:value("chap", "CHAP") auth:value("chap", "CHAP")
-- auth:value("none", "NONE")
return m return m

View File

@ -63,14 +63,19 @@ o = s:option(DummyValue, "dial_tool", translate("Dial Tool"))
o.cfgvalue = function(t, n) o.cfgvalue = function(t, n)
local dial_tool = (Value.cfgvalue(t, n) or "") local dial_tool = (Value.cfgvalue(t, n) or "")
if dial_tool == "" then if dial_tool == "" then
dial_tool=translate("Auto Choose") dial_tool = translate("Auto Choose")
end end
return dial_tool return dial_tool
end end
o = s:option(DummyValue, "pdp_type", translate("PDP Type")) o = s:option(DummyValue, "pdp_type", translate("PDP Type"))
o.cfgvalue = function(t, n) o.cfgvalue = function(t, n)
local pdp_type = (Value.cfgvalue(t, n) or ""):gsub("_","/"):upper():gsub("V","v") local pdp_type = (Value.cfgvalue(t, n) or "")
if pdp_type == "ipv4v6" then
pdp_type = translate("IPv4/IPv6")
else
pdp_type = pdp_type:gsub("_","/"):upper():gsub("V","v")
end
return pdp_type return pdp_type
end end
@ -78,7 +83,7 @@ o = s:option(DummyValue, "apn", translate("APN"))
o.cfgvalue = function(t, n) o.cfgvalue = function(t, n)
local apn = (Value.cfgvalue(t, n) or "") local apn = (Value.cfgvalue(t, n) or "")
if apn == "" then if apn == "" then
apn=translate("Auto Choose") apn = translate("Auto Choose")
end end
return apn return apn
end end

View File

@ -35,13 +35,10 @@
//获取快捷AT命令选择框元素 //获取快捷AT命令选择框元素
command_select = document.getElementById('command_select'); command_select = document.getElementById('command_select');
//点击快捷AT命令时触发解决选择第一条命令的问题) //点击快捷AT命令时触发解决情况再选的问题)
command_select.addEventListener("click", function() { command_select.addEventListener("click", function() {
//选择框不为空,且选中的为第一个
if (command_select.options.length != 0 && command_select.selectedIndex == 0) {
//自动填写到命令输入框 //自动填写到命令输入框
copy_to_input(); copy_to_input();
}
}); });
//获取网络偏好选项元素 //获取网络偏好选项元素
@ -354,7 +351,7 @@
} }
// 设置拨号模式信息 // 设置拨号模式信息
function set_mode_info(mode_info) function set_mode_info(mode_info,first_cache)
{ {
//获取当前拨号模式 //获取当前拨号模式
var current_mode=mode_info["mode"]; var current_mode=mode_info["mode"];
@ -367,8 +364,7 @@
//设置当前拨号模式 //设置当前拨号模式
document.getElementById('current_mode').innerHTML=current_mode_view; document.getElementById('current_mode').innerHTML=current_mode_view;
var first_element=document.getElementById('first_checked'); if (first_cache)
if (first_element.value=="true")
{ {
//设置支持的拨号模式 //设置支持的拨号模式
var mode_option_view=''; var mode_option_view='';
@ -405,8 +401,6 @@
XHR.get('<%=luci.dispatcher.build_url("admin", "network", "modem", "set_mode")%>', {"port":at_port,"mode_config":mode_config}, XHR.get('<%=luci.dispatcher.build_url("admin", "network", "modem", "set_mode")%>', {"port":at_port,"mode_config":mode_config},
function(x, data) function(x, data)
{ {
console.log(data);
//获取模组拨号模式 //获取模组拨号模式
var current_mode=data; var current_mode=data;
@ -448,7 +442,7 @@
} }
// 设置网络偏好信息 // 设置网络偏好信息
function set_network_prefer_info(network_prefer_info) function set_network_prefer_info(network_prefer_info,first_cache)
{ {
//获取模组网络偏好 //获取模组网络偏好
var network_prefer=network_prefer_info["network_prefer"]; var network_prefer=network_prefer_info["network_prefer"];
@ -460,8 +454,7 @@
document.getElementById('current_prefer').innerHTML=current_prefer_view; document.getElementById('current_prefer').innerHTML=current_prefer_view;
//设置偏好选项和复选框 //设置偏好选项和复选框
var first_element=document.getElementById('first_checked'); if (first_cache)
if (first_element.value=="true")
{ {
if (network_prefer["3G"]&&network_prefer["4G"]&&network_prefer["5G"]) if (network_prefer["3G"]&&network_prefer["4G"]&&network_prefer["5G"])
{ {
@ -539,7 +532,7 @@
} }
// 获取模组调试信息 // 获取模组调试信息
function get_modem_debug_info(params) function get_modem_debug_info(debug_params)
{ {
//获取选中的模组 //获取选中的模组
var at_port = document.getElementById("modem_select").value; var at_port = document.getElementById("modem_select").value;
@ -548,7 +541,6 @@
XHR.get('<%=luci.dispatcher.build_url("admin", "network", "modem", "get_modem_debug_info")%>', {"port":at_port}, XHR.get('<%=luci.dispatcher.build_url("admin", "network", "modem", "get_modem_debug_info")%>', {"port":at_port},
function(x, data) function(x, data)
{ {
var mode_info=data["mode_info"]; var mode_info=data["mode_info"];
var network_prefer_info=data["network_prefer_info"]; var network_prefer_info=data["network_prefer_info"];
if (Object.keys(mode_info).length==0||Object.keys(network_prefer_info).length==0) { if (Object.keys(mode_info).length==0||Object.keys(network_prefer_info).length==0) {
@ -558,13 +550,13 @@
} }
//设置模式信息 //设置模式信息
set_mode_info(mode_info); set_mode_info(mode_info,debug_params.first_cache);
//设置网络偏好信息 //设置网络偏好信息
set_network_prefer_info(network_prefer_info); set_network_prefer_info(network_prefer_info,debug_params.first_cache);
//设置第一次获取数据标志 //设置第一次获取数据标志
document.getElementById('first_checked').value=false; debug_params.first_cache=false;
//显示全功能界面 //显示全功能界面
all_function_view(); all_function_view();
@ -574,42 +566,46 @@
// 定时触发更新AT串口 // 定时触发更新AT串口
XHR.poll(5,'<%=luci.dispatcher.build_url("admin", "network", "modem", "get_at_port")%>', null, XHR.poll(5,'<%=luci.dispatcher.build_url("admin", "network", "modem", "get_at_port")%>', null,
function(x, data) (function()
{ {
var at_ports=data["at_ports"]; //缓存当前选择的模组
var translation=data["translation"]; var modem_select_cache="";
var debug_params={first_cache:true};
//设置AT串口选项 return function(x, data)
set_at_port(at_ports,translation);
//获取快捷命令
if (Object.keys(at_ports).length==0)
{ {
//显示无模组界面 var at_ports=data["at_ports"];
no_modems_view(); var translation=data["translation"];
}
else //设置AT串口选项
{ set_at_port(at_ports,translation);
//获取缓存的模组
var modem_select_cache = document.getElementById("modem_select_cache"); //获取快捷命令
//获取当前的选择的模组名称 if (Object.keys(at_ports).length==0)
var modem_select_element = document.getElementById('modem_select');
var select_modem_name = modem_select_element.options[modem_select_element.selectedIndex].text;
if (select_modem_name != modem_select_cache.value)
{ {
//获取快捷选项 //显示无模组界面
var quick_option = document.querySelector('input[name="quick_option"]:checked').value; no_modems_view();
if (quick_option=="auto") {
get_quick_commands();
}
modem_select_cache.value=select_modem_name;
} }
else
{
//获取当前的选择的模组名称
var modem_select_element = document.getElementById('modem_select');
var select_modem_name = modem_select_element.options[modem_select_element.selectedIndex].text;
if (select_modem_name != modem_select_cache)
{
//获取快捷选项
var quick_option = document.querySelector('input[name="quick_option"]:checked').value;
if (quick_option=="auto") {
get_quick_commands();
}
modem_select_cache=select_modem_name;
}
//获取模组调试信息 //获取模组调试信息
get_modem_debug_info(); get_modem_debug_info(debug_params);
} }
} };
})()
); );
//]]> //]]>
@ -635,16 +631,6 @@
font-size: 15px; font-size: 15px;
} */ } */
/* 模组选择缓存 */
[name="modem_select_cache"] {
display: none;
}
/* 网络偏好第一次复选框 */
[name="first_checked"] {
display: none;
}
/* 终端 */ /* 终端 */
textarea { textarea {
background:#373737; background:#373737;
@ -704,12 +690,6 @@
</div> </div>
</div> </div>
</div> </div>
<div name="modem_select_cache">
<input type="hidden" id="modem_select_cache" value="">
</div>
<div name="first_checked">
<input type="hidden" id="first_checked" value="true">
</div>
</div> </div>
</fieldset> </fieldset>

View File

@ -178,6 +178,9 @@ msgstr "自动选择"
msgid "quectel-CM" msgid "quectel-CM"
msgstr "移远模组拨号工具" msgstr "移远模组拨号工具"
msgid "mmcli"
msgstr "模组管理工具"
msgid "PDP Type" msgid "PDP Type"
msgstr "网络类型" msgstr "网络类型"
@ -208,6 +211,9 @@ msgstr "PAP/CHAP 密码"
msgid "Authentication Type" msgid "Authentication Type"
msgstr "认证类型" msgstr "认证类型"
msgid "PAP/CHAP (both)"
msgstr "PAP/CHAP (均使用)"
msgid "NONE" msgid "NONE"
msgstr "无" msgstr "无"

View File

@ -16,9 +16,13 @@ config custom-commands
option command 'AT+CPIN?' option command 'AT+CPIN?'
config custom-commands config custom-commands
option description '查询此时信号强度 > AT+CSQ' option description '查询网络信号质量4G > AT+CSQ'
option command 'AT+CSQ' option command 'AT+CSQ'
config custom-commands
option description '查询网络信号质量5G > AT+CESQ'
option command 'AT+CESQ'
config custom-commands config custom-commands
option description '查询网络信息 > AT+COPS?' option description '查询网络信息 > AT+COPS?'
option command 'AT+COPS?' option command 'AT+COPS?'

View File

@ -1,7 +1,7 @@
#!/bin/sh /etc/rc.common #!/bin/sh /etc/rc.common
# Copyright (C) 2006-2014 OpenWrt.org # Copyright (C) 2006-2014 OpenWrt.org
START=21 START=90
STOP=13 STOP=13
USE_PROCD=1 USE_PROCD=1
@ -90,6 +90,7 @@ USE_PROCD=1
# } # }
#设置防火墙 #设置防火墙
# $1:网络接口名称
set_firewall() set_firewall()
{ {
local num=`uci show firewall | grep "name='wan'" | wc -l` local num=`uci show firewall | grep "name='wan'" | wc -l`
@ -136,13 +137,25 @@ set_ipv6_interface()
#加入WAN防火墙 #加入WAN防火墙
set_firewall $1 set_firewall $1
#启动网络接口
ifup $1
else else
uci set network.$1.extendprefix='1' uci set network.$1.extendprefix='1'
uci commit network uci commit network
fi fi
#启动网络接口
ifup $1
}
#设置IPV4和IPv6网络接口
# $1:IPV4网络接口名称
# $2:IPv6网络接口名称
# $3:网络接口
set_ipv4v6_interface()
{
#设置IPV4网络接口
set_ipv4_interface $1 $3
#设置IPV6网络接口别名
set_ipv6_interface $2 "@$1"
} }
#设置网络接口 #设置网络接口
@ -153,51 +166,35 @@ set_interface()
case $pdp_type in case $pdp_type in
"ipv4") set_ipv4_interface wwan_5g_$1 $2 ;; "ipv4") set_ipv4_interface wwan_5g_$1 $2 ;;
"ipv6") set_ipv6_interface wwan6_5g_$1 $2 ;; "ipv6") set_ipv6_interface wwan6_5g_$1 $2 ;;
"ipv4_ipv6") "ipv4v6") set_ipv4v6_interface "wwan_5g_$1" "wwan6_5g_$1" $2 ;;
set_ipv4_interface "wwan_5g_$1" $2 *) set_ipv4v6_interface "wwan_5g_$1" "wwan6_5g_$1" $2 ;;
set_ipv6_interface "wwan6_5g_$1" $2
;;
*)
set_ipv4_interface "wwan_5g_$1" $2
set_ipv6_interface "wwan6_5g_$1" $2
;;
esac esac
} }
qmi() #移远拨号工具
quectel_cm()
{ {
#设置网络接口
local network_interface=$(uci -q get modem.modem$modem_no.network_interface)
set_interface $modem_no $network_interface
#拨号 #拨号
procd_open_instance procd_open_instance
procd_set_param command quectel-CM
if [ "$dial_tool" = "quectel-CM" ]; then
procd_set_param command quectel-CM
elif [[ -z "$dial_tool" ]]; then
procd_set_param command quectel-CM
else
procd_set_param command $dial_tool
fi
case $pdp_type in case $pdp_type in
"ipv4") procd_append_param command -4 ;; "ipv4") procd_append_param command -4 ;;
"ipv6") procd_append_param command -6 ;; "ipv6") procd_append_param command -6 ;;
"ipv4_ipv6") procd_append_param command -4 -6 ;; "ipv4v6") procd_append_param command -4 -6 ;;
*) procd_append_param command -4 -6 ;; *) procd_append_param command -4 -6 ;;
esac esac
if [ "$apn" != "" ]; then if [ "$apn" != "" ]; then
procd_append_param command -s $apn procd_append_param command -s $apn
fi fi
if [ "$user" != "" ]; then if [ "$username" != "" ]; then
procd_append_param command $user procd_append_param command $username
fi fi
if [ "$password" != "" ]; then if [ "$password" != "" ]; then
procd_append_param command $password procd_append_param command $password
fi fi
if [ "$auth" != "" ]; then if [ "$auth" != "none" ]; then
procd_append_param command $auth procd_append_param command $auth
fi fi
if [ "$network" != "" ]; then if [ "$network" != "" ]; then
@ -208,6 +205,82 @@ qmi()
procd_close_instance procd_close_instance
} }
#设置网络接口Modem Manager
# $1:接口名称
# $2:模组路径
set_interface_modemmanager()
{
if [ "$(uci -q get network.$1.device)" != "$2" ] ; then
uci set network.$1='interface'
uci set network.$1.proto='modemmanager'
uci set network.$1.device="$2"
uci set network.$1.auth="$auth"
uci set network.$1.iptype="$pdp_type"
if [ "$apn" != "" ]; then
uci set network.$1.apn="$apn"
fi
if [ "$pincode" != "" ]; then
uci set network.$1.pincode="$pincode"
fi
if [ "$username" != "" ]; then
uci set network.$1.username="$username"
fi
if [ "$password" != "" ]; then
uci set network.$1.password="$password"
fi
uci commit network
#加入WAN防火墙
set_firewall $1
fi
#启动网络接口
ifup $1
}
#模块管理
modemmanager()
{
#获取接口名称
local interface_name="wwan_5g_$modem_no"
#获取调制解调器设备(模组路径)
local path=$(uci -q get modem.modem$modem_no.path)
#设置Modem Manager网络接口
set_interface_modemmanager "$interface_name" "$path"
#获取网络接口、AT串口、制造商
local network_interface=$(uci -q get modem.modem$modem_no.network_interface)
local at_port=$(uci -q get modem.modem$modem_no.at_port)
local manufacturer=$(uci -q get modem.modem$modem_no.manufacturer)
#设置网络接口
set_interface $modem_no "$network_interface"
#拨号
procd_open_instance
procd_set_param command sh /usr/share/modem/modem_network_task.sh "$id" "$at_port" "$manufacturer" "modemmanager" "$interface_name"
procd_set_param respawn
procd_close_instance
}
qmi()
{
#设置网络接口
local network_interface=$(uci -q get modem.modem$modem_no.network_interface)
set_interface $modem_no "$network_interface"
#选择拨号工具
case $dial_tool in
"quectel-CM") quectel_cm ;;
"mmcli") modemmanager ;;
"") quectel_cm ;;
*) quectel_cm ;;
esac
}
gobinet() gobinet()
{ {
#获取网络接口、AT串口、制造商 #获取网络接口、AT串口、制造商
@ -215,11 +288,11 @@ gobinet()
local at_port=$(uci -q get modem.modem$modem_no.at_port) local at_port=$(uci -q get modem.modem$modem_no.at_port)
local manufacturer=$(uci -q get modem.modem$modem_no.manufacturer) local manufacturer=$(uci -q get modem.modem$modem_no.manufacturer)
#设置网络接口 #设置网络接口
set_interface $modem_no $network_interface set_interface $modem_no "$network_interface"
#拨号 #拨号
procd_open_instance procd_open_instance
procd_set_param command sh /usr/share/modem/modem_usb_network.sh $id $at_port $manufacturer "gobinet" procd_set_param command sh /usr/share/modem/modem_network_task.sh "$id" "$at_port" "$manufacturer" "gobinet"
procd_set_param respawn procd_set_param respawn
procd_close_instance procd_close_instance
} }
@ -231,11 +304,11 @@ ecm()
local at_port=$(uci -q get modem.modem$modem_no.at_port) local at_port=$(uci -q get modem.modem$modem_no.at_port)
local manufacturer=$(uci -q get modem.modem$modem_no.manufacturer) local manufacturer=$(uci -q get modem.modem$modem_no.manufacturer)
#设置网络接口 #设置网络接口
set_interface $modem_no $network_interface set_interface $modem_no "$network_interface"
#拨号 #拨号
procd_open_instance procd_open_instance
procd_set_param command sh /usr/share/modem/modem_usb_network.sh $id $at_port $manufacturer "ecm" procd_set_param command sh /usr/share/modem/modem_network_task.sh "$id" "$at_port" "$manufacturer" "ecm"
procd_set_param respawn procd_set_param respawn
procd_close_instance procd_close_instance
} }
@ -263,11 +336,30 @@ stop_qmi()
local instance_number=$(echo "$response" | jq -r '.modem.instances | length') local instance_number=$(echo "$response" | jq -r '.modem.instances | length')
for i in $(seq 1 $((instance_number))); do for i in $(seq 1 $((instance_number))); do
#获取拨号命令 #获取拨号命令
local command=$(echo "$response" | jq -r '.modem.instances.instance$i.command') local command=$(echo "$response" | jq -r ".modem.instances.instance$i.command")
if [ "$command" = *"$network"* ]; then #移远拨号工具
local pid=$(echo "$response" | jq -r '.modem.instances.$i.pid') if [[ "$command" = *"$network"* ]]; then
local pid=$(echo "$response" | jq -r ".modem.instances.$i.pid")
kill $pid >/dev/null 2>&1 kill $pid >/dev/null 2>&1
fi fi
#Modem Manager
#获取接口名称
local interface_name="wwan_5g_$modem_no"
echo "$interface_name" >> /root/a
if [[ "$command" = *"$interface_name"* ]]; then
echo "111" >> /root/a
local pid=$(echo "$response" | jq -r ".modem.instances.$i.pid")
kill $pid >/dev/null 2>&1
#获取调制解调器设备(模组路径)
local path=$(uci -q get modem.modem$modem_no.path)
mmcli -m "$path" --simple-disconnect
# uci set network.$interface_name.auto='0'
uci del network.$interface_name
uci commit network
fi
done done
} }
@ -412,21 +504,21 @@ dial()
return 0 return 0
} }
local remarks #备注 local remarks #备注
local network #移动网络 local network #移动网络
local dial_tool #拨号工具 local dial_tool #拨号工具
local pdp_type #网络类型 local pdp_type #网络类型IP类型
local apn local apn #接入点
local user local username #用户名
local password local password #密码
local auth local auth #认证类型
config_get remarks $1 remarks config_get remarks $1 remarks
config_get network $1 network config_get network $1 network
config_get dial_tool $1 dial_tool config_get dial_tool $1 dial_tool
config_get pdp_type $1 pdp_type config_get pdp_type $1 pdp_type
config_get apn $1 apn config_get apn $1 apn
config_get user $1 user config_get username $1 username
config_get password $1 password config_get password $1 password
config_get auth $1 auth config_get auth $1 auth

View File

@ -3,7 +3,8 @@
{"****************通用****************":"ATI"}, {"****************通用****************":"ATI"},
{"模组信息 > ATI":"ATI"}, {"模组信息 > ATI":"ATI"},
{"查询SIM卡状态 > AT+CPIN?":"AT+CPIN?"}, {"查询SIM卡状态 > AT+CPIN?":"AT+CPIN?"},
{"查询此时信号强度 > AT+CSQ":"AT+CSQ"}, {"查询网络信号质量4G > AT+CSQ":"AT+CSQ"},
{"查询网络信号质量5G > AT+CESQ":"AT+CESQ"},
{"查询网络信息 > AT+COPS?":"AT+COPS?"}, {"查询网络信息 > AT+COPS?":"AT+COPS?"},
{"查询PDP信息 > AT+CGDCONT?":"AT+CGDCONT?"}, {"查询PDP信息 > AT+CGDCONT?":"AT+CGDCONT?"},
{"最小功能模式 > AT+CFUN=0":"AT+CFUN=0"}, {"最小功能模式 > AT+CFUN=0":"AT+CFUN=0"},

View File

@ -337,7 +337,7 @@ fibocom_sim_info()
iccid=$(sh $current_dir/modem_at.sh $at_port $at_command | grep -o "+ICCID:[ ]*[-0-9]\+" | grep -o "[-0-9]\{1,4\}") iccid=$(sh $current_dir/modem_at.sh $at_port $at_command | grep -o "+ICCID:[ ]*[-0-9]\+" | grep -o "[-0-9]\{1,4\}")
} }
#获取信号强度指示 #获取信号强度指示4G
# $1:信号强度指示数字 # $1:信号强度指示数字
fibocom_get_rssi() fibocom_get_rssi()
{ {
@ -372,11 +372,11 @@ fibocom_network_info()
at_command="AT+CSQ" at_command="AT+CSQ"
response=$(sh $current_dir/modem_at.sh $at_port $at_command | grep "+CSQ:" | sed 's/+CSQ: //g' | sed 's/\r//g') response=$(sh $current_dir/modem_at.sh $at_port $at_command | grep "+CSQ:" | sed 's/+CSQ: //g' | sed 's/\r//g')
#RSSI信号强度指示) #RSSI4G信号强度指示)
rssi_num=$(echo $response | awk -F',' '{print $1}') # rssi_num=$(echo $response | awk -F',' '{print $1}')
rssi=$(fibocom_get_rssi $rssi_num) # rssi=$(fibocom_get_rssi $rssi_num)
#BER信道误码率) #BER4G信道误码率)
ber=$(echo $response | awk -F',' '{print $2}') # ber=$(echo $response | awk -F',' '{print $2}')
# #PER信号强度 # #PER信号强度
# if [ -n "$csq" ]; then # if [ -n "$csq" ]; then

View File

@ -2,7 +2,8 @@
"quick_commands":[ "quick_commands":[
{"模组信息 > ATI":"ATI"}, {"模组信息 > ATI":"ATI"},
{"查询SIM卡状态 > AT+CPIN?":"AT+CPIN?"}, {"查询SIM卡状态 > AT+CPIN?":"AT+CPIN?"},
{"查询此时信号强度 > AT+CSQ":"AT+CSQ"}, {"查询网络信号质量4G > AT+CSQ":"AT+CSQ"},
{"查询网络信号质量5G > AT+CESQ":"AT+CESQ"},
{"查询网络信息 > AT+COPS?":"AT+COPS?"}, {"查询网络信息 > AT+COPS?":"AT+COPS?"},
{"查询PDP信息 > AT+CGDCONT?":"AT+CGDCONT?"}, {"查询PDP信息 > AT+CGDCONT?":"AT+CGDCONT?"},
{"最小功能模式 > AT+CFUN=0":"AT+CFUN=0"}, {"最小功能模式 > AT+CFUN=0":"AT+CFUN=0"},

View File

@ -29,8 +29,6 @@ init_modem_info()
#网络信息 #网络信息
connect_status="disconnect" #SIM卡状态 connect_status="disconnect" #SIM卡状态
network_type="-" #蜂窝网络类型 network_type="-" #蜂窝网络类型
rssi="" #RSSI
ber="" #BER
tx_rate="-" #上传速率 tx_rate="-" #上传速率
rx_rate="-" #下载速率 rx_rate="-" #下载速率
@ -167,9 +165,7 @@ set_network_info()
network_info="\"network_info\":[ network_info="\"network_info\":[
{\"Network Type\":\"$network_type\", \"full_name\":\"Network Type\"}, {\"Network Type\":\"$network_type\", \"full_name\":\"Network Type\"},
{\"Tx Rate\":\"$tx_rate\", \"full_name\":\"Transmit Rate\"}, {\"Tx Rate\":\"$tx_rate\", \"full_name\":\"Transmit Rate\"},
{\"Rx Rate\":\"$rx_rate\", \"full_name\":\"Receive Rate\"}, {\"Rx Rate\":\"$rx_rate\", \"full_name\":\"Receive Rate\"}
{\"RSSI\":\"$rssi\", \"full_name\":\"Received Signal Strength Indicator\"},
{\"BER\":\"$ber\", \"full_name\":\"Bit Error Rate\"}
]," ],"
} }

View File

@ -3,7 +3,7 @@ current_dir="$(dirname "$0")"
source "$current_dir/modem_debug.sh" source "$current_dir/modem_debug.sh"
source "$current_dir/modem_scan.sh" source "$current_dir/modem_scan.sh"
#拨号 #ECM拨号
# $1:AT串口 # $1:AT串口
# $2:制造商 # $2:制造商
ecm_dial() ecm_dial()
@ -21,7 +21,7 @@ ecm_dial()
sh "$current_dir/modem_at.sh" $1 $at_command sh "$current_dir/modem_at.sh" $1 $at_command
} }
#拨号 #GobiNet拨号
# $1:AT串口 # $1:AT串口
# $2:制造商 # $2:制造商
gobinet_dial() gobinet_dial()
@ -39,11 +39,19 @@ gobinet_dial()
sh "$current_dir/modem_at.sh" $1 $at_command sh "$current_dir/modem_at.sh" $1 $at_command
} }
#Modem Manager拨号
# $1:接口名称
modemmanager_dial()
{
ifup "$1";
}
#检查模组网络连接 #检查模组网络连接
# $1:配置ID # $1:配置ID
# $2:AT串口 # $2:AT串口
# $3:制造商 # $3:制造商
# $4:拨号模式 # $4:拨号模式
# $5:接口名称
modem_network_task() modem_network_task()
{ {
while true; do while true; do
@ -63,9 +71,10 @@ modem_network_task()
local connect_status=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p') local connect_status=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p')
if [ "$connect_status" = "0" ]; then if [ "$connect_status" = "0" ]; then
case "$4" in case "$4" in
"ecm") ecm_dial $at_port $3 ;; "ecm") ecm_dial "$at_port" "$3" ;;
"gobinet") gobinet_dial $at_port $3 ;; "gobinet") gobinet_dial "$at_port" "$3" ;;
*) ecm_dial $at_port $3 ;; "modemmanager") modemmanager_dial "$5" ;;
*) ecm_dial "$at_port" "$3" ;;
esac esac
fi fi
debug "结束网络连接检查任务" debug "结束网络连接检查任务"

View File

@ -364,10 +364,10 @@ quectel_network_info()
response=$(sh $current_dir/modem_at.sh $at_port $at_command | grep "+CSQ:" | sed 's/+CSQ: //g' | sed 's/\r//g') response=$(sh $current_dir/modem_at.sh $at_port $at_command | grep "+CSQ:" | sed 's/+CSQ: //g' | sed 's/\r//g')
#RSSI信号强度指示 #RSSI信号强度指示
rssi_num=$(echo $response | awk -F',' '{print $1}') # rssi_num=$(echo $response | awk -F',' '{print $1}')
rssi=$(quectel_get_rssi $rssi_num) # rssi=$(quectel_get_rssi $rssi_num)
#Ber信道误码率 #Ber信道误码率
ber=$(echo $response | awk -F',' '{print $2}') # ber=$(echo $response | awk -F',' '{print $2}')
#PER信号强度 #PER信号强度
# if [ -n "$csq" ]; then # if [ -n "$csq" ]; then

View File

@ -2,7 +2,8 @@
"quick_commands":[ "quick_commands":[
{"模组信息 > ATI":"ATI"}, {"模组信息 > ATI":"ATI"},
{"查询SIM卡状态 > AT+CPIN?":"AT+CPIN?"}, {"查询SIM卡状态 > AT+CPIN?":"AT+CPIN?"},
{"查询此时信号强度 > AT+CSQ":"AT+CSQ"}, {"查询网络信号质量4G > AT+CSQ":"AT+CSQ"},
{"查询网络信号质量5G > AT+CESQ":"AT+CESQ"},
{"查询网络信息 > AT+COPS?":"AT+COPS?"}, {"查询网络信息 > AT+COPS?":"AT+COPS?"},
{"查询PDP信息 > AT+CGDCONT?":"AT+CGDCONT?"}, {"查询PDP信息 > AT+CGDCONT?":"AT+CGDCONT?"},
{"最小功能模式 > AT+CFUN=0":"AT+CFUN=0"}, {"最小功能模式 > AT+CFUN=0":"AT+CFUN=0"},