更新信号界面,修复FM350自动拨号

This commit is contained in:
ling 2024-04-27 21:28:20 +08:00
parent f371e33480
commit 6dcc1416af
15 changed files with 645 additions and 201 deletions

View File

@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-modem
LUCI_TITLE:=LuCI support for Modem
LUCI_PKGARCH:=all
PKG_VERSION:=1.4.1
PKG_VERSION:=1.4.2
PKG_LICENSE:=GPLv3
PKG_LINCESE_FILES:=LICENSE
PKF_MAINTAINER:=siriling <siriling@qq.com>

View File

@ -315,6 +315,12 @@ function getModemInfo()
end
end
end
--添加额外翻译
translation["Unknown"]=luci.i18n.translate("Unknown")
translation["Excellent"]=luci.i18n.translate("Excellent")
translation["Good"]=luci.i18n.translate("Good")
translation["Fair"]=luci.i18n.translate("Fair")
translation["Bad"]=luci.i18n.translate("Bad")
--整合数据
local data={}

View File

@ -76,12 +76,6 @@ getMobileNetwork()
--------advanced--------
-- 配置ID
id = s:taboption("advanced", ListValue, "id", translate("Config ID"))
id.rmempty = false
id:value(arg[1])
-- uci:set('modem',arg[1],'id',arg[1])
-- 拨号工具
dial_tool = s:taboption("advanced", ListValue, "dial_tool", translate("Dial Tool"))
dial_tool.description = translate("After switching the dialing tool, it may be necessary to restart the module or restart the router to recognize the module.")
@ -136,4 +130,13 @@ password:depends("auth", "both")
password:depends("auth", "pap")
password:depends("auth", "chap")
-- 配置ID
id = s:taboption("advanced", ListValue, "id", translate("Config ID"))
id.rmempty = false
id:value(arg[1])
-- uci:set('modem',arg[1],'id',arg[1])
-- 隐藏配置ID
m:append(Template("modem/hide_dial_config_id"))
return m

View File

@ -31,7 +31,9 @@ function s.create(uci, t)
end
function s.remove(uci, t)
uci.map.proceed = true
uci.map:del(t)
-- 设置删除
uci.map:set(t,"delete","1")
-- uci.map:del(t)
luci.http.redirect(d.build_url("admin", "network", "modem","dial_overview"))
end

View File

@ -0,0 +1,15 @@
<script type="text/javascript">//<![CDATA[
window.onload=function()
{
// 获取高级设置标签元素
var str="advanced"
var advanced_element = document.querySelector('div[data-tab="'+str+'"]');
//隐藏拨号配置ID元素
var dial_config_id_element = advanced_element.lastElementChild;
dial_config_id_element.style.display="none";
}
//]]>
</script>

View File

@ -148,8 +148,8 @@ end
if (value!="-"&&value!="")
{
//添加单位
if (key=="RSSI") {
value=value+" dBm";
if (key=="AMBR UL"||key=="AMBR DL") {
value=value+" Mbps";
}
else if (key=="Tx Rate"||key=="Rx Rate")
{
@ -174,6 +174,232 @@ end
network_info_Element.innerHTML=network_info_view;
}
// 获取一个范围的百分比
function get_percent(value, min, max)
{
var percent;
if (value <= min) {
percent=0;
} else if (value >= max) {
percent=100;
} else {
percent=((value - min) / (max - min)) * 100;
}
return percent.toFixed(2);
}
// 获取参考信号接收功率RSRP的信息视图
function get_rsrp_info_view(network_type,value)
{
value=parseFloat(value);
var rsrp_info_view={percent:100,quality:"Unknown",style:"width:100.00%;background-color: gray;"};
// 获取百分比
var percent=100;
if (network_type.includes("NR"))
{
percent=get_percent(value,-153,31);
}
else if (network_type.includes("LTE"))
{
percent=get_percent(value,-140,-44);
}
else if (network_type.includes("WCDMA"))
{
// percent=get_percent(value,-140,-44);
}
// 获取样式
var quality="Unknown";
var color="gray";
if (value>=-70)
{
quality="Excellent";
color="limegreen";
}
else if (value>=-80&&value<-70)
{
quality="Good";
color="lime";
}
else if (value>=-90&&value<-80)
{
quality="Fair";
color="gold";
}
else if (value<-90)
{
quality="Bad";
color="red";
}
rsrp_info_view.percent=percent;
rsrp_info_view.quality=quality;
rsrp_info_view.style='width:'+rsrp_info_view.percent+'%;background-color: '+color+';';
return rsrp_info_view;
}
// 获取参考信号接收质量RSRQ的信息视图
function get_rsrq_info_view(network_type,value)
{
value=parseFloat(value);
var rsrq_info_view={percent:100,quality:"Unknown",style:"width:100.00%;background-color: gray;"};
// 获取百分比
var percent=100;
if (network_type.includes("NR"))
{
percent=get_percent(value,-43,20);
}
else if (network_type.includes("LTE"))
{
percent=get_percent(value,-19.5,-3);
}
else if (network_type.includes("WCDMA"))
{
// percent=get_percent(value,-19.5,-3);
}
// 获取样式
var quality="Unknown";
var color="gray";
if (value>=-10)
{
quality="Excellent";
color="limegreen";
}
else if (value>=-15&&value<-10)
{
quality="Good";
color="lime";
}
else if (value>=-20&&value<-15)
{
quality="Fair";
color="gold";
}
else if (value<-20)
{
quality="Bad";
color="red";
}
rsrq_info_view.percent=percent;
rsrq_info_view.quality=quality;
rsrq_info_view.style='width:'+rsrq_info_view.percent+'%;background-color: '+color+';';
return rsrq_info_view;
}
// 获取信噪比SINR的信息视图
function get_sinr_info_view(network_type,value)
{
value=parseFloat(value);
var sinr_info_view={percent:100,quality:"Unknown",style:"width:100.00%;background-color: gray;"};
// 获取百分比
var percent=100;
if (network_type.includes("NR"))
{
percent=get_percent(value,-23,40);
}
else if (network_type.includes("LTE"))
{
percent=get_percent(value,-20,-30);
}
else if (network_type.includes("WCDMA"))
{
// percent=get_percent(value,-20,-30);
}
// 获取样式
var quality="Unknown";
var color="gray";
if (value>=25)
{
quality="Excellent";
color="limegreen";
}
else if (value>=15&&value<25)
{
quality="Good";
color="lime";
}
else if (value>=10&&value<15)
{
quality="Fair";
color="gold";
}
else if (value<10)
{
quality="Bad";
color="red";
}
sinr_info_view.percent=percent;
sinr_info_view.quality=quality;
sinr_info_view.style='width:'+sinr_info_view.percent+'%;background-color: '+color+';';
return sinr_info_view;
}
// 获取接收信号功率RxLev的信息视图
function get_rxlev_info_view(network_type,value)
{
value=parseFloat(value);
var sinr_info_view={percent:100,quality:"Unknown",style:"width:100.00%;background-color: gray;"};
// 获取百分比
var percent=100;
if (network_type.includes("NR"))
{
percent=get_percent(value,-153,31);
}
else if (network_type.includes("LTE"))
{
percent=get_percent(value,-140,-44);
}
else if (network_type.includes("WCDMA"))
{
percent=get_percent(value,-120,-25);
}
else if (network_type.includes("GSM"))
{
percent=get_percent(value,-110,-48);
}
// 获取样式
var quality="Unknown";
var color="gray";
if (value>=-70)
{
quality="Excellent";
color="limegreen";
}
else if (value>=-80&&value<-70)
{
quality="Good";
color="lime";
}
else if (value>=-90&&value<-80)
{
quality="Fair";
color="gold";
}
else if (value<-100)
{
quality="Bad";
color="red";
}
sinr_info_view.percent=percent;
sinr_info_view.quality=quality;
sinr_info_view.style='width:'+sinr_info_view.percent+'%;background-color: '+color+';';
return sinr_info_view;
}
//获取小区信息视图
function get_cell_info_view(network_mode_info,network_type,translation)
{
@ -204,28 +430,56 @@ end
//添加单位
if (key=="Band") {
if (network_type.includes("NR")) {
value="N"+value
value="N"+value;
}
else if (network_type.includes("LTE")) {
value="B"+value
value="B"+value;
}
else if (network_type.includes("WCDMA")) {
value="B"+value
value="B"+value;
}
}
else if (key=="UL Bandwidth"||key=="DL Bandwidth") {
value=value+" MHz"
value=value+" MHz";
}
else if (key=="RSRP"||key=="TX Power"||key=="RxLev") {
value=value+" dBm"
if (key=="RSRP")
{
var rsrp_info_view=get_rsrp_info_view(network_type,value);
value='<div class="cbi-progressbar" title="'+value+' dBm | '+translation[rsrp_info_view.quality]+' ('+rsrp_info_view.percent+'%)"><div style="'+rsrp_info_view.style+'"></div></div>';
}
else if (key=="RxLev")
{
var rxlev_info_view=get_rxlev_info_view(network_type,value);
value='<div class="cbi-progressbar" title="'+value+' dBm | '+translation[rxlev_info_view.quality]+' ('+rxlev_info_view.percent+'%)"><div style="'+rxlev_info_view.style+'"></div></div>';
}
else
{
value=value+" dBm";
}
}
else if (key=="RSRQ"||key=="SINR"||key=="RSSNR"||key=="Ec/Io") {
value=value+" dB"
if (key=="RSRQ")
{
var rsrq_info_view=get_rsrq_info_view(network_type,value);
value='<div class="cbi-progressbar" title="'+value+' dB | '+translation[rsrq_info_view.quality]+' ('+rsrq_info_view.percent+'%)"><div style="'+rsrq_info_view.style+'"></div></div>';
}
else if (key=="SINR")
{
var sinr_info_view=get_sinr_info_view(network_type,value);
value='<div class="cbi-progressbar" title="'+value+' dB | '+translation[sinr_info_view.quality]+' ('+sinr_info_view.percent+'%)"><div style="'+sinr_info_view.style+'"></div></div>';
}
else
{
value=value+" dB";
}
}
else if (key=="SCS") {
value=value+" KHz"
value=value+" KHz";
}
cell_info_view+='<tr class="tr"><td class="td left" title="'+full_name+'">'+translation[key]+'</td><td class="td left" id="'+key+'">'+value+'</td></tr>';
cell_info_view+='<tr class="tr"><td class="td left" title="'+full_name+'">'+translation[key]+' ('+key+')</td><td class="td left" id="'+key+'">'+value+'</td></tr>';
break;
}
}

View File

@ -352,6 +352,18 @@ msgstr "网络信息"
msgid "Network Type"
msgstr "网络类型"
msgid "CQI UL"
msgstr "上行信道质量指示"
msgid "CQI DL"
msgstr "下行信道质量指示"
msgid "AMBR UL"
msgstr "上行访问最大比特率"
msgid "AMBR DL"
msgstr "下行访问最大比特率"
msgid "Tx Rate"
msgstr "上传速率"
@ -523,6 +535,18 @@ msgstr "中国电信"
msgid "46011"
msgstr "中国电信"
msgid "Excellent"
msgstr "非常好"
msgid "Good"
msgstr "好"
msgid "Fair"
msgstr "一般"
msgid "Bad"
msgstr "差"
msgid "Plugin Config"
msgstr "插件配置"

View File

@ -523,6 +523,18 @@ msgstr "中国电信"
msgid "46011"
msgstr "中国电信"
msgid "Excellent"
msgstr "非常好"
msgid "Good"
msgstr "好"
msgid "Fair"
msgstr "一般"
msgid "Bad"
msgstr "差"
msgid "Plugin Config"
msgstr "插件配置"

View File

@ -121,6 +121,13 @@ set_ipv4_interface()
local interface_name="$1"
local network_interface="$2"
#删除原网络配置
uci -q del network.${interface_name}.ipaddr
uci -q del network.${interface_name}.netmask
uci -q del network.${interface_name}.gateway
uci -q del network.${interface_name}.peerdns
uci -q del network.${interface_name}.dns
#添加或修改网络配置
uci set network.${interface_name}='interface'
uci set network.${interface_name}.proto='dhcp'
@ -287,10 +294,6 @@ modemmanager()
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 ;;
@ -302,11 +305,6 @@ qmi()
gobinet()
{
#获取网络接口
local network_interface=$(uci -q get modem.modem${modem_no}.network_interface)
#设置网络接口
set_interface "${modem_no}" "$network_interface"
#拨号
procd_open_instance
procd_set_param command sh ${SCRIPT_DIR}/modem_network_task.sh "${id}" "${modem_no}" "gobinet"
@ -316,11 +314,6 @@ gobinet()
ecm()
{
#获取网络接口
local network_interface=$(uci -q get modem.modem${modem_no}.network_interface)
#设置网络接口
set_interface "${modem_no}" "$network_interface"
#拨号
procd_open_instance
procd_set_param command sh ${SCRIPT_DIR}/modem_network_task.sh "${id}" "${modem_no}" "ecm"
@ -335,11 +328,6 @@ mbim()
rndis()
{
#获取网络接口
local network_interface=$(uci -q get modem.modem${modem_no}.network_interface)
#设置网络接口
set_interface "${modem_no}" "$network_interface"
#拨号
procd_open_instance
procd_set_param command sh ${SCRIPT_DIR}/modem_network_task.sh "${id}" "${modem_no}" "rndis"
@ -547,41 +535,52 @@ stop_dial()
if [ -f "${MODEM_RUN_CONFIG}" ] && grep -q "${network}" "${MODEM_RUN_CONFIG}"; then
#该配置ID在运行需要删除记录
sed -i "/${id}/d" "${MODEM_RUN_CONFIG}"
else
return 0
fi
#获取模块序号
get_modem_no "${network}"
#获取模块序号
get_modem_no "${network}"
#获取模组的拨号模式
[ -z "${modem_no}" ] && return 0
local mode=$(get_mode ${modem_no})
[ -z "$mode" ] || [ "$mode" = "unknown" ] && return
#获取模组的拨号模式
[ -z "${modem_no}" ] && return 0
local mode=$(get_mode ${modem_no})
[ -z "$mode" ] || [ "$mode" = "unknown" ] && return
#根据不同的拨号模式停止拨号
if [ "$mode" = "qmi" ]; then
stop_qmi
elif [ "$mode" = "gobinet" ]; then
stop_gobinet
elif [ "$mode" = "ecm" ]; then
stop_ecm
elif [ "$mode" = "mbim" ]; then
stop_mbim
elif [ "$mode" = "rndis" ]; then
stop_rndis
elif [ "$mode" = "ncm" ]; then
stop_ncm
fi
#根据不同的拨号模式停止拨号
if [ "$mode" = "qmi" ]; then
stop_qmi
elif [ "$mode" = "gobinet" ]; then
stop_gobinet
elif [ "$mode" = "ecm" ]; then
stop_ecm
elif [ "$mode" = "mbim" ]; then
stop_mbim
elif [ "$mode" = "rndis" ]; then
stop_rndis
elif [ "$mode" = "ncm" ]; then
stop_ncm
fi
}
dial()
{
local enable #启用
local id #ID
local enable #启用
local id #ID
local delete #删除
config_get enable $1 enable
config_get id $1 id
config_get delete $1 delete
#删除拨号配置
[ "$delete" = "1" ] && {
stop_dial "$id"
uci -q del modem.${id}
uci commit modem
return 0
}
#停止拨号配置
[ "$enable" = "0" ] && {
stop_dial "$id"
return 0
@ -621,20 +620,22 @@ dial()
#查看移动网络是否已经有配置在运行
mkdir -m 0755 -p "${MODEM_RUNDIR}"
if [ -f "${MODEM_RUN_CONFIG}" ]; then #文件存在
if grep -q "${network}" "${MODEM_RUN_CONFIG}"; then #是否记录该移动网络
local config_id=$(awk -v network="${network}" -F',' '!/^#/ && $0 ~ network { print $2 }' "${MODEM_RUN_CONFIG}")
#该移动网络已存在,且已有其他配置运行
if [ "$id" != "$config_id" ]; then
uci set modem.$1.enable=0
uci commit modem
return 0
fi
else
echo "${network},${id}" >> "${MODEM_RUN_CONFIG}"
fi
else
if [ ! -f "${MODEM_RUN_CONFIG}" ] || ! grep -q "${network}" "${MODEM_RUN_CONFIG}"; then
#文件不存在或者未记录该移动网络
echo "${network},${id}" >> "${MODEM_RUN_CONFIG}"
#获取网络接口
local network_interface=$(uci -q get modem.modem${modem_no}.network_interface)
#设置网络接口
set_interface "${modem_no}" "$network_interface"
else
local config_id=$(awk -v network="${network}" -F',' '!/^#/ && $0 ~ network { print $2 }' "${MODEM_RUN_CONFIG}")
#该移动网络已存在,且已有其他配置运行
if [ "$id" != "$config_id" ]; then
uci set modem.$1.enable=0
uci commit modem
return 0
fi
fi
#设置网络预设

View File

@ -609,6 +609,34 @@ fibocom_get_nr_dl_bandwidth()
echo "$nr_dl_bandwidth"
}
#获取信噪比
# $1:网络类型
# $2:信噪比数字
fibocom_get_sinr_num()
{
local sinr
case $1 in
"LTE") sinr=$(awk "BEGIN{ printf \"%.2f\", $2 * 0.5 - 23.5 }" | sed 's/\.*0*$//') ;;
"NR") sinr=$(awk "BEGIN{ printf \"%.2f\", $2 * 0.5 - 23.5 }" | sed 's/\.*0*$//') ;;
esac
echo "$sinr"
}
#获取接收信号功率
# $1:网络类型
# $2:接收信号功率数字
fibocom_get_rxlev()
{
local rxlev
case $1 in
"GSM") rxlev=$(($2-110)) ;;
"WCDMA") rxlev=$(($2-121)) ;;
"LTE") rxlev=$(($2-141)) ;;
"NR") rxlev=$(($2-157)) ;;
esac
echo "$rxlev"
}
#获取参考信号接收功率
# $1:网络类型
# $2:参考信号接收功率数字
@ -644,20 +672,6 @@ fibocom_get_rssnr()
echo "$rssnr"
}
#获取接收信号功率
# $1:网络类型
# $2:接收信号功率数字
fibocom_get_rxlev()
{
local rxlev
case $1 in
"WCDMA") rxlev=$(($2-121)) ;;
"LTE") rxlev=$(($2-141)) ;;
"NR") rxlev=$(($2-157)) ;;
esac
echo "$rxlev"
}
#获取Ec/Io
# $1:Ec/Io数字
fibocom_get_ecio()
@ -684,111 +698,126 @@ fibocom_cell_info()
rat=$(fibocom_get_rat ${rat_num})
}
response=$(echo "$response" | sed -n '4p')
for response in $response; do
#排除+GTCCINFO:、NR service cell:还有空行
[ -n "$response" ] && [[ "$response" = *","* ]] && {
case $rat in
"NR")
network_mode="NR5G-SA Mode"
nr_mcc=$(echo "$response" | awk -F',' '{print $3}')
nr_mnc=$(echo "$response" | awk -F',' '{print $4}')
nr_tac=$(echo "$response" | awk -F',' '{print $5}')
nr_cell_id=$(echo "$response" | awk -F',' '{print $6}')
nr_arfcn=$(echo "$response" | awk -F',' '{print $7}')
nr_physical_cell_id=$(echo "$response" | awk -F',' '{print $8}')
nr_band_num=$(echo "$response" | awk -F',' '{print $9}')
nr_band=$(fibocom_get_band "NR" ${nr_band_num})
nr_dl_bandwidth_num=$(echo "$response" | awk -F',' '{print $10}')
nr_dl_bandwidth=$(fibocom_get_nr_dl_bandwidth ${nr_dl_bandwidth_num})
nr_sinr=$(echo "$response" | awk -F',' '{print $11}')
nr_rxlev_num=$(echo "$response" | awk -F',' '{print $12}')
nr_rxlev=$(fibocom_get_rxlev "NR" ${nr_rxlev_num})
nr_rsrp_num=$(echo "$response" | awk -F',' '{print $13}')
nr_rsrp=$(fibocom_get_rsrp "NR" ${nr_rsrp_num})
nr_rsrq_num=$(echo "$response" | awk -F',' '{print $14}' | sed 's/\r//g')
nr_rsrq=$(fibocom_get_rsrq "NR" ${nr_rsrq_num})
;;
"LTE-NR")
network_mode="EN-DC Mode"
#LTE
endc_lte_mcc=$(echo "$response" | awk -F',' '{print $3}')
endc_lte_mnc=$(echo "$response" | awk -F',' '{print $4}')
endc_lte_tac=$(echo "$response" | awk -F',' '{print $5}')
endc_lte_cell_id=$(echo "$response" | awk -F',' '{print $6}')
endc_lte_earfcn=$(echo "$response" | awk -F',' '{print $7}')
endc_lte_physical_cell_id=$(echo "$response" | awk -F',' '{print $8}')
endc_lte_band_num=$(echo "$response" | awk -F',' '{print $9}')
endc_lte_band=$(fibocom_get_band "LTE" ${endc_lte_band_num})
ul_bandwidth_num=$(echo "$response" | awk -F',' '{print $10}')
endc_lte_ul_bandwidth=$(fibocom_get_ul_bandwidth ${ul_bandwidth_num})
endc_lte_dl_bandwidth="$endc_lte_ul_bandwidth"
endc_lte_rssnr_num=$(echo "$response" | awk -F',' '{print $11}')
endc_lte_rssnr=$(fibocom_get_rssnr ${endc_lte_rssnr_num})
endc_lte_rxlev_num=$(echo "$response" | awk -F',' '{print $12}')
endc_lte_rxlev=$(fibocom_get_rxlev "LTE" ${endc_lte_rxlev_num})
endc_lte_rsrp_num=$(echo "$response" | awk -F',' '{print $13}')
endc_lte_rsrp=$(fibocom_get_rsrp "LTE" ${endc_lte_rsrp_num})
endc_lte_rsrq_num=$(echo "$response" | awk -F',' '{print $14}' | sed 's/\r//g')
endc_lte_rsrq=$(fibocom_get_rsrq "LTE" ${endc_lte_rsrq_num})
#NR5G-NSA
endc_nr_mcc=$(echo "$response" | awk -F',' '{print $3}')
endc_nr_mnc=$(echo "$response" | awk -F',' '{print $4}')
endc_nr_tac=$(echo "$response" | awk -F',' '{print $5}')
endc_nr_cell_id=$(echo "$response" | awk -F',' '{print $6}')
endc_nr_arfcn=$(echo "$response" | awk -F',' '{print $7}')
endc_nr_physical_cell_id=$(echo "$response" | awk -F',' '{print $8}')
endc_nr_band_num=$(echo "$response" | awk -F',' '{print $9}')
endc_nr_band=$(fibocom_get_band "NR" ${endc_nr_band_num})
nr_dl_bandwidth_num=$(echo "$response" | awk -F',' '{print $10}')
endc_nr_dl_bandwidth=$(fibocom_get_nr_dl_bandwidth ${nr_dl_bandwidth_num})
endc_nr_sinr=$(echo "$response" | awk -F',' '{print $11}')
endc_nr_rxlev_num=$(echo "$response" | awk -F',' '{print $12}')
endc_nr_rxlev=$(fibocom_get_rxlev "NR" ${endc_nr_rxlev_num})
endc_nr_rsrp_num=$(echo "$response" | awk -F',' '{print $13}')
endc_nr_rsrp=$(fibocom_get_rsrp "NR" ${endc_nr_rsrp_num})
endc_nr_rsrq_num=$(echo "$response" | awk -F',' '{print $14}' | sed 's/\r//g')
endc_nr_rsrq=$(fibocom_get_rsrq "NR" ${endc_nr_rsrq_num})
;;
"LTE"|"eMTC"|"NB-IoT")
network_mode="LTE Mode"
lte_mcc=$(echo "$response" | awk -F',' '{print $3}')
lte_mnc=$(echo "$response" | awk -F',' '{print $4}')
lte_tac=$(echo "$response" | awk -F',' '{print $5}')
lte_cell_id=$(echo "$response" | awk -F',' '{print $6}')
lte_earfcn=$(echo "$response" | awk -F',' '{print $7}')
lte_physical_cell_id=$(echo "$response" | awk -F',' '{print $8}')
lte_band_num=$(echo "$response" | awk -F',' '{print $9}')
lte_band=$(fibocom_get_band "LTE" ${lte_band_num})
ul_bandwidth_num=$(echo "$response" | awk -F',' '{print $10}')
lte_ul_bandwidth=$(fibocom_get_ul_bandwidth ${ul_bandwidth_num})
lte_dl_bandwidth="$lte_ul_bandwidth"
lte_rssnr=$(echo "$response" | awk -F',' '{print $11}')
lte_rxlev_num=$(echo "$response" | awk -F',' '{print $12}')
lte_rxlev=$(fibocom_get_rxlev "LTE" ${lte_rxlev_num})
lte_rsrp_num=$(echo "$response" | awk -F',' '{print $13}')
lte_rsrp=$(fibocom_get_rsrp "LTE" ${lte_rsrp_num})
lte_rsrq_num=$(echo "$response" | awk -F',' '{print $14}' | sed 's/\r//g')
lte_rsrq=$(fibocom_get_rsrq "LTE" ${lte_rsrq_num})
;;
"WCDMA"|"UMTS")
network_mode="WCDMA Mode"
wcdma_mcc=$(echo "$response" | awk -F',' '{print $3}')
wcdma_mnc=$(echo "$response" | awk -F',' '{print $4}')
wcdma_lac=$(echo "$response" | awk -F',' '{print $5}')
wcdma_cell_id=$(echo "$response" | awk -F',' '{print $6}')
wcdma_uarfcn=$(echo "$response" | awk -F',' '{print $7}')
wcdma_psc=$(echo "$response" | awk -F',' '{print $8}')
wcdma_band_num=$(echo "$response" | awk -F',' '{print $9}')
wcdma_band=$(fibocom_get_band "WCDMA" ${wcdma_band_num})
wcdma_ecno=$(echo "$response" | awk -F',' '{print $10}')
wcdma_rscp=$(echo "$response" | awk -F',' '{print $11}')
wcdma_rac=$(echo "$response" | awk -F',' '{print $12}')
wcdma_rxlev_num=$(echo "$response" | awk -F',' '{print $13}')
wcdma_rxlev=$(fibocom_get_rxlev "WCDMA" ${wcdma_rxlev_num})
wcdma_reserved=$(echo "$response" | awk -F',' '{print $14}')
wcdma_ecio_num=$(echo "$response" | awk -F',' '{print $15}' | sed 's/\r//g')
wcdma_ecio=$(fibocom_get_ecio ${wcdma_ecio_num})
;;
esac
case $rat in
"NR")
network_mode="NR5G-SA Mode"
nr_mcc=$(echo "$response" | awk -F',' '{print $3}')
nr_mnc=$(echo "$response" | awk -F',' '{print $4}')
nr_tac=$(echo "$response" | awk -F',' '{print $5}')
nr_cell_id=$(echo "$response" | awk -F',' '{print $6}')
nr_arfcn=$(echo "$response" | awk -F',' '{print $7}')
nr_physical_cell_id=$(echo "$response" | awk -F',' '{print $8}')
nr_band_num=$(echo "$response" | awk -F',' '{print $9}')
nr_band=$(fibocom_get_band "NR" ${nr_band_num})
nr_dl_bandwidth_num=$(echo "$response" | awk -F',' '{print $10}')
nr_dl_bandwidth=$(fibocom_get_nr_dl_bandwidth ${nr_dl_bandwidth_num})
nr_sinr_num=$(echo "$response" | awk -F',' '{print $11}')
nr_sinr=$(fibocom_get_sinr_num "NR" ${nr_sinr_num})
nr_rxlev_num=$(echo "$response" | awk -F',' '{print $12}')
nr_rxlev=$(fibocom_get_rxlev "NR" ${nr_rxlev_num})
nr_rsrp_num=$(echo "$response" | awk -F',' '{print $13}')
nr_rsrp=$(fibocom_get_rsrp "NR" ${nr_rsrp_num})
nr_rsrq_num=$(echo "$response" | awk -F',' '{print $14}' | sed 's/\r//g')
nr_rsrq=$(fibocom_get_rsrq "NR" ${nr_rsrq_num})
;;
"LTE-NR")
network_mode="EN-DC Mode"
#LTE
endc_lte_mcc=$(echo "$response" | awk -F',' '{print $3}')
endc_lte_mnc=$(echo "$response" | awk -F',' '{print $4}')
endc_lte_tac=$(echo "$response" | awk -F',' '{print $5}')
endc_lte_cell_id=$(echo "$response" | awk -F',' '{print $6}')
endc_lte_earfcn=$(echo "$response" | awk -F',' '{print $7}')
endc_lte_physical_cell_id=$(echo "$response" | awk -F',' '{print $8}')
endc_lte_band_num=$(echo "$response" | awk -F',' '{print $9}')
endc_lte_band=$(fibocom_get_band "LTE" ${endc_lte_band_num})
ul_bandwidth_num=$(echo "$response" | awk -F',' '{print $10}')
endc_lte_ul_bandwidth=$(fibocom_get_ul_bandwidth ${ul_bandwidth_num})
endc_lte_dl_bandwidth="$endc_lte_ul_bandwidth"
endc_lte_rssnr_num=$(echo "$response" | awk -F',' '{print $11}')
endc_lte_rssnr=$(fibocom_get_rssnr ${endc_lte_rssnr_num})
endc_lte_rxlev_num=$(echo "$response" | awk -F',' '{print $12}')
endc_lte_rxlev=$(fibocom_get_rxlev "LTE" ${endc_lte_rxlev_num})
endc_lte_rsrp_num=$(echo "$response" | awk -F',' '{print $13}')
endc_lte_rsrp=$(fibocom_get_rsrp "LTE" ${endc_lte_rsrp_num})
endc_lte_rsrq_num=$(echo "$response" | awk -F',' '{print $14}' | sed 's/\r//g')
endc_lte_rsrq=$(fibocom_get_rsrq "LTE" ${endc_lte_rsrq_num})
#NR5G-NSA
endc_nr_mcc=$(echo "$response" | awk -F',' '{print $3}')
endc_nr_mnc=$(echo "$response" | awk -F',' '{print $4}')
endc_nr_tac=$(echo "$response" | awk -F',' '{print $5}')
endc_nr_cell_id=$(echo "$response" | awk -F',' '{print $6}')
endc_nr_arfcn=$(echo "$response" | awk -F',' '{print $7}')
endc_nr_physical_cell_id=$(echo "$response" | awk -F',' '{print $8}')
endc_nr_band_num=$(echo "$response" | awk -F',' '{print $9}')
endc_nr_band=$(fibocom_get_band "NR" ${endc_nr_band_num})
nr_dl_bandwidth_num=$(echo "$response" | awk -F',' '{print $10}')
endc_nr_dl_bandwidth=$(fibocom_get_nr_dl_bandwidth ${nr_dl_bandwidth_num})
endc_nr_sinr_num=$(echo "$response" | awk -F',' '{print $11}')
endc_nr_sinr=$(fibocom_get_sinr_num "NR" ${endc_nr_sinr_num})
endc_nr_rxlev_num=$(echo "$response" | awk -F',' '{print $12}')
endc_nr_rxlev=$(fibocom_get_rxlev "NR" ${endc_nr_rxlev_num})
endc_nr_rsrp_num=$(echo "$response" | awk -F',' '{print $13}')
endc_nr_rsrp=$(fibocom_get_rsrp "NR" ${endc_nr_rsrp_num})
endc_nr_rsrq_num=$(echo "$response" | awk -F',' '{print $14}' | sed 's/\r//g')
endc_nr_rsrq=$(fibocom_get_rsrq "NR" ${endc_nr_rsrq_num})
;;
"LTE"|"eMTC"|"NB-IoT")
network_mode="LTE Mode"
lte_mcc=$(echo "$response" | awk -F',' '{print $3}')
lte_mnc=$(echo "$response" | awk -F',' '{print $4}')
lte_tac=$(echo "$response" | awk -F',' '{print $5}')
lte_cell_id=$(echo "$response" | awk -F',' '{print $6}')
lte_earfcn=$(echo "$response" | awk -F',' '{print $7}')
lte_physical_cell_id=$(echo "$response" | awk -F',' '{print $8}')
lte_band_num=$(echo "$response" | awk -F',' '{print $9}')
lte_band=$(fibocom_get_band "LTE" ${lte_band_num})
ul_bandwidth_num=$(echo "$response" | awk -F',' '{print $10}')
lte_ul_bandwidth=$(fibocom_get_ul_bandwidth ${ul_bandwidth_num})
lte_dl_bandwidth="$lte_ul_bandwidth"
lte_rssnr=$(echo "$response" | awk -F',' '{print $11}')
lte_rxlev_num=$(echo "$response" | awk -F',' '{print $12}')
lte_rxlev=$(fibocom_get_rxlev "LTE" ${lte_rxlev_num})
lte_rsrp_num=$(echo "$response" | awk -F',' '{print $13}')
lte_rsrp=$(fibocom_get_rsrp "LTE" ${lte_rsrp_num})
lte_rsrq_num=$(echo "$response" | awk -F',' '{print $14}' | sed 's/\r//g')
lte_rsrq=$(fibocom_get_rsrq "LTE" ${lte_rsrq_num})
;;
"WCDMA"|"UMTS")
network_mode="WCDMA Mode"
wcdma_mcc=$(echo "$response" | awk -F',' '{print $3}')
wcdma_mnc=$(echo "$response" | awk -F',' '{print $4}')
wcdma_lac=$(echo "$response" | awk -F',' '{print $5}')
wcdma_cell_id=$(echo "$response" | awk -F',' '{print $6}')
wcdma_uarfcn=$(echo "$response" | awk -F',' '{print $7}')
wcdma_psc=$(echo "$response" | awk -F',' '{print $8}')
wcdma_band_num=$(echo "$response" | awk -F',' '{print $9}')
wcdma_band=$(fibocom_get_band "WCDMA" ${wcdma_band_num})
wcdma_ecno=$(echo "$response" | awk -F',' '{print $10}')
wcdma_rscp=$(echo "$response" | awk -F',' '{print $11}')
wcdma_rac=$(echo "$response" | awk -F',' '{print $12}')
wcdma_rxlev_num=$(echo "$response" | awk -F',' '{print $13}')
wcdma_rxlev=$(fibocom_get_rxlev "WCDMA" ${wcdma_rxlev_num})
wcdma_reserved=$(echo "$response" | awk -F',' '{print $14}')
wcdma_ecio_num=$(echo "$response" | awk -F',' '{print $15}' | sed 's/\r//g')
wcdma_ecio=$(fibocom_get_ecio ${wcdma_ecio_num})
;;
esac
#联发科平台特殊处理FM350-GL
[[ "$name" = "FM350-GL" ]] && {
nr_sinr="${nr_sinr_num}"
endc_nr_sinr="${endc_nr_sinr_num}"
}
#只选择第一个,然后退出
break
}
done
}

View File

@ -18,7 +18,7 @@ init_modem_info()
at_port='-' #AT串口
mode='unknown' #拨号模式
temperature="NaN $(printf "\xc2\xb0")C" #温度
update_time='-' #更新时间
update_time='-' #更新时间
#SIM卡信息
sim_status="unknown" #SIM卡状态
@ -31,9 +31,13 @@ init_modem_info()
#网络信息
connect_status="disconnect" #SIM卡状态
network_type="-" #蜂窝网络类型
tx_rate="-" #上传速率
rx_rate="-" #下载速率
network_type="-" #蜂窝网络类型
cqi_ul="-" #上行信道质量指示
cqi_dl="-" #下行信道质量指示
ambr_ul="-" #上行签约速率
ambr_dl="-" #下行签约速率
tx_rate="-" #上传速率
rx_rate="-" #下载速率
#小区信息
network_mode="-" #网络模式
@ -167,6 +171,10 @@ set_network_info()
{
network_info="\"network_info\":[
{\"Network Type\":\"$network_type\", \"full_name\":\"Network Type\"},
{\"CQI UL\":\"$cqi_ul\", \"full_name\":\"Channel Quality Indicator for Uplink\"},
{\"CQI DL\":\"$cqi_dl\", \"full_name\":\"Channel Quality Indicator for Downlink\"},
{\"AMBR UL\":\"$ambr_ul\", \"full_name\":\"Access Maximum Bit Rate for Uplink\"},
{\"AMBR DL\":\"$ambr_dl\", \"full_name\":\"Access Maximum Bit Rate for Downlink\"},
{\"Tx Rate\":\"$tx_rate\", \"full_name\":\"Transmit Rate\"},
{\"Rx Rate\":\"$rx_rate\", \"full_name\":\"Receive Rate\"}
],"

View File

@ -191,8 +191,8 @@ modem_network_task()
#获取AT串口制造商平台连接定义接口名称
local at_port=$(uci -q get modem.modem${modem_no}.at_port)
local manufacturer=$(uci -q get modem.modem${modem_no}.manufacturer)
local platform=$(uci -q get modem.modem${modem_no}.platform)
local manufacturer=$(uci -q get modem.modem${modem_no}.manufacturer)
local platform=$(uci -q get modem.modem${modem_no}.platform)
local define_connect=$(uci -q get modem.modem${modem_no}.define_connect)
local interface_name="wwan_5g_${modem_no}"
local interface_name_ipv6="wwan6_5g_${modem_no}"
@ -281,6 +281,7 @@ modem_network_task()
#重新设置网络接口广和通FM350-GL
if [ "$manufacturer" = "fibocom" ] && [ "$platform" = "mediatek" ]; then
reset_network_interface "${at_port}" "${define_connect}" "${modem_no}"
sleep 3s
fi
[ "$mode" != "modemmanager" ] && {

View File

@ -104,6 +104,70 @@
"data_interface":"usb",
"define_connect":"1",
"modes":["qmi","gobinet","ecm","mbim","rndis","ncm"]
},
"SRM815":{
"manufacturer_id":"2dee",
"manufacturer":"meig",
"platform":"qualcomm",
"data_interface":"usb",
"define_connect":"1",
"modes":["qmi","gobinet","ecm","mbim","rndis"]
},
"SRM825":{
"manufacturer_id":"2dee",
"manufacturer":"meig",
"platform":"qualcomm",
"data_interface":"usb",
"define_connect":"1",
"modes":["qmi","gobinet","ecm","mbim","rndis"]
},
"device":{
"quectel":{
"unisoc":{
"vendor_id":["2c7c"],
"product_id":["6001","6002","6004","6005","6006","6007","0900","0901","0902","0903","0904"]
},
"qualcomm":{
"vendor_id":["2c7c"],
"product_id":["0121","0125","0191","0195","0296","0306","030b","0435","0452","0455","0512","0620","0800","0801"]
},
"mediatek":{
"vendor_id":["2c7c"],
"product_id":["0700","7001","7003"]
}
},
"fibocom":{
"unisoc":{
"vendor_id":["2cb7","3c93","3763"],
"product_id":["0a04","0a05","0a06","0a07","3c93","ffff"]
},
"qualcomm":{
"vendor_id":["2cb7"],
"product_id":["0104","0105","0106","0107","0108","0109","010A","010B","010F","0110","0111"]
},
"mediatek":{
"vendor_id":["0e8d"],
"product_id":["7126","7127"]
}
},
"meig":{
"unisoc":{
"vendor_id":["2dee"],
"product_id":["4d50","4d51","4d52","4d53"]
},
"qualcomm":{
"vendor_id":["2dee","05c6"],
"product_id":["4d22","4d23","4d38","4d45","f601"]
},
"hisilicon":{
"vendor_id":["2dee","4d20"],
"product_id":["7126","7127"]
},
"asrmicro":{
"vendor_id":["2dee"],
"product_id":["4d57","4d58","4d59"]
}
}
}
},
"pcie":{

View File

@ -213,8 +213,15 @@ m_add_usb_id()
#如果已经添加则返回
grep -q "${manufacturer_id} ${product_id}" "${new_id_path}" && return
#添加ID
echo "${manufacturer_id} ${product_id}" >> "${new_id_path}"
while true; do
if [ -f "$new_id_path" ]; then
#添加ID
echo "${manufacturer_id} ${product_id}" >> "${new_id_path}"
break
fi
sleep 5s
done
}
#设置模组硬件配置

View File

@ -491,6 +491,24 @@ quectel_network_info()
# per=$((csq * 100/31))"%"
# fi
#最大比特率,信道质量指示
at_command='AT+QNWCFG="nr5g_ambr"'
response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "+QNWCFG:")
for context in $response; do
local apn=$(echo "$context" | awk -F'"' '{print $4}' | tr 'a-z' 'A-Z')
if [ -n "$apn" ] && [ "$apn" != "IMS" ]; then
#CQL UL上行信道质量指示
cqi_ul=$(echo "$context" | awk -F',' '{print $5}')
#CQI DL下行信道质量指示
cqi_dl=$(echo "$context" | awk -F',' '{print $3}')
#AMBR UL上行签约速率单位Mbps
ambr_ul=$(echo "$context" | awk -F',' '{print $6}' | sed 's/\r//g')
#AMBR DL下行签约速率单位Mbps
ambr_dl=$(echo "$context" | awk -F',' '{print $4}')
break
fi
done
#速率统计
at_command='AT+QNWCFG="up/down"'
response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "+QNWCFG:" | sed 's/+QNWCFG: "up\/down",//g' | sed 's/\r//g')