mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-02 04:23:56 +08:00
🌴 Sync 2026-03-05 23:51:42
This commit is contained in:
1 parent
0d155c70be
commit
32600acc60
14258 files changed
+3954570
No files matched your search
@@ -0,0 +1,182 @@
|
||||
{
|
||||
"quick_commands":{
|
||||
"general":[
|
||||
{"模组信息 > ATI":"ATI"},
|
||||
{"查询SIM卡状态 > AT+CPIN?":"AT+CPIN?"},
|
||||
{"查询网络信号质量(4G) > AT+CSQ":"AT+CSQ"},
|
||||
{"查询网络信号质量(5G) > AT+CESQ":"AT+CESQ"},
|
||||
{"查询网络信息 > AT+COPS?":"AT+COPS?"},
|
||||
{"查询PDP信息 > AT+CGDCONT?":"AT+CGDCONT?"},
|
||||
{"查询PDP地址 > AT+CGPADDR":"AT+CGPADDR"},
|
||||
{"查询模组IMEI > AT+CGSN":"AT+CGSN"},
|
||||
{"查询模组IMEI > AT+GSN":"AT+GSN"},
|
||||
{"查看当前电压 > AT+CBC":"AT+CBC"},
|
||||
{"最小功能模式 > AT+CFUN=0":"AT+CFUN=0"},
|
||||
{"全功能模式 > AT+CFUN=1":"AT+CFUN=1"},
|
||||
{"重启模组 > AT+CFUN=1,1":"AT+CFUN=1,1"}
|
||||
],
|
||||
"quectel":{
|
||||
"qualcomm":[
|
||||
{"SIM卡状态上报 > AT+QSIMSTAT?":"AT+QSIMSTAT?"},
|
||||
{"设置当前使用的为卡1 > AT+QUIMSLOT=1":"AT+QUIMSLOT=1"},
|
||||
{"设置当前使用的为卡2 > AT+QUIMSLOT=2":"AT+QUIMSLOT=2"},
|
||||
{"查询网络信息 > AT+QNWINFO":"AT+QNWINFO"},
|
||||
{"查询载波聚合参数 > AT+QCAINFO":"AT+QCAINFO"},
|
||||
{"查询当前拨号模式 > AT+QCFG=\"usbnet\"":"AT+QCFG=\"usbnet\""},
|
||||
{"QMI/GobiNet拨号模式 > AT+QCFG=\"usbnet\",0":"AT+QCFG=\"usbnet\",0"},
|
||||
{"ECM拨号模式 > AT+QCFG=\"usbnet\",1":"AT+QCFG=\"usbnet\",1"},
|
||||
{"MBIM拨号模式 > AT+QCFG=\"usbnet\",2":"AT+QCFG=\"usbnet\",2"},
|
||||
{"RNDIS拨号模式 > AT+QCFG=\"usbnet\",3":"AT+QCFG=\"usbnet\",3"},
|
||||
{"NCM拨号模式 > AT+QCFG=\"usbnet\",5":"AT+QCFG=\"usbnet\",5"},
|
||||
{"锁4G > AT+QNWPREFCFG=\"mode_pref\",LTE":"AT+QNWPREFCFG=\"mode_pref\",LTE"},
|
||||
{"锁5G > AT+QNWPREFCFG=\"mode_pref\",NR5G":"AT+QNWPREFCFG=\"mode_pref\",NR5G"},
|
||||
{"锁5G NSA > AT+QNWPREFCFG=\"mode_pref\",NR5G-NSA":"AT+QNWPREFCFG=\"mode_pref\",NR5G-NSA"},
|
||||
{"锁5G SA > AT+QNWPREFCFG=\"mode_pref\",NR5G-SA":"AT+QNWPREFCFG=\"mode_pref\",NR5G-SA"},
|
||||
{"恢复自动搜索网络 > AT+QNWPREFCFG=\"mode_pref\",AUTO":"AT+QNWPREFCFG=\"mode_pref\",AUTO"},
|
||||
{"查询模组IMEI > AT+EGMR=0,7":"AT+EGMR=0,7"},
|
||||
{"更改模组IMEI > AT+EGMR=1,7,\"IMEI\"":"AT+EGMR=1,7,\"在此设置IMEI\""},
|
||||
{"获取模组温度 > AT+QTEMP":"AT+QTEMP"},
|
||||
{"切换为USB通信端口 > AT+QCFG=\"data_interface\",0,0":"AT+QCFG=\"data_interface\",0,0"},
|
||||
{"切换为PCI通信端口 > AT+QCFG=\"data_interface\",1,0":"AT+QCFG=\"data_interface\",1,0"},
|
||||
{"查看当前USB速率 > AT+QCFG=\"usbspeed\"":"AT+QCFG=\"usbspeed\""},
|
||||
{"切换为USB2.0 > AT+QCFG=\"usbspeed\",\"20\"":"AT+QCFG=\"usbspeed\",\"20\""},
|
||||
{"切换为USB3.1 Gen1(5Gbps) > AT+QCFG=\"usbspeed\",\"311\"":"AT+QCFG=\"usbspeed\",\"311\""},
|
||||
{"切换为USB3.1 Gen1(10Gbps) > AT+QCFG=\"usbspeed\",\"312\"":"AT+QCFG=\"usbspeed\",\"312\""},
|
||||
{"重置模组 > AT+QCFG=\"ResetFactory\"":"AT+QCFG=\"ResetFactory\""}
|
||||
],
|
||||
"unisoc":[
|
||||
{"SIM卡状态上报 > AT+QSIMSTAT?":"AT+QSIMSTAT?"},
|
||||
{"设置当前使用的为卡1 > AT+QUIMSLOT=1":"AT+QUIMSLOT=1"},
|
||||
{"设置当前使用的为卡2 > AT+QUIMSLOT=2":"AT+QUIMSLOT=2"},
|
||||
{"查询网络信息 > AT+QNWINFO":"AT+QNWINFO"},
|
||||
{"查询载波聚合参数 > AT+QCAINFO":"AT+QCAINFO"},
|
||||
{"查询当前拨号模式 > AT+QCFG=\"usbnet\"":"AT+QCFG=\"usbnet\""},
|
||||
{"ECM拨号模式 > AT+QCFG=\"usbnet\",1":"AT+QCFG=\"usbnet\",1"},
|
||||
{"MBIM拨号模式 > AT+QCFG=\"usbnet\",2":"AT+QCFG=\"usbnet\",2"},
|
||||
{"RNDIS拨号模式 > AT+QCFG=\"usbnet\",3":"AT+QCFG=\"usbnet\",3"},
|
||||
{"NCM拨号模式 > AT+QCFG=\"usbnet\",5":"AT+QCFG=\"usbnet\",5"},
|
||||
{"锁4G > AT+QNWPREFCFG=\"mode_pref\",LTE":"AT+QNWPREFCFG=\"mode_pref\",LTE"},
|
||||
{"锁5G > AT+QNWPREFCFG=\"mode_pref\",NR5G":"AT+QNWPREFCFG=\"mode_pref\",NR5G"},
|
||||
{"锁5G NSA > AT+QNWPREFCFG=\"mode_pref\",NR5G-NSA":"AT+QNWPREFCFG=\"mode_pref\",NR5G-NSA"},
|
||||
{"锁5G SA > AT+QNWPREFCFG=\"mode_pref\",NR5G-SA":"AT+QNWPREFCFG=\"mode_pref\",NR5G-SA"},
|
||||
{"恢复自动搜索网络 > AT+QNWPREFCFG=\"mode_pref\",AUTO":"AT+QNWPREFCFG=\"mode_pref\",AUTO"},
|
||||
{"查询模组IMEI > AT+EGMR=0,7":"AT+EGMR=0,7"},
|
||||
{"更改模组IMEI > AT+EGMR=1,7,\"IMEI\"":"AT+EGMR=1,7,\"在此设置IMEI\""},
|
||||
{"获取模组温度 > AT+QTEMP":"AT+QTEMP"},
|
||||
{"切换为USB通信端口 > AT+QCFG=\"data_interface\",0,0":"AT+QCFG=\"data_interface\",0,0"},
|
||||
{"切换为PCI通信端口 > AT+QCFG=\"data_interface\",1,0":"AT+QCFG=\"data_interface\",1,0"},
|
||||
{"查看当前USB速率 > AT+QCFG=\"usbspeed\"":"AT+QCFG=\"usbspeed\""},
|
||||
{"切换为USB2.0 > AT+QCFG=\"usbspeed\",\"20\"":"AT+QCFG=\"usbspeed\",\"20\""},
|
||||
{"切换为USB3.1 Gen1(5Gbps) > AT+QCFG=\"usbspeed\",\"311\"":"AT+QCFG=\"usbspeed\",\"311\""},
|
||||
{"切换为USB3.1 Gen1(10Gbps) > AT+QCFG=\"usbspeed\",\"312\"":"AT+QCFG=\"usbspeed\",\"312\""},
|
||||
{"重置模组 > AT+QCFG=\"ResetFactory\"":"AT+QCFG=\"ResetFactory\""}
|
||||
]
|
||||
},
|
||||
"fibocom":{
|
||||
"qualcomm":[
|
||||
{"设置当前使用的为卡1 > AT+GTDUALSIM=0":"AT+GTDUALSIM=0"},
|
||||
{"设置当前使用的为卡2 > AT+GTDUALSIM=1":"AT+GTDUALSIM=1"},
|
||||
{"ECM手动拨号 > AT+GTRNDIS=1,1":"AT+GTRNDIS=1,1"},
|
||||
{"ECM拨号断开 > AT+GTRNDIS=0,1":"AT+GTRNDIS=0,1"},
|
||||
{"查询当前端口模式 > AT+GTUSBMODE?":"AT+GTUSBMODE?"},
|
||||
{"QMI/GobiNet拨号模式 > AT+GTUSBMODE=32":"AT+GTUSBMODE=32"},
|
||||
{"ECM拨号模式 > AT+GTUSBMODE=18":"AT+GTUSBMODE=18"},
|
||||
{"MBIM拨号模式 > AT+GTUSBMODE=30":"AT+GTUSBMODE=30"},
|
||||
{"RNDIS拨号模式 > AT+GTUSBMODE=24":"AT+GTUSBMODE=24"},
|
||||
{"NCM拨号模式 > AT+GTUSBMODE=18":"AT+GTUSBMODE=18"},
|
||||
{"锁4G > AT+GTACT=2":"AT+GTACT=2"},
|
||||
{"锁5G > AT+GTACT=14":"AT+GTACT=14"},
|
||||
{"恢复自动搜索网络 > AT+GTACT=20":"AT+GTACT=20"},
|
||||
{"查询当前连接的网络类型 > AT+PSRAT?":"AT+PSRAT?"},
|
||||
{"查询模组IMEI > AT+GTSN=0,7":"AT+GTSN=0,7"},
|
||||
{"更改模组IMEI > AT+GTSN=1,7,\"IMEI\"":"AT+GTSN=1,7,\"在此设置IMEI\""},
|
||||
{"报告一次当前BBIC的温度 > AT+MTSM=1,6":"AT+MTSM=1,6"},
|
||||
{"报告一次当前射频的温度 > AT+MTSM=1,7":"AT+MTSM=1,7"},
|
||||
{"重启模组 > AT+CFUN=15":"AT+CFUN=15"}
|
||||
],
|
||||
"unisoc":[
|
||||
{"设置当前使用的为卡1 > AT+GTDUALSIM=0":"AT+GTDUALSIM=0"},
|
||||
{"设置当前使用的为卡2 > AT+GTDUALSIM=1":"AT+GTDUALSIM=1"},
|
||||
{"ECM手动拨号 > AT+GTRNDIS=1,1":"AT+GTRNDIS=1,1"},
|
||||
{"ECM拨号断开 > AT+GTRNDIS=0,1":"AT+GTRNDIS=0,1"},
|
||||
{"查询当前端口模式 > AT+GTUSBMODE?":"AT+GTUSBMODE?"},
|
||||
{"ECM拨号模式 > AT+GTUSBMODE=18":"AT+GTUSBMODE=18"},
|
||||
{"MBIM拨号模式 > AT+GTUSBMODE=30":"AT+GTUSBMODE=30"},
|
||||
{"RNDIS拨号模式 > AT+GTUSBMODE=24":"AT+GTUSBMODE=24"},
|
||||
{"NCM拨号模式 > AT+GTUSBMODE=18":"AT+GTUSBMODE=18"},
|
||||
{"锁4G > AT+GTACT=2":"AT+GTACT=2"},
|
||||
{"锁5G > AT+GTACT=14":"AT+GTACT=14"},
|
||||
{"恢复自动搜索网络 > AT+GTACT=20":"AT+GTACT=20"},
|
||||
{"查询当前连接的网络类型 > AT+PSRAT?":"AT+PSRAT?"},
|
||||
{"查询模组IMEI > AT+GTSN=0,7":"AT+GTSN=0,7"},
|
||||
{"更改模组IMEI > AT+GTSN=1,7,\"IMEI\"":"AT+GTSN=1,7,\"在此设置IMEI\""},
|
||||
{"报告一次当前BBIC的温度 > AT+MTSM=1,6":"AT+MTSM=1,6"},
|
||||
{"报告一次当前射频的温度 > AT+MTSM=1,7":"AT+MTSM=1,7"},
|
||||
{"重启模组 > AT+CFUN=15":"AT+CFUN=15"}
|
||||
],
|
||||
"mediatek":[
|
||||
{"设置当前使用的为卡1 > AT+GTDUALSIM=0":"AT+GTDUALSIM=0"},
|
||||
{"设置当前使用的为卡2 > AT+GTDUALSIM=1":"AT+GTDUALSIM=1"},
|
||||
{"手动设置接入点 > AT+CGDCONT=3,\"IPV4V6\",\"APN\"":"AT+CGDCONT=3,\"IPV4V6\",\"在此设置APN\""},
|
||||
{"手动拨号 > AT+CGACT=1,3":"AT+CGACT=1,3"},
|
||||
{"停止拨号 > AT+CGACT=0,3":"AT+CGACT=0,3"},
|
||||
{"查询当前端口模式 > AT+GTUSBMODE?":"AT+GTUSBMODE?"},
|
||||
{"RNDIS拨号模式(40) > AT+GTUSBMODE=40":"AT+GTUSBMODE=40"},
|
||||
{"RNDIS拨号模式(41) > AT+GTUSBMODE=41":"AT+GTUSBMODE=41"},
|
||||
{"锁4G > AT+GTACT=2":"AT+GTACT=2"},
|
||||
{"锁5G > AT+GTACT=14":"AT+GTACT=14"},
|
||||
{"恢复自动搜索网络 > AT+GTACT=20":"AT+GTACT=20"},
|
||||
{"查询当前连接的网络类型 > AT+PSRAT?":"AT+PSRAT?"},
|
||||
{"查询载波聚合小区信息 > AT+GTCAINFO?":"AT+GTCAINFO?"},
|
||||
{"查询模组IMEI > AT+GTSN=0,7":"AT+GTSN=0,7"},
|
||||
{"更改模组IMEI > AT+GTSN=1,7,\"IMEI\"":"AT+GTSN=1,7,\"在此设置IMEI\""},
|
||||
{"解锁FCC > AT+GTFCCLOCKMODE=0":"AT+GTFCCLOCKMODE=0"},
|
||||
{"解除ESIM锁定 > AT+GTESIMCFG=0,0,0":"AT+GTESIMCFG=0,0,0"},
|
||||
{"解除温控 > AT+GTTHERMAL=0":"AT+GTTHERMAL=0"},
|
||||
{"获取当前温度 > AT+GTSENRDTEMP=0":"AT+GTSENRDTEMP=0"},
|
||||
{"重启模组 > AT+CFUN=15":"AT+CFUN=15"}
|
||||
]
|
||||
},
|
||||
"meig":{
|
||||
"qualcomm":[
|
||||
{"SIM卡状态上报 > AT^SIMSLOTURC=1":"AT^SIMSLOTURC=1"},
|
||||
{"获取SIM卡卡槽状态 > AT^SIMSLOT?":"AT^SIMSLOT?"},
|
||||
{"设置当前使用的为卡1 > AT^SIMSLOT=1":"AT^SIMSLOT=1"},
|
||||
{"设置当前使用的为卡2 > AT^SIMSLOT=2":"AT^SIMSLOT=2"},
|
||||
{"查询网络信息 > AT^SYSINFOEX":"AT^SYSINFOEX"},
|
||||
{"查询载波聚合小区信息 > AT^CELLINFO=1":"AT^CELLINFO=1"},
|
||||
{"查询当前拨号模式 > AT+SER?":"AT+SER?"},
|
||||
{"QMI/GobiNet拨号模式 > AT+SER=1,1":"AT+SER=1,1"},
|
||||
{"ECM拨号模式 > AT+SER=2,1":"AT+SER=2,1"},
|
||||
{"MBIM拨号模式 > AT+SER=3,1":"AT+SER=3,1"},
|
||||
{"RNDIS拨号模式 > AT+SER=3,1":"AT+SER=3,1"},
|
||||
{"NCM拨号模式 > AT+SER=2,1":"AT+SER=2,1"},
|
||||
{"锁4G > AT^SYSCFGEX=\"03\",all,0,2,all,all,all,all,1":"AT^SYSCFGEX=\"03\",all,0,2,all,all,all,all,1"},
|
||||
{"锁5G > AT^SYSCFGEX=\"04\",all,0,2,all,all,all,all,1":"AT^SYSCFGEX=\"04\",all,0,2,all,all,all,all,1"},
|
||||
{"恢复自动搜索网络 > AT^SYSCFGEX=\"00\",all,0,2,all,all,all,all,1":"AT^SYSCFGEX=\"00\",all,0,2,all,all,all,all,1"},
|
||||
{"查询模组IMEI > AT+LCTSN=0,7":"AT+LCTSN=0,7"},
|
||||
{"更改模组IMEI > AT+LCTSN=1,7,\"IMEI\"":"AT+LCTSN=1,7,\"在此设置IMEI\""},
|
||||
{"获取模组温度 > AT+TEMP":"AT+TEMP"},
|
||||
{"重启模组 > AT+RESET":"AT+RESET"}
|
||||
]
|
||||
},
|
||||
"huawei":{
|
||||
"hisilicon":[
|
||||
{"获取SIM卡卡槽状态 > AT^SIMSLOT?":"AT^SIMSLOT?"},
|
||||
{"设置当前使用的为卡1 > AT^SIMSWITCH=1":"AT^SIMSWITCH=1"},
|
||||
{"设置当前使用的为卡2 > AT^SIMSWITCH=0":"AT^SIMSWITCH=0"},
|
||||
{"查询网络信息 > AT^SYSINFOEX":"AT^SYSINFOEX"},
|
||||
{"查询当前拨号模式 > AT^SETMODE?":"AT^SETMODE?"},
|
||||
{"ECM拨号模式(Linux) > AT^SETMODE=0":"AT^SETMODE=0"},
|
||||
{"NCM拨号模式(Windows) > AT^SETMODE=1":"AT^SETMODE=1"},
|
||||
{"ECM拨号模式(Linux,Debug) > AT^SETMODE=2":"AT^SETMODE=2"},
|
||||
{"NCM拨号模式(Windows,Debug) > AT^SETMODE=3":"AT^SETMODE=3"},
|
||||
{"锁4G > AT^SYSCFGEX=\"03\",40000000,1,2,7FFFFFFFFFFFFFFF,,":"AT^SYSCFGEX=\"03\",40000000,1,2,7FFFFFFFFFFFFFFF,,"},
|
||||
{"锁5G > AT^SYSCFGEX=\"08\",40000000,1,2,7FFFFFFFFFFFFFFF,,":"AT^SYSCFGEX=\"08\",40000000,1,2,7FFFFFFFFFFFFFFF,,"},
|
||||
{"恢复自动搜索网络 > AT^SYSCFGEX=\"00\",3FFFFFFF,1,2,7FFFFFFFFFFFFFFF,,":"AT^SYSCFGEX=\"00\",3FFFFFFF,1,2,7FFFFFFFFFFFFFFF,,"},
|
||||
{"获取模组温度 > AT^CHIPTEMP?":"AT^CHIPTEMP?"},
|
||||
{"重启模组 > AT^RESET":"AT^RESET"}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
+1104
File diff suppressed because it is too large.
Load diff
+928
@@ -0,0 +1,928 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2023 Siriling <siriling@qq.com>
|
||||
|
||||
#脚本目录
|
||||
SCRIPT_DIR="/usr/share/modem"
|
||||
|
||||
#预设
|
||||
huawei_presets()
|
||||
{
|
||||
#关闭模组主动上报
|
||||
at_command='AT^CURC=0'
|
||||
sh "${SCRIPT_DIR}/modem_at.sh" "$at_port" "$at_command"
|
||||
|
||||
#开启5G NA NSA接入
|
||||
at_command='AT^C5GOPTION=1,3,3'
|
||||
sh "${SCRIPT_DIR}/modem_at.sh" "$at_port" "$at_command"
|
||||
}
|
||||
|
||||
#获取DNS
|
||||
# $1:AT串口
|
||||
# $2:连接定义
|
||||
huawei_get_dns()
|
||||
{
|
||||
local at_port="$1"
|
||||
local define_connect="$2"
|
||||
|
||||
[ -z "$define_connect" ] && {
|
||||
define_connect="1"
|
||||
}
|
||||
|
||||
local public_dns1_ipv4="223.5.5.5"
|
||||
local public_dns2_ipv4="119.29.29.29"
|
||||
local public_dns1_ipv6="2400:3200::1" #下一代互联网北京研究中心:240C::6666,阿里:2400:3200::1,腾讯:2402:4e00::
|
||||
local public_dns2_ipv6="2402:4e00::"
|
||||
|
||||
#获取DNS地址(IPv4)
|
||||
at_command="AT^DHCP=${define_connect}"
|
||||
local response=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "\^DHCP:" | sed -n '1p')
|
||||
|
||||
local ipv4_dns1=$(echo "${response}" | awk -F',' '{print $5}')
|
||||
if [ -z "$ipv4_dns1" ]; then
|
||||
ipv4_dns1="${public_dns1_ipv4}"
|
||||
else
|
||||
#按字节(byte)将十六进制拆分并转换为对应的十进制表示
|
||||
ipv4_dns1=$(echo "$ipv4_dns1" | awk '{
|
||||
for (i = length; i >= 1; i -= 2) {
|
||||
printf "%d.", "0x" substr($0, i-1, 2)
|
||||
}
|
||||
}')
|
||||
ipv4_dns1="${ipv4_dns1%?}"
|
||||
fi
|
||||
|
||||
local ipv4_dns2=$(echo "${response}" | awk -F',' '{print $6}')
|
||||
if [ -z "$ipv4_dns2" ]; then
|
||||
ipv4_dns2="${public_dns1_ipv4}"
|
||||
else
|
||||
#按字节(byte)将十六进制拆分并转换为对应的十进制表示
|
||||
ipv4_dns2=$(echo "$ipv4_dns2" | awk '{
|
||||
for (i = length; i >= 1; i -= 2) {
|
||||
printf "%d.", "0x" substr($0, i-1, 2)
|
||||
}
|
||||
}')
|
||||
ipv4_dns2="${ipv4_dns2%?}"
|
||||
fi
|
||||
|
||||
#获取DNS地址(IPv6)
|
||||
at_command="AT^DHCPV6=${define_connect}"
|
||||
local response=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "\^DHCPV6:" | sed -n '1p')
|
||||
|
||||
local ipv6_dns1=$(echo "${response}" | awk -F',' '{print $5}')
|
||||
[ -z "$ipv6_dns1" ] && {
|
||||
ipv6_dns1="${public_dns1_ipv6}"
|
||||
}
|
||||
|
||||
local ipv6_dns2=$(echo "${response}" | awk -F',' '{print $6}')
|
||||
[ -z "$ipv6_dns2" ] && {
|
||||
ipv6_dns2="${public_dns2_ipv6}"
|
||||
}
|
||||
|
||||
dns="{
|
||||
\"dns\":{
|
||||
\"ipv4_dns1\":\"$ipv4_dns1\",
|
||||
\"ipv4_dns2\":\"$ipv4_dns2\",
|
||||
\"ipv6_dns1\":\"$ipv6_dns1\",
|
||||
\"ipv6_dns2\":\"$ipv6_dns2\"
|
||||
}
|
||||
}"
|
||||
|
||||
echo "$dns"
|
||||
}
|
||||
|
||||
#获取拨号模式
|
||||
# $1:AT串口
|
||||
# $2:平台
|
||||
huawei_get_mode()
|
||||
{
|
||||
local at_port="$1"
|
||||
local platform="$2"
|
||||
|
||||
at_command="AT^SETMODE?"
|
||||
local mode_num=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "\^SETMODE:" | awk -F': ' '{print $2}' | sed 's/\r//g')
|
||||
|
||||
if [ -z "$mode_num" ]; then
|
||||
echo "unknown"
|
||||
return
|
||||
fi
|
||||
|
||||
#获取芯片平台
|
||||
if [ -z "$platform" ]; then
|
||||
local modem_number=$(uci -q get modem.@global[0].modem_number)
|
||||
for i in $(seq 0 $((modem_number-1))); do
|
||||
local at_port_tmp=$(uci -q get modem.modem$i.at_port)
|
||||
if [ "$at_port" = "$at_port_tmp" ]; then
|
||||
platform=$(uci -q get modem.modem$i.platform)
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
local mode
|
||||
case "$platform" in
|
||||
"hisilicon")
|
||||
case "$mode_num" in
|
||||
"0"|"2") mode="ecm" ;;
|
||||
"1"|"3"|"4"|"5") mode="ncm" ;;
|
||||
"6") mode="rndis" ;;
|
||||
"7") mode="mbim" ;;
|
||||
"8") mode="ppp" ;;
|
||||
*) mode="$mode_num" ;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
mode="$mode_num"
|
||||
;;
|
||||
esac
|
||||
echo "${mode}"
|
||||
}
|
||||
|
||||
#设置拨号模式
|
||||
# $1:AT串口
|
||||
# $2:拨号模式配置
|
||||
huawei_set_mode()
|
||||
{
|
||||
local at_port="$1"
|
||||
local mode_config="$2"
|
||||
|
||||
#获取芯片平台
|
||||
local platform
|
||||
local modem_number=$(uci -q get modem.@global[0].modem_number)
|
||||
for i in $(seq 0 $((modem_number-1))); do
|
||||
local at_port_tmp=$(uci -q get modem.modem$i.at_port)
|
||||
if [ "$at_port" = "$at_port_tmp" ]; then
|
||||
platform=$(uci -q get modem.modem$i.platform)
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
#获取拨号模式配置
|
||||
local mode_num
|
||||
case "$platform" in
|
||||
"hisilicon")
|
||||
case "$mode_config" in
|
||||
"ecm") mode_num="0" ;;
|
||||
"ncm") mode_num="4" ;;
|
||||
*) mode_num="0" ;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
mode_num="0"
|
||||
;;
|
||||
esac
|
||||
|
||||
#设置模组
|
||||
at_command="AT^SETMODE=${mode_num}"
|
||||
sh ${SCRIPT_DIR}/modem_at.sh ${at_port} "${at_command}"
|
||||
}
|
||||
|
||||
#获取位
|
||||
# $1:频段名称
|
||||
huawei_get_bit()
|
||||
{
|
||||
local band_name="$1"
|
||||
|
||||
local bit
|
||||
case "$band_name" in
|
||||
"DCS_1800") bit="8" ;;
|
||||
"E-GSM_900"|"E_GSM_900") bit="9" ;;
|
||||
"P-GSM_900"|"P_GSM_900") bit="10" ;;
|
||||
"GSM_450") bit="17" ;;
|
||||
"GSM_480") bit="18" ;;
|
||||
"GSM_750") bit="19" ;;
|
||||
"GSM_850") bit="20" ;;
|
||||
"R-GSM_900"|"R_GSM_900") bit="21" ;;
|
||||
"PCS_1900") bit="22" ;;
|
||||
esac
|
||||
|
||||
echo "${bit}"
|
||||
}
|
||||
|
||||
#获取频段信息
|
||||
# $1:频段二进制数
|
||||
# $2:支持的频段
|
||||
# $3:频段类型(2G,3G,4G,5G)
|
||||
huawei_get_band_info()
|
||||
{
|
||||
local band_bin="$1"
|
||||
local support_band="$2"
|
||||
local band_type="$3"
|
||||
|
||||
local band_info=""
|
||||
local support_band=$(echo "$support_band" | sed 's/,/ /g')
|
||||
if [ "$band_type" = "2G" ]; then
|
||||
|
||||
for band in $support_band; do
|
||||
#获取bit位
|
||||
local bit=$(huawei_get_bit ${band})
|
||||
#获取值
|
||||
local enable="${band_bin: $((-bit)):1}"
|
||||
[ -z "$enable" ] && enable="0"
|
||||
#设置频段信息
|
||||
# band_info=$(echo ${band_info} | jq '. += [{"'$band'":'$enable'}]')
|
||||
band_info="${band_info},{\"$band\":$enable}"
|
||||
done
|
||||
else
|
||||
#频段频段起始,前缀位置
|
||||
local start_bit
|
||||
local band_prefix
|
||||
case "$band_type" in
|
||||
"3G")
|
||||
start_bit="23"
|
||||
band_prefix="WCDMA_B"
|
||||
;;
|
||||
"4G")
|
||||
start_bit="1"
|
||||
band_prefix="LTE_BC"
|
||||
;;
|
||||
"5G")
|
||||
start_bit="1"
|
||||
band_prefix="NR5G_N"
|
||||
;;
|
||||
esac
|
||||
|
||||
for band in $support_band; do
|
||||
#获取值(从start_bit位开始)
|
||||
local enable="${band_bin: $((-band-start_bit+1)):1}"
|
||||
[ -z "$enable" ] && enable="0"
|
||||
#设置频段信息
|
||||
# band_info=$(echo ${band_info} | jq '. += [{'$band_prefix$band':'$enable'}]')
|
||||
band_info="${band_info},{\"$band_prefix$band\":$enable}"
|
||||
done
|
||||
fi
|
||||
#去掉第一个,
|
||||
band_info="["${band_info/,/}"]"
|
||||
# band_info="[${band_info%?}]"
|
||||
|
||||
echo "${band_info}"
|
||||
}
|
||||
|
||||
#获取网络偏好
|
||||
# $1:AT串口
|
||||
# $2:数据接口
|
||||
# $3:模组名称
|
||||
huawei_get_network_prefer()
|
||||
{
|
||||
local at_port="$1"
|
||||
local data_interface="$2"
|
||||
local modem_name="$3"
|
||||
|
||||
at_command="AT^SYSCFGEX?"
|
||||
local response=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "\^SYSCFGEX:" | sed 's/\^SYSCFGEX://g')
|
||||
local network_type_num=$(echo "$response" | awk -F'"' '{print $2}')
|
||||
|
||||
#获取网络类型
|
||||
local network_prefer_2g="0";
|
||||
local network_prefer_3g="0";
|
||||
local network_prefer_4g="0";
|
||||
local network_prefer_5g="0";
|
||||
|
||||
#匹配不同的网络类型
|
||||
local auto=$(echo "${network_type_num}" | grep "00")
|
||||
if [ -n "$auto" ]; then
|
||||
network_prefer_2g="1"
|
||||
network_prefer_3g="1"
|
||||
network_prefer_4g="1"
|
||||
network_prefer_5g="1"
|
||||
else
|
||||
local gsm=$(echo "${network_type_num}" | grep "01")
|
||||
local wcdma=$(echo "${network_type_num}" | grep "02")
|
||||
local lte=$(echo "${network_type_num}" | grep "03")
|
||||
local nr=$(echo "${network_type_num}" | grep "08")
|
||||
if [ -n "$gsm" ]; then
|
||||
network_prefer_2g="1"
|
||||
fi
|
||||
if [ -n "$wcdma" ]; then
|
||||
network_prefer_3g="1"
|
||||
fi
|
||||
if [ -n "$lte" ]; then
|
||||
network_prefer_4g="1"
|
||||
fi
|
||||
if [ -n "$nr" ]; then
|
||||
network_prefer_5g="1"
|
||||
fi
|
||||
fi
|
||||
|
||||
#获取模组信息
|
||||
local modem_info=$(jq '.modem_support.'$data_interface'."'$modem_name'"' ${SCRIPT_DIR}/modem_support.json)
|
||||
|
||||
#获取模组支持的频段
|
||||
local support_2g_band=$(echo "$modem_info" | jq -r '.band_2g')
|
||||
local support_3g_band=$(echo "$modem_info" | jq -r '.band_3g')
|
||||
local support_4g_band=$(echo "$modem_info" | jq -r '.band_4g')
|
||||
local support_5g_band=$(echo "$modem_info" | jq -r '.band_5g')
|
||||
|
||||
#获取频段信息
|
||||
local band_hex_2g_3g=$(echo "$response" | awk -F',' '{print $2}')
|
||||
#十六进制转二进制
|
||||
local bin_2g_3g=$(echo "obase=2; ibase=16; $band_hex_2g_3g" | bc)
|
||||
local band_2g_info=$(huawei_get_band_info "${bin_2g_3g}" "${support_2g_band}" "2G")
|
||||
local band_3g_info=$(huawei_get_band_info "${bin_2g_3g}" "${support_3g_band}" "3G")
|
||||
|
||||
local band_hex_4g_5g=$(echo "$response" | awk -F',' '{print $5}' | sed 's/\r//g')
|
||||
#十六进制转二进制
|
||||
local bin_4g_5g=$(echo "obase=2; ibase=16; $band_hex_4g_5g" | bc)
|
||||
local band_4g_info=$(huawei_get_band_info "${bin_4g_5g}" "${support_4g_band}" "4G")
|
||||
local band_5g_info=$(huawei_get_band_info "${bin_4g_5g}" "${support_5g_band}" "5G")
|
||||
|
||||
#生成网络偏好
|
||||
local network_prefer="{
|
||||
\"network_prefer\":[
|
||||
{\"2G\":{
|
||||
\"enable\":$network_prefer_2g,
|
||||
\"band\":$band_2g_info
|
||||
}},
|
||||
{\"3G\":{
|
||||
\"enable\":$network_prefer_3g,
|
||||
\"band\":$band_3g_info
|
||||
}},
|
||||
{\"4G\":{
|
||||
\"enable\":$network_prefer_4g,
|
||||
\"band\":$band_4g_info
|
||||
}},
|
||||
{\"5G\":{
|
||||
\"enable\":$network_prefer_5g,
|
||||
\"band\":$band_5g_info
|
||||
}}
|
||||
]
|
||||
}"
|
||||
echo "${network_prefer}"
|
||||
}
|
||||
|
||||
#设置网络偏好
|
||||
# $1:AT串口
|
||||
# $2:网络偏好配置
|
||||
huawei_set_network_prefer()
|
||||
{
|
||||
local at_port="$1"
|
||||
local network_prefer="$2"
|
||||
|
||||
#获取启用的网络偏好
|
||||
local enable_5g=$(echo "$network_prefer" | jq -r '.["5G"].enable')
|
||||
local enable_4g=$(echo "$network_prefer" | jq -r '.["4G"].enable')
|
||||
local enable_3g=$(echo "$network_prefer" | jq -r '.["3G"].enable')
|
||||
local enable_2g=$(echo "$network_prefer" | jq -r '.["2G"].enable')
|
||||
|
||||
#获取网络偏好配置
|
||||
local network_prefer_config
|
||||
[ "$enable_5g" = "1" ] && network_prefer_config="${network_prefer_config}08"
|
||||
[ "$enable_4g" = "1" ] && network_prefer_config="${network_prefer_config}03"
|
||||
[ "$enable_3g" = "1" ] && network_prefer_config="${network_prefer_config}02"
|
||||
[ "$enable_2g" = "1" ] && network_prefer_config="${network_prefer_config}01"
|
||||
|
||||
[ -z "$network_prefer_config" ] && network_prefer_config="99"
|
||||
|
||||
#设置模组
|
||||
at_command='AT^SYSCFGEX="'${network_prefer_config}'",40000000,1,2,40000000,,'
|
||||
sh ${SCRIPT_DIR}/modem_at.sh "${at_port}" "${at_command}"
|
||||
}
|
||||
|
||||
#设置频段
|
||||
# $1:AT串口
|
||||
# $2:频段偏好配置
|
||||
huawei_set_band_prefer()
|
||||
{
|
||||
local at_port="$1"
|
||||
local network_prefer="$2"
|
||||
|
||||
#获取选中的数量
|
||||
local count=$(echo "$network_prefer" | grep -o "1" | wc -l)
|
||||
#获取每个偏好的值
|
||||
local network_prefer_5g=$(echo "$network_prefer" | jq -r '.["5G"]')
|
||||
local network_prefer_4g=$(echo "$network_prefer" | jq -r '.["4G"]')
|
||||
local network_prefer_3g=$(echo "$network_prefer" | jq -r '.["3G"]')
|
||||
local network_prefer_2g=$(echo "$network_prefer" | jq -r '.["2G"]')
|
||||
|
||||
#获取启用的网络偏好
|
||||
local enable_5g=$(echo "$network_prefer_5g" | jq -r '.enable')
|
||||
local enable_4g=$(echo "$network_prefer_4g" | jq -r '.enable')
|
||||
local enable_3g=$(echo "$network_prefer_3g" | jq -r '.enable')
|
||||
local enable_2g=$(echo "$network_prefer_2g" | jq -r '.enable')
|
||||
|
||||
#获取网络偏好配置和频段偏好配置
|
||||
local network_prefer_config
|
||||
local band_hex_2g_3g=0
|
||||
local band_hex_4g_5g=0
|
||||
|
||||
[ "$enable_5g" = "1" ] && {
|
||||
network_prefer_config="${network_prefer_config}08"
|
||||
local band_tmp=$(echo "$network_prefer_5g" | jq -r '.band[]')
|
||||
|
||||
local i=0
|
||||
local bands=$(echo "$band_tmp" | jq -r 'to_entries | .[] | .key')
|
||||
#遍历band的值
|
||||
for band in $bands; do
|
||||
local value=$(echo "$network_prefer_5g" | jq -r '.band'"[$i].$band")
|
||||
[ "$value" = "1" ] && {
|
||||
#获取bit位
|
||||
local bit=$(echo "$band" | sed 's/NR5G_N//g')
|
||||
#获取值
|
||||
local result=$(echo "obase=16; ibase=10; 2^($bit-1)" | bc)
|
||||
band_hex_4g_5g=$(echo "obase=16; ibase=16; $band_hex_4g_5g + $result" | bc)
|
||||
}
|
||||
i=$((i+1))
|
||||
done
|
||||
}
|
||||
|
||||
[ "$enable_4g" = "1" ] && {
|
||||
network_prefer_config="${network_prefer_config}03"
|
||||
local band_tmp=$(echo "$network_prefer_4g" | jq -r '.band[]')
|
||||
|
||||
local i=0
|
||||
local bands=$(echo "$band_tmp" | jq -r 'to_entries | .[] | .key')
|
||||
#遍历band的值
|
||||
for band in $bands; do
|
||||
local value=$(echo "$network_prefer_4g" | jq -r '.band'"[$i].$band")
|
||||
[ "$value" = "1" ] && {
|
||||
#获取bit位
|
||||
local bit=$(echo "$band" | sed 's/LTE_BC//g')
|
||||
#获取值
|
||||
local result=$(echo "obase=16; ibase=10; 2^($bit-1)" | bc)
|
||||
band_hex_4g_5g=$(echo "obase=16; ibase=16; $band_hex_4g_5g + $result" | bc)
|
||||
}
|
||||
i=$((i+1))
|
||||
done
|
||||
}
|
||||
|
||||
[ "$enable_3g" = "1" ] && {
|
||||
network_prefer_config="${network_prefer_config}02"
|
||||
local band_tmp=$(echo "$network_prefer_3g" | jq -r '.band[]')
|
||||
|
||||
local i=0
|
||||
local bands=$(echo "$band_tmp" | jq -r 'to_entries | .[] | .key')
|
||||
#遍历band的值
|
||||
for band in $bands; do
|
||||
local value=$(echo "$network_prefer_3g" | jq -r '.band'"[$i].$band")
|
||||
[ "$value" = "1" ] && {
|
||||
#获取bit位
|
||||
local bit=$(echo "$band" | sed 's/WCDMA_B//g')
|
||||
#获取值
|
||||
local result=$(echo "obase=16; ibase=10; 2^($bit+22-1)" | bc)
|
||||
band_hex_2g_3g=$(echo "obase=16; ibase=16; $band_hex_2g_3g + $result" | bc)
|
||||
}
|
||||
i=$((i+1))
|
||||
done
|
||||
}
|
||||
|
||||
[ "$enable_2g" = "1" ] && {
|
||||
network_prefer_config="${network_prefer_config}01"
|
||||
local band_tmp=$(echo "$network_prefer_2g" | jq -r '.band[]')
|
||||
|
||||
local i=0
|
||||
local bands=$(echo "$band_tmp" | jq -r 'to_entries | .[] | .key')
|
||||
#遍历band的值
|
||||
for band in $bands; do
|
||||
# band_format=$(echo "$band" | sed 's/-/_/g')
|
||||
local value=$(echo "$network_prefer_2g" | jq -r '.band'"[$i].$band")
|
||||
[ "$value" = "1" ] && {
|
||||
#获取bit位
|
||||
local bit=$(huawei_get_bit ${band})
|
||||
#获取值
|
||||
local result=$(echo "obase=16; ibase=10; 2^($bit-1)" | bc)
|
||||
band_hex_2g_3g=$(echo "obase=16; ibase=16; $band_hex_2g_3g + $result" | bc)
|
||||
}
|
||||
i=$((i+1))
|
||||
done
|
||||
}
|
||||
|
||||
[ -z "$network_prefer_config" ] && network_prefer_config="99"
|
||||
|
||||
#设置模组
|
||||
at_command='AT^SYSCFGEX="'${network_prefer_config}'",'"${band_hex_2g_3g},1,2,${band_hex_4g_5g},,"
|
||||
sh ${SCRIPT_DIR}/modem_at.sh "${at_port}" "${at_command}"
|
||||
}
|
||||
|
||||
#获取电压
|
||||
# $1:AT串口
|
||||
huawei_get_voltage()
|
||||
{
|
||||
local at_port="$1"
|
||||
|
||||
# #Voltage(电压)
|
||||
# at_command="AT+ADCREAD=0"
|
||||
# local voltage=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "+ADCREAD:" | awk -F' ' '{print $2}' | sed 's/\r//g')
|
||||
# voltage=$(awk "BEGIN{ printf \"%.2f\", $voltage / 1000000 }" | sed 's/\.*0*$//')
|
||||
# echo "${voltage}"
|
||||
}
|
||||
|
||||
#获取温度
|
||||
# $1:AT串口
|
||||
huawei_get_temperature()
|
||||
{
|
||||
local at_port="$1"
|
||||
|
||||
#Temperature(温度)
|
||||
at_command="AT^CHIPTEMP?"
|
||||
response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "\^CHIPTEMP" | awk -F',' '{print $6}' | sed 's/\r//g')
|
||||
|
||||
local temperature
|
||||
if [ -n "$response" ]; then
|
||||
response=$(awk "BEGIN{ printf \"%.2f\", $response / 10 }" | sed 's/\.*0*$//')
|
||||
temperature="${response}$(printf "\xc2\xb0")C"
|
||||
else
|
||||
temperature="NaN $(printf "\xc2\xb0")C"
|
||||
fi
|
||||
|
||||
echo "${temperature}"
|
||||
}
|
||||
|
||||
#获取连接状态
|
||||
# $1:AT串口
|
||||
# $2:连接定义
|
||||
huawei_get_connect_status()
|
||||
{
|
||||
local at_port="$1"
|
||||
local define_connect="$2"
|
||||
|
||||
#默认值为1
|
||||
[ -z "$define_connect" ] && {
|
||||
define_connect="1"
|
||||
}
|
||||
|
||||
at_command="AT+CGPADDR=${define_connect}"
|
||||
local ipv4=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+CGPADDR: " | awk -F'"' '{print $2}')
|
||||
local not_ip="0.0.0.0"
|
||||
|
||||
#设置连接状态
|
||||
local connect_status
|
||||
if [ -z "$ipv4" ] || [[ "$ipv4" = *"$not_ip"* ]]; then
|
||||
connect_status="disconnect"
|
||||
else
|
||||
connect_status="connect"
|
||||
fi
|
||||
|
||||
echo "${connect_status}"
|
||||
}
|
||||
|
||||
#基本信息
|
||||
huawei_base_info()
|
||||
{
|
||||
debug "Huawei base info"
|
||||
|
||||
#Name(名称)
|
||||
at_command="AT+CGMM"
|
||||
name=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "+CGMM: " | awk -F': ' '{print $2}' | sed 's/\r//g')
|
||||
#Manufacturer(制造商)
|
||||
at_command="AT+CGMI"
|
||||
manufacturer=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | sed -n '2p' | sed 's/\r//g')
|
||||
#Revision(固件版本)
|
||||
at_command="AT+CGMR"
|
||||
revision=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | sed -n '2p' | sed 's/\r//g')
|
||||
|
||||
#Mode(拨号模式)
|
||||
mode=$(huawei_get_mode ${at_port} ${platform} | tr 'a-z' 'A-Z')
|
||||
|
||||
#Temperature(温度)
|
||||
temperature=$(huawei_get_temperature ${at_port})
|
||||
}
|
||||
|
||||
#获取SIM卡状态
|
||||
# $1:SIM卡状态标志
|
||||
huawei_get_sim_status()
|
||||
{
|
||||
local sim_status
|
||||
case $1 in
|
||||
"") sim_status="miss" ;;
|
||||
*"ERROR"*) sim_status="miss" ;;
|
||||
*"READY"*) sim_status="ready" ;;
|
||||
*"SIM PIN"*) sim_status="MT is waiting SIM PIN to be given" ;;
|
||||
*"SIM PUK"*) sim_status="MT is waiting SIM PUK to be given" ;;
|
||||
*"PH-FSIM PIN"*) sim_status="MT is waiting phone-to-SIM card password to be given" ;;
|
||||
*"PH-FSIM PIN"*) sim_status="MT is waiting phone-to-very first SIM card password to be given" ;;
|
||||
*"PH-FSIM PUK"*) sim_status="MT is waiting phone-to-very first SIM card unblocking password to be given" ;;
|
||||
*"SIM PIN2"*) sim_status="MT is waiting SIM PIN2 to be given" ;;
|
||||
*"SIM PUK2"*) sim_status="MT is waiting SIM PUK2 to be given" ;;
|
||||
*"PH-NET PIN"*) sim_status="MT is waiting network personalization password to be given" ;;
|
||||
*"PH-NET PUK"*) sim_status="MT is waiting network personalization unblocking password to be given" ;;
|
||||
*"PH-NETSUB PIN"*) sim_status="MT is waiting network subset personalization password to be given" ;;
|
||||
*"PH-NETSUB PUK"*) sim_status="MT is waiting network subset personalization unblocking password to be given" ;;
|
||||
*"PH-SP PIN"*) sim_status="MT is waiting service provider personalization password to be given" ;;
|
||||
*"PH-SP PUK"*) sim_status="MT is waiting service provider personalization unblocking password to be given" ;;
|
||||
*"PH-CORP PIN"*) sim_status="MT is waiting corporate personalization password to be given" ;;
|
||||
*"PH-CORP PUK"*) sim_status="MT is waiting corporate personalization unblocking password to be given" ;;
|
||||
*) sim_status="unknown" ;;
|
||||
esac
|
||||
echo "${sim_status}"
|
||||
}
|
||||
|
||||
#SIM卡信息
|
||||
huawei_sim_info()
|
||||
{
|
||||
debug "Huawei sim info"
|
||||
|
||||
#SIM Slot(SIM卡卡槽)
|
||||
# at_command="AT^SIMSLOT?"
|
||||
# response=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "\^SIMSLOT:" | awk -F': ' '{print $2}' | awk -F',' '{print $2}')
|
||||
|
||||
# if [ "$response" != "0" ]; then
|
||||
# sim_slot="1"
|
||||
# else
|
||||
# sim_slot="2"
|
||||
# fi
|
||||
sim_slot="1"
|
||||
|
||||
#IMEI(国际移动设备识别码)
|
||||
at_command="AT+CGSN"
|
||||
imei=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | sed -n '2p' | sed 's/\r//g')
|
||||
|
||||
#SIM Status(SIM状态)
|
||||
at_command="AT+CPIN?"
|
||||
sim_status_flag=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+CPIN: ")
|
||||
sim_status=$(huawei_get_sim_status "$sim_status_flag")
|
||||
|
||||
if [ "$sim_status" != "ready" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
#ISP(互联网服务提供商)
|
||||
at_command="AT+COPS?"
|
||||
isp=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+COPS" | awk -F'"' '{print $2}')
|
||||
# if [ "$isp" = "CHN-CMCC" ] || [ "$isp" = "CMCC" ] || [ "$isp" = "46000" ]; then
|
||||
# isp="中国移动"
|
||||
# elif [ "$isp" = "CHN-UNICOM" ] || [ "$isp" = "UNICOM" ] || [ "$isp" = "46001" ]; then
|
||||
# isp="中国联通"
|
||||
# elif [ "$isp" = "CHN-CT" ] || [ "$isp" = "CT" ] || [ "$isp" = "46011" ]; then
|
||||
# isp="中国电信"
|
||||
# fi
|
||||
|
||||
#SIM Number(SIM卡号码,手机号)
|
||||
at_command="AT+CNUM"
|
||||
sim_number=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+CNUM: " | awk -F'"' '{print $2}')
|
||||
[ -z "$sim_number" ] && {
|
||||
sim_number=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+CNUM: " | awk -F'"' '{print $4}')
|
||||
}
|
||||
|
||||
#IMSI(国际移动用户识别码)
|
||||
at_command="AT+CIMI"
|
||||
imsi=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | sed -n '2p' | sed 's/\r//g')
|
||||
|
||||
#ICCID(集成电路卡识别码)
|
||||
at_command="AT+ICCID"
|
||||
iccid=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep -o "+ICCID:[ ]*[-0-9]\+" | grep -o "[-0-9]\{1,4\}")
|
||||
}
|
||||
|
||||
#获取网络类型
|
||||
# $1:网络类型数字
|
||||
huawei_get_rat()
|
||||
{
|
||||
local rat
|
||||
case $1 in
|
||||
"0"|"1"|"3"|"8") rat="GSM" ;;
|
||||
"2"|"4"|"5"|"6"|"9"|"10") rat="WCDMA" ;;
|
||||
"7") rat="LTE" ;;
|
||||
"11"|"12") rat="NR" ;;
|
||||
esac
|
||||
echo "${rat}"
|
||||
}
|
||||
|
||||
#获取信号强度指示(4G)
|
||||
# $1:信号强度指示数字
|
||||
huawei_get_rssi()
|
||||
{
|
||||
local rssi
|
||||
case $1 in
|
||||
"99") rssi="unknown" ;;
|
||||
* ) rssi=$((2 * $1 - 113)) ;;
|
||||
esac
|
||||
echo "$rssi"
|
||||
}
|
||||
|
||||
#网络信息
|
||||
huawei_network_info()
|
||||
{
|
||||
debug "Huawei network info"
|
||||
|
||||
#Connect Status(连接状态)
|
||||
connect_status=$(huawei_get_connect_status ${at_port} ${define_connect})
|
||||
if [ "$connect_status" != "connect" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
#Network Type(网络类型)
|
||||
at_command="AT^SYSINFOEX"
|
||||
network_type=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "\^SYSINFOEX:" | awk -F'"' '{print $4}')
|
||||
|
||||
[ -z "$network_type" ] && {
|
||||
at_command='AT+COPS?'
|
||||
local rat_num=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+COPS:" | awk -F',' '{print $4}' | sed 's/\r//g')
|
||||
network_type=$(huawei_get_rat ${rat_num})
|
||||
}
|
||||
|
||||
#设置网络类型为5G时,信号强度指示用RSRP代替
|
||||
# at_command="AT+GTCSQNREN=1"
|
||||
# sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command
|
||||
|
||||
#CSQ(信号强度)
|
||||
at_command="AT+CSQ"
|
||||
response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "+CSQ:" | sed 's/+CSQ: //g' | sed 's/\r//g')
|
||||
|
||||
#RSSI(4G信号强度指示)
|
||||
# rssi_num=$(echo $response | awk -F',' '{print $1}')
|
||||
# rssi=$(huawei_get_rssi $rssi_num)
|
||||
#BER(4G信道误码率)
|
||||
# ber=$(echo $response | awk -F',' '{print $2}')
|
||||
|
||||
# #PER(信号强度)
|
||||
# if [ -n "$csq" ]; then
|
||||
# per=$(($csq * 100/31))"%"
|
||||
# fi
|
||||
|
||||
#AMBR(最大比特率)
|
||||
at_command="AT^DHCP?"
|
||||
response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "\^DHCP:" | sed 's/\^DHCP: //g' | sed 's/\r//g')
|
||||
ambr_ul_tmp=$(echo "$response" | awk -F',' '{print $8}')
|
||||
ambr_dl_tmp=$(echo "$response" | awk -F',' '{print $7}')
|
||||
|
||||
[ -z "$ambr_ul_tmp" ] && {
|
||||
at_command="AT^DHCPV6?"
|
||||
response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "\^DHCPV6:" | sed 's/\^DHCPV6: //g' | sed 's/\r//g')
|
||||
ambr_ul_tmp=$(echo "$response" | awk -F',' '{print $8}')
|
||||
ambr_dl_tmp=$(echo "$response" | awk -F',' '{print $7}')
|
||||
}
|
||||
|
||||
#AMBR UL(上行签约速率,单位,Mbps)
|
||||
ambr_ul=$(awk "BEGIN{ printf \"%.2f\", $ambr_ul_tmp / 1000000 }" | sed 's/\.*0*$//')
|
||||
#AMBR DL(下行签约速率,单位,Mbps)
|
||||
ambr_dl=$(awk "BEGIN{ printf \"%.2f\", $ambr_dl_tmp / 1000000 }" | sed 's/\.*0*$//')
|
||||
|
||||
# #速率统计
|
||||
# at_command='AT^DSFLOWQRY'
|
||||
# response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "\^DSFLOWRPT:" | sed 's/\^DSFLOWRPT: //g' | sed 's/\r//g')
|
||||
|
||||
# #当前上传速率(单位,Byte/s)
|
||||
# tx_rate=$(echo $response | awk -F',' '{print $1}')
|
||||
|
||||
# #当前下载速率(单位,Byte/s)
|
||||
# rx_rate=$(echo $response | awk -F',' '{print $2}')
|
||||
}
|
||||
|
||||
#获取NR子载波间隔
|
||||
# $1:NR子载波间隔数字
|
||||
huawei_get_scs()
|
||||
{
|
||||
local scs
|
||||
case $1 in
|
||||
"0") scs="15" ;;
|
||||
"1") scs="30" ;;
|
||||
"2") scs="60" ;;
|
||||
"3") scs="120" ;;
|
||||
"4") scs="240" ;;
|
||||
*) scs=$(awk "BEGIN{ print 2^$1 * 15 }") ;;
|
||||
esac
|
||||
echo "$scs"
|
||||
}
|
||||
|
||||
#获取频段
|
||||
# $1:网络类型
|
||||
# $2:频段数字
|
||||
huawei_get_band()
|
||||
{
|
||||
local band
|
||||
case $1 in
|
||||
"GSM")
|
||||
case $2 in
|
||||
"0") band="850" ;;
|
||||
"1") band="900" ;;
|
||||
"2") band="1800" ;;
|
||||
"3") band="1900" ;;
|
||||
esac
|
||||
;;
|
||||
"WCDMA") band="$2" ;;
|
||||
"LTE") band="$(($2-100))" ;;
|
||||
"NR") band="$2" band="${band#*50}" ;;
|
||||
esac
|
||||
echo "$band"
|
||||
}
|
||||
|
||||
#小区信息
|
||||
huawei_cell_info()
|
||||
{
|
||||
debug "Huawei cell info"
|
||||
|
||||
at_command="AT^MONSC"
|
||||
response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "\^MONSC:" | sed 's/\^MONSC: //')
|
||||
|
||||
local rat=$(echo "$response" | awk -F',' '{print $1}')
|
||||
|
||||
case $rat in
|
||||
"NR")
|
||||
network_mode="NR5G-SA Mode"
|
||||
nr_mcc=$(echo "$response" | awk -F',' '{print $2}')
|
||||
nr_mnc=$(echo "$response" | awk -F',' '{print $3}')
|
||||
nr_arfcn=$(echo "$response" | awk -F',' '{print $4}')
|
||||
nr_scs_num=$(echo "$response" | awk -F',' '{print $5}')
|
||||
nr_scs=$(tdtech_get_scs ${nr_scs_num})
|
||||
nr_cell_id_hex=$(echo "$response" | awk -F',' '{print $6}')
|
||||
nr_cell_id=$(echo "ibase=16; $nr_cell_id_hex" | bc)
|
||||
nr_physical_cell_id_hex=$(echo "$response" | awk -F',' '{print $7}')
|
||||
nr_physical_cell_id=$(echo "ibase=16; $nr_physical_cell_id_hex" | bc)
|
||||
nr_tac=$(echo "$response" | awk -F',' '{print $8}')
|
||||
nr_rsrp=$(echo "$response" | awk -F',' '{print $9}')
|
||||
nr_rsrq=$(echo "$response" | awk -F',' '{print $10}')
|
||||
nr_sinr=$(echo "$response" | awk -F',' '{print $11}' | sed 's/\r//g')
|
||||
;;
|
||||
"LTE-NR")
|
||||
network_mode="EN-DC Mode"
|
||||
#LTE
|
||||
endc_lte_mcc=$(echo "$response" | awk -F',' '{print $2}')
|
||||
endc_lte_mnc=$(echo "$response" | awk -F',' '{print $3}')
|
||||
endc_lte_earfcn=$(echo "$response" | awk -F',' '{print $4}')
|
||||
endc_lte_cell_id_hex=$(echo "$response" | awk -F',' '{print $5}')
|
||||
endc_lte_cell_id=$(echo "ibase=16; $endc_lte_cell_id_hex" | bc)
|
||||
endc_lte_physical_cell_id_hex=$(echo "$response" | awk -F',' '{print $6}')
|
||||
endc_lte_physical_cell_id=$(echo "ibase=16; $endc_lte_physical_cell_id_hex" | bc)
|
||||
endc_lte_tac=$(echo "$response" | awk -F',' '{print $7}')
|
||||
endc_lte_rsrp=$(echo "$response" | awk -F',' '{print $8}')
|
||||
endc_lte_rsrq=$(echo "$response" | awk -F',' '{print $9}')
|
||||
endc_lte_rxlev=$(echo "$response" | awk -F',' '{print $10}' | sed 's/\r//g')
|
||||
#NR5G-NSA
|
||||
endc_nr_mcc=$(echo "$response" | awk -F',' '{print $2}')
|
||||
endc_nr_mnc=$(echo "$response" | awk -F',' '{print $3}')
|
||||
endc_nr_arfcn=$(echo "$response" | awk -F',' '{print $4}')
|
||||
endc_nr_scs_num=$(echo "$response" | awk -F',' '{print $5}')
|
||||
endc_nr_scs=$(tdtech_get_scs ${nr_scs_num})
|
||||
endc_nr_cell_id_hex=$(echo "$response" | awk -F',' '{print $6}')
|
||||
endc_nr_cell_id=$(echo "ibase=16; $endc_nr_cell_id_hex" | bc)
|
||||
endc_nr_physical_cell_id_hex=$(echo "$response" | awk -F',' '{print $7}')
|
||||
endc_nr_physical_cell_id=$(echo "ibase=16; $endc_nr_physical_cell_id_hex" | bc)
|
||||
endc_nr_tac=$(echo "$response" | awk -F',' '{print $8}')
|
||||
endc_nr_rsrp=$(echo "$response" | awk -F',' '{print $9}')
|
||||
endc_nr_rsrq=$(echo "$response" | awk -F',' '{print $10}')
|
||||
endc_nr_sinr=$(echo "$response" | awk -F',' '{print $11}' | sed 's/\r//g')
|
||||
;;
|
||||
"LTE"|"eMTC"|"NB-IoT")
|
||||
network_mode="LTE Mode"
|
||||
lte_mcc=$(echo "$response" | awk -F',' '{print $2}')
|
||||
lte_mnc=$(echo "$response" | awk -F',' '{print $3}')
|
||||
lte_earfcn=$(echo "$response" | awk -F',' '{print $4}')
|
||||
lte_cell_id_hex=$(echo "$response" | awk -F',' '{print $5}')
|
||||
lte_cell_id=$(echo "ibase=16; $lte_cell_id_hex" | bc)
|
||||
lte_physical_cell_id_hex=$(echo "$response" | awk -F',' '{print $6}')
|
||||
lte_physical_cell_id=$(echo "ibase=16; $lte_physical_cell_id_hex" | bc)
|
||||
lte_tac=$(echo "$response" | awk -F',' '{print $7}')
|
||||
lte_rsrp=$(echo "$response" | awk -F',' '{print $8}')
|
||||
lte_rsrq=$(echo "$response" | awk -F',' '{print $9}')
|
||||
lte_rxlev=$(echo "$response" | awk -F',' '{print $10}' | sed 's/\r//g')
|
||||
;;
|
||||
"WCDMA"|"TD-SCDMA"|"UMTS")
|
||||
network_mode="WCDMA Mode"
|
||||
wcdma_mcc=$(echo "$response" | awk -F',' '{print $2}')
|
||||
wcdma_mnc=$(echo "$response" | awk -F',' '{print $3}')
|
||||
wcdma_arfcn=$(echo "$response" | awk -F',' '{print $4}')
|
||||
wcdma_psc=$(echo "$response" | awk -F',' '{print $5}')
|
||||
wcdma_cell_id_hex=$(echo "$response" | awk -F',' '{print $6}')
|
||||
wcdma_cell_id=$(echo "ibase=16; $wcdma_cell_id_hex" | bc)
|
||||
wcdma_lac=$(echo "$response" | awk -F',' '{print $7}')
|
||||
wcdma_rscp=$(echo "$response" | awk -F',' '{print $8}')
|
||||
wcdma_rxlev=$(echo "$response" | awk -F',' '{print $9}')
|
||||
wcdma_ecn0=$(echo "$response" | awk -F',' '{print $10}')
|
||||
wcdma_drx=$(echo "$response" | awk -F',' '{print $11}')
|
||||
wcdma_ura=$(echo "$response" | awk -F',' '{print $12}' | sed 's/\r//g')
|
||||
;;
|
||||
"GSM")
|
||||
network_mode="GSM Mode"
|
||||
gsm_mcc=$(echo "$response" | awk -F',' '{print $2}')
|
||||
gsm_mnc=$(echo "$response" | awk -F',' '{print $3}')
|
||||
gsm_band_num=$(echo "$response" | awk -F',' '{print $4}')
|
||||
gsm_band=$(tdtech_get_band "GSM" ${gsm_band_num})
|
||||
gsm_arfcn=$(echo "$response" | awk -F',' '{print $5}')
|
||||
gsm_bsic=$(echo "$response" | awk -F',' '{print $6}')
|
||||
gsm_cell_id_hex=$(echo "$response" | awk -F',' '{print $7}')
|
||||
gsm_cell_id=$(echo "ibase=16; $gsm_cell_id_hex" | bc)
|
||||
gsm_lac=$(echo "$response" | awk -F',' '{print $8}')
|
||||
gsm_rxlev=$(echo "$response" | awk -F',' '{print $9}')
|
||||
gsm_rx_quality=$(echo "$response" | awk -F',' '{print $10}')
|
||||
gsm_ta=$(echo "$response" | awk -F',' '{print $11}' | sed 's/\r//g')
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
#获取华为模组信息
|
||||
# $1:AT串口
|
||||
# $2:平台
|
||||
# $3:连接定义
|
||||
get_huawei_info()
|
||||
{
|
||||
debug "get huawei info"
|
||||
#设置AT串口
|
||||
at_port="$1"
|
||||
platform="$2"
|
||||
define_connect="$3"
|
||||
|
||||
#基本信息
|
||||
huawei_base_info
|
||||
|
||||
#SIM卡信息
|
||||
huawei_sim_info
|
||||
if [ "$sim_status" != "ready" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
#网络信息
|
||||
huawei_network_info
|
||||
if [ "$connect_status" != "connect" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
#小区信息
|
||||
huawei_cell_info
|
||||
}
|
||||
Executable
+959
@@ -0,0 +1,959 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2023 Siriling <siriling@qq.com>
|
||||
|
||||
#脚本目录
|
||||
SCRIPT_DIR="/usr/share/modem"
|
||||
|
||||
#预设
|
||||
meig_presets()
|
||||
{
|
||||
#关闭自动上报系统模式变化
|
||||
at_command='AT^MODE=0'
|
||||
sh "${SCRIPT_DIR}/modem_at.sh" "$at_port" "$at_command"
|
||||
|
||||
#关闭自动上报DS流量
|
||||
at_command='AT^DSFLOWRPT=0,0,1'
|
||||
sh "${SCRIPT_DIR}/modem_at.sh" "$at_port" "$at_command"
|
||||
}
|
||||
|
||||
#获取DNS
|
||||
# $1:AT串口
|
||||
# $2:连接定义
|
||||
meig_get_dns()
|
||||
{
|
||||
local at_port="$1"
|
||||
local define_connect="$2"
|
||||
|
||||
[ -z "$define_connect" ] && {
|
||||
define_connect="1"
|
||||
}
|
||||
|
||||
local public_dns1_ipv4="223.5.5.5"
|
||||
local public_dns2_ipv4="119.29.29.29"
|
||||
local public_dns1_ipv6="2400:3200::1" #下一代互联网北京研究中心:240C::6666,阿里:2400:3200::1,腾讯:2402:4e00::
|
||||
local public_dns2_ipv6="2402:4e00::"
|
||||
|
||||
#获取DNS地址
|
||||
at_command="AT+CGCONTRDP=${define_connect}"
|
||||
local response=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+CGCONTRDP: " | grep -E '[0-9]+.[0-9]+.[0-9]+.[0-9]+' | sed -n '1p')
|
||||
|
||||
local ipv4_dns1=$(echo "${response}" | awk -F',' '{print $7}' | awk -F' ' '{print $1}')
|
||||
[ -z "$ipv4_dns1" ] && {
|
||||
ipv4_dns1="${public_dns1_ipv4}"
|
||||
}
|
||||
|
||||
local ipv4_dns2=$(echo "${response}" | awk -F',' '{print $8}' | awk -F' ' '{print $1}')
|
||||
[ -z "$ipv4_dns2" ] && {
|
||||
ipv4_dns2="${public_dns2_ipv4}"
|
||||
}
|
||||
|
||||
local ipv6_dns1=$(echo "${response}" | awk -F',' '{print $7}' | awk -F' ' '{print $2}')
|
||||
[ -z "$ipv6_dns1" ] && {
|
||||
ipv6_dns1="${public_dns1_ipv6}"
|
||||
}
|
||||
|
||||
local ipv6_dns2=$(echo "${response}" | awk -F',' '{print $8}' | awk -F' ' '{print $2}' | sed 's/\r//g')
|
||||
[ -z "$ipv6_dns2" ] && {
|
||||
ipv6_dns2="${public_dns2_ipv6}"
|
||||
}
|
||||
|
||||
dns="{
|
||||
\"dns\":{
|
||||
\"ipv4_dns1\":\"$ipv4_dns1\",
|
||||
\"ipv4_dns2\":\"$ipv4_dns2\",
|
||||
\"ipv6_dns1\":\"$ipv6_dns1\",
|
||||
\"ipv6_dns2\":\"$ipv6_dns2\"
|
||||
}
|
||||
}"
|
||||
|
||||
echo "$dns"
|
||||
}
|
||||
|
||||
#获取拨号模式
|
||||
# $1:AT串口
|
||||
# $2:平台
|
||||
meig_get_mode()
|
||||
{
|
||||
local at_port="$1"
|
||||
local platform="$2"
|
||||
|
||||
at_command="AT+SER?"
|
||||
local mode_num=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+SER:" | sed 's/+SER: //g' | sed 's/\r//g')
|
||||
|
||||
if [ -z "$mode_num" ]; then
|
||||
echo "unknown"
|
||||
return
|
||||
fi
|
||||
|
||||
#获取芯片平台
|
||||
if [ -z "$platform" ]; then
|
||||
local modem_number=$(uci -q get modem.@global[0].modem_number)
|
||||
for i in $(seq 0 $((modem_number-1))); do
|
||||
local at_port_tmp=$(uci -q get modem.modem$i.at_port)
|
||||
if [ "$at_port" = "$at_port_tmp" ]; then
|
||||
platform=$(uci -q get modem.modem$i.platform)
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
local mode
|
||||
case "$platform" in
|
||||
"qualcomm")
|
||||
case "$mode_num" in
|
||||
"1") mode="qmi" ;;
|
||||
# "1") mode="gobinet" ;;
|
||||
"2") mode="ecm" ;;
|
||||
"7") mode="mbim" ;;
|
||||
"3") mode="rndis" ;;
|
||||
"2") mode="ncm" ;;
|
||||
"8") mode="unknown" ;;
|
||||
*) mode="$mode_num" ;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
mode="$mode_num"
|
||||
;;
|
||||
esac
|
||||
echo "${mode}"
|
||||
}
|
||||
|
||||
#设置拨号模式
|
||||
# $1:AT串口
|
||||
# $2:拨号模式配置
|
||||
meig_set_mode()
|
||||
{
|
||||
local at_port="$1"
|
||||
local mode_config="$2"
|
||||
|
||||
#获取芯片平台
|
||||
local platform
|
||||
local modem_number=$(uci -q get modem.@global[0].modem_number)
|
||||
for i in $(seq 0 $((modem_number-1))); do
|
||||
local at_port_tmp=$(uci -q get modem.modem$i.at_port)
|
||||
if [ "$at_port" = "$at_port_tmp" ]; then
|
||||
platform=$(uci -q get modem.modem$i.platform)
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
#获取拨号模式配置
|
||||
local mode_num
|
||||
case "$platform" in
|
||||
"qualcomm")
|
||||
case "$mode_config" in
|
||||
"qmi") mode_num="1" ;;
|
||||
# "gobinet") mode_num="1" ;;
|
||||
"ecm") mode_num="2" ;;
|
||||
"mbim") mode_num="7" ;;
|
||||
"rndis") mode_num="3" ;;
|
||||
"ncm") mode_num="2" ;;
|
||||
*) mode_num="1" ;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
mode_num="1"
|
||||
;;
|
||||
esac
|
||||
|
||||
#设置模组
|
||||
at_command="AT+SER=${mode_num},1"
|
||||
sh ${SCRIPT_DIR}/modem_at.sh ${at_port} "${at_command}"
|
||||
}
|
||||
|
||||
#获取位
|
||||
# $1:频段名称
|
||||
meig_get_bit()
|
||||
{
|
||||
local band_name="$1"
|
||||
|
||||
local bit
|
||||
case "$band_name" in
|
||||
"DCS_1800") bit="8" ;;
|
||||
"E-GSM_900") bit="9" ;;
|
||||
"P-GSM_900") bit="10" ;;
|
||||
"GSM_450") bit="17" ;;
|
||||
"GSM_480") bit="18" ;;
|
||||
"GSM_750") bit="19" ;;
|
||||
"GSM_850") bit="20" ;;
|
||||
"R-GSM_900") bit="21" ;;
|
||||
"PCS_1900") bit="22" ;;
|
||||
esac
|
||||
|
||||
echo "${bit}"
|
||||
}
|
||||
|
||||
#获取频段信息
|
||||
# $1:频段二进制数
|
||||
# $2:支持的频段
|
||||
# $3:频段类型(2G,3G,4G,5G)
|
||||
meig_get_band_info()
|
||||
{
|
||||
local band_bin="$1"
|
||||
local support_band="$2"
|
||||
local band_type="$3"
|
||||
|
||||
local band_info=""
|
||||
local support_band=$(echo "$support_band" | sed 's/,/ /g')
|
||||
if [ "$band_type" = "2G" ]; then
|
||||
|
||||
for band in $support_band; do
|
||||
#获取bit位
|
||||
local bit=$(meig_get_bit ${band})
|
||||
#获取值
|
||||
local enable="${band_bin: $((-bit)):1}"
|
||||
[ -z "$enable" ] && enable="0"
|
||||
#设置频段信息
|
||||
# band_info=$(echo ${band_info} | jq '. += [{"'$band'":'$enable'}]')
|
||||
band_info="${band_info},{\"$band\":$enable}"
|
||||
done
|
||||
else
|
||||
#频段频段起始,前缀位置
|
||||
local start_bit
|
||||
local band_prefix
|
||||
case "$band_type" in
|
||||
"3G")
|
||||
start_bit="23"
|
||||
band_prefix="WCDMA_B"
|
||||
;;
|
||||
"4G")
|
||||
start_bit="1"
|
||||
band_prefix="LTE_BC"
|
||||
;;
|
||||
"5G")
|
||||
start_bit="1"
|
||||
band_prefix="NR5G_N"
|
||||
;;
|
||||
esac
|
||||
|
||||
for band in $support_band; do
|
||||
#获取值(从start_bit位开始)
|
||||
local enable="${band_bin: $((-band-start_bit+1)):1}"
|
||||
[ -z "$enable" ] && enable="0"
|
||||
#设置频段信息
|
||||
# band_info=$(echo ${band_info} | jq '. += [{'$band_prefix$band':'$enable'}]')
|
||||
band_info="${band_info},{\"$band_prefix$band\":$enable}"
|
||||
done
|
||||
fi
|
||||
#去掉第一个,
|
||||
band_info="["${band_info/,/}"]"
|
||||
# band_info="[${band_info%?}]"
|
||||
|
||||
echo "${band_info}"
|
||||
}
|
||||
|
||||
#获取网络偏好
|
||||
# $1:AT串口
|
||||
# $2:数据接口
|
||||
# $3:模组名称
|
||||
meig_get_network_prefer()
|
||||
{
|
||||
local at_port="$1"
|
||||
local data_interface="$2"
|
||||
local modem_name="$3"
|
||||
|
||||
at_command="AT^SYSCFGEX?"
|
||||
local response=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "\^SYSCFGEX:" | sed 's/\^SYSCFGEX://g')
|
||||
local network_type_num=$(echo "$response" | awk -F'"' '{print $2}')
|
||||
|
||||
#获取网络类型
|
||||
local network_prefer_2g="0";
|
||||
local network_prefer_3g="0";
|
||||
local network_prefer_4g="0";
|
||||
local network_prefer_5g="0";
|
||||
|
||||
#匹配不同的网络类型
|
||||
local auto=$(echo "${network_type_num}" | grep "00")
|
||||
if [ -n "$auto" ]; then
|
||||
network_prefer_2g="1"
|
||||
network_prefer_3g="1"
|
||||
network_prefer_4g="1"
|
||||
network_prefer_5g="1"
|
||||
else
|
||||
local gsm=$(echo "${network_type_num}" | grep "01")
|
||||
local wcdma=$(echo "${network_type_num}" | grep "02")
|
||||
local lte=$(echo "${network_type_num}" | grep "03")
|
||||
local nr=$(echo "${network_type_num}" | grep "04")
|
||||
if [ -n "$gsm" ]; then
|
||||
network_prefer_2g="1"
|
||||
fi
|
||||
if [ -n "$wcdma" ]; then
|
||||
network_prefer_3g="1"
|
||||
fi
|
||||
if [ -n "$lte" ]; then
|
||||
network_prefer_4g="1"
|
||||
fi
|
||||
if [ -n "$nr" ]; then
|
||||
network_prefer_5g="1"
|
||||
fi
|
||||
fi
|
||||
|
||||
#获取模组信息
|
||||
local modem_info=$(jq '.modem_support.'$data_interface'."'$modem_name'"' ${SCRIPT_DIR}/modem_support.json)
|
||||
|
||||
#获取模组支持的频段
|
||||
local support_2g_band=$(echo "$modem_info" | jq -r '.band_2g')
|
||||
local support_3g_band=$(echo "$modem_info" | jq -r '.band_3g')
|
||||
local support_4g_band=$(echo "$modem_info" | jq -r '.band_4g')
|
||||
local support_5g_band=$(echo "$modem_info" | jq -r '.band_5g')
|
||||
|
||||
#获取2G,3G频段信息
|
||||
local band_hex_2g_3g=$(echo "$response" | awk -F',' '{print $2}')
|
||||
#十六进制转二进制
|
||||
local bin_2g_3g=$(echo "obase=2; ibase=16; $band_hex_2g_3g" | bc)
|
||||
local band_2g_info=$(meig_get_band_info "${bin_2g_3g}" "${support_2g_band}" "2G")
|
||||
local band_3g_info=$(meig_get_band_info "${bin_2g_3g}" "${support_3g_band}" "3G")
|
||||
|
||||
#获取4G频段信息
|
||||
local band_hex_4g_1=$(echo "$response" | awk -F',' '{print $5}' | sed 's/\r//g')
|
||||
local band_hex_4g_2=$(echo "$response" | awk -F',' '{print $7}' | sed 's/\r//g')
|
||||
#十六进制转二进制
|
||||
local bin_4g=$(echo "obase=2; ibase=16; $band_hex_4g_1 + $band_hex_4g_2" | bc)
|
||||
local band_4g_info=$(meig_get_band_info "${bin_4g}" "${support_4g_band}" "4G")
|
||||
|
||||
#获取5G频段信息
|
||||
local band_hex_5g_1=$(echo "$response" | awk -F',' '{print $8}' | sed 's/\r//g')
|
||||
local band_hex_5g_2=$(echo "$response" | awk -F',' '{print $9}' | sed 's/\r//g')
|
||||
#十六进制转二进制
|
||||
local bin_5g=$(echo "obase=2; ibase=16; $band_hex_5g_1 + $band_hex_5g_2" | bc)
|
||||
local band_5g_info=$(meig_get_band_info "${bin_5g}" "${support_5g_band}" "5G")
|
||||
|
||||
#生成网络偏好
|
||||
local network_prefer="{
|
||||
\"network_prefer\":[
|
||||
{\"2G\":{
|
||||
\"enable\":$network_prefer_2g,
|
||||
\"band\":$band_2g_info
|
||||
}},
|
||||
{\"3G\":{
|
||||
\"enable\":$network_prefer_3g,
|
||||
\"band\":$band_3g_info
|
||||
}},
|
||||
{\"4G\":{
|
||||
\"enable\":$network_prefer_4g,
|
||||
\"band\":$band_4g_info
|
||||
}},
|
||||
{\"5G\":{
|
||||
\"enable\":$network_prefer_5g,
|
||||
\"band\":$band_5g_info
|
||||
}}
|
||||
]
|
||||
}"
|
||||
echo "${network_prefer}"
|
||||
}
|
||||
|
||||
#设置网络偏好
|
||||
# $1:AT串口
|
||||
# $2:网络偏好配置
|
||||
meig_set_network_prefer()
|
||||
{
|
||||
local at_port="$1"
|
||||
local network_prefer="$2"
|
||||
|
||||
#获取网络偏好配置
|
||||
local network_prefer_config
|
||||
|
||||
#获取启用的网络偏好
|
||||
local enable_5g=$(echo "$network_prefer" | jq -r '.["5G"].enable')
|
||||
local enable_4g=$(echo "$network_prefer" | jq -r '.["4G"].enable')
|
||||
local enable_3g=$(echo "$network_prefer" | jq -r '.["3G"].enable')
|
||||
|
||||
#获取网络偏好配置
|
||||
local network_prefer_config
|
||||
[ "$enable_5g" = "1" ] && network_prefer_config="${network_prefer_config}04"
|
||||
[ "$enable_4g" = "1" ] && network_prefer_config="${network_prefer_config}03"
|
||||
[ "$enable_3g" = "1" ] && network_prefer_config="${network_prefer_config}02"
|
||||
|
||||
[ -z "$network_prefer_config" ] && network_prefer_config="00"
|
||||
|
||||
#设置模组
|
||||
at_command='AT^SYSCFGEX="'${network_prefer_config}'",all,0,2,all,all,all,all,1'
|
||||
sh ${SCRIPT_DIR}/modem_at.sh "${at_port}" "${at_command}"
|
||||
}
|
||||
|
||||
#获取电压
|
||||
# $1:AT串口
|
||||
meig_get_voltage()
|
||||
{
|
||||
local at_port="$1"
|
||||
|
||||
# #Voltage(电压)
|
||||
# at_command="AT+ADCREAD=0"
|
||||
# local voltage=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "+ADCREAD:" | awk -F' ' '{print $2}' | sed 's/\r//g')
|
||||
# voltage=$(awk "BEGIN{ printf \"%.2f\", $voltage / 1000000 }" | sed 's/\.*0*$//')
|
||||
# echo "${voltage}"
|
||||
}
|
||||
|
||||
#获取温度
|
||||
# $1:AT串口
|
||||
meig_get_temperature()
|
||||
{
|
||||
local at_port="$1"
|
||||
|
||||
#Temperature(温度)
|
||||
at_command="AT+TEMP"
|
||||
response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep 'TEMP: "cpu0-0-usr"' | awk -F'"' '{print $4}')
|
||||
|
||||
local temperature
|
||||
if [ -n "$response" ]; then
|
||||
temperature="${response}$(printf "\xc2\xb0")C"
|
||||
else
|
||||
temperature="NaN $(printf "\xc2\xb0")C"
|
||||
fi
|
||||
|
||||
echo "${temperature}"
|
||||
}
|
||||
|
||||
#获取连接状态
|
||||
# $1:AT串口
|
||||
# $2:连接定义
|
||||
meig_get_connect_status()
|
||||
{
|
||||
local at_port="$1"
|
||||
local define_connect="$2"
|
||||
|
||||
#默认值为1
|
||||
[ -z "$define_connect" ] && {
|
||||
define_connect="1"
|
||||
}
|
||||
|
||||
at_command="AT+CGPADDR=${define_connect}"
|
||||
local ipv4=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+CGPADDR: " | awk -F',' '{print $2}')
|
||||
local not_ip="0.0.0.0"
|
||||
|
||||
#设置连接状态
|
||||
local connect_status
|
||||
if [ -z "$ipv4" ] || [[ "$ipv4" = *"$not_ip"* ]]; then
|
||||
connect_status="disconnect"
|
||||
else
|
||||
connect_status="connect"
|
||||
fi
|
||||
|
||||
echo "${connect_status}"
|
||||
}
|
||||
|
||||
#基本信息
|
||||
meig_base_info()
|
||||
{
|
||||
debug "Meig base info"
|
||||
|
||||
#Name(名称)
|
||||
at_command="AT+CGMM"
|
||||
name=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "+CGMM: " | awk -F': ' '{print $2}' | sed 's/\r//g')
|
||||
#Manufacturer(制造商)
|
||||
at_command="AT+CGMI"
|
||||
manufacturer=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "+CGMI: " | awk -F': ' '{print $2}' | sed 's/\r//g')
|
||||
#Revision(固件版本)
|
||||
at_command="AT+CGMR"
|
||||
revision=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "+CGMR: " | awk -F': ' '{print $2}' | sed 's/\r//g')
|
||||
|
||||
#Mode(拨号模式)
|
||||
mode=$(meig_get_mode ${at_port} ${platform} | tr 'a-z' 'A-Z')
|
||||
|
||||
#Temperature(温度)
|
||||
temperature=$(meig_get_temperature ${at_port})
|
||||
}
|
||||
|
||||
#获取SIM卡状态
|
||||
# $1:SIM卡状态标志
|
||||
meig_get_sim_status()
|
||||
{
|
||||
local sim_status
|
||||
case $1 in
|
||||
"") sim_status="miss" ;;
|
||||
*"ERROR"*) sim_status="miss" ;;
|
||||
*"READY"*) sim_status="ready" ;;
|
||||
*"SIM PIN"*) sim_status="MT is waiting SIM PIN to be given" ;;
|
||||
*"SIM PUK"*) sim_status="MT is waiting SIM PUK to be given" ;;
|
||||
*"PH-FSIM PIN"*) sim_status="MT is waiting phone-to-SIM card password to be given" ;;
|
||||
*"PH-FSIM PIN"*) sim_status="MT is waiting phone-to-very first SIM card password to be given" ;;
|
||||
*"PH-FSIM PUK"*) sim_status="MT is waiting phone-to-very first SIM card unblocking password to be given" ;;
|
||||
*"SIM PIN2"*) sim_status="MT is waiting SIM PIN2 to be given" ;;
|
||||
*"SIM PUK2"*) sim_status="MT is waiting SIM PUK2 to be given" ;;
|
||||
*"PH-NET PIN"*) sim_status="MT is waiting network personalization password to be given" ;;
|
||||
*"PH-NET PUK"*) sim_status="MT is waiting network personalization unblocking password to be given" ;;
|
||||
*"PH-NETSUB PIN"*) sim_status="MT is waiting network subset personalization password to be given" ;;
|
||||
*"PH-NETSUB PUK"*) sim_status="MT is waiting network subset personalization unblocking password to be given" ;;
|
||||
*"PH-SP PIN"*) sim_status="MT is waiting service provider personalization password to be given" ;;
|
||||
*"PH-SP PUK"*) sim_status="MT is waiting service provider personalization unblocking password to be given" ;;
|
||||
*"PH-CORP PIN"*) sim_status="MT is waiting corporate personalization password to be given" ;;
|
||||
*"PH-CORP PUK"*) sim_status="MT is waiting corporate personalization unblocking password to be given" ;;
|
||||
*) sim_status="unknown" ;;
|
||||
esac
|
||||
echo "${sim_status}"
|
||||
}
|
||||
|
||||
#SIM卡信息
|
||||
meig_sim_info()
|
||||
{
|
||||
debug "Meig sim info"
|
||||
|
||||
#SIM Slot(SIM卡卡槽)
|
||||
at_command="AT^SIMSLOT?"
|
||||
response=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "\^SIMSLOT:" | awk -F': ' '{print $2}' | awk -F',' '{print $2}')
|
||||
|
||||
if [ "$response" != "0" ]; then
|
||||
sim_slot="1"
|
||||
else
|
||||
sim_slot="2"
|
||||
fi
|
||||
|
||||
#IMEI(国际移动设备识别码)
|
||||
at_command="AT+CGSN"
|
||||
imei=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | sed -n '2p' | sed 's/\r//g')
|
||||
|
||||
#SIM Status(SIM状态)
|
||||
at_command="AT+CPIN?"
|
||||
sim_status_flag=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+CPIN: ")
|
||||
sim_status=$(meig_get_sim_status "$sim_status_flag")
|
||||
|
||||
if [ "$sim_status" != "ready" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
#ISP(互联网服务提供商)
|
||||
at_command="AT+COPS?"
|
||||
isp=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+COPS" | awk -F'"' '{print $2}')
|
||||
# if [ "$isp" = "CHN-CMCC" ] || [ "$isp" = "CMCC" ] || [ "$isp" = "46000" ]; then
|
||||
# isp="中国移动"
|
||||
# elif [ "$isp" = "CHN-UNICOM" ] || [ "$isp" = "UNICOM" ] || [ "$isp" = "46001" ]; then
|
||||
# isp="中国联通"
|
||||
# elif [ "$isp" = "CHN-CT" ] || [ "$isp" = "CT" ] || [ "$isp" = "46011" ]; then
|
||||
# isp="中国电信"
|
||||
# fi
|
||||
|
||||
#SIM Number(SIM卡号码,手机号)
|
||||
at_command="AT+CNUM"
|
||||
sim_number=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+CNUM: " | awk -F'"' '{print $2}')
|
||||
[ -z "$sim_number" ] && {
|
||||
sim_number=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+CNUM: " | awk -F'"' '{print $4}')
|
||||
}
|
||||
|
||||
#IMSI(国际移动用户识别码)
|
||||
at_command="AT+CIMI"
|
||||
imsi=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | sed -n '2p' | sed 's/\r//g')
|
||||
|
||||
#ICCID(集成电路卡识别码)
|
||||
at_command="AT+ICCID"
|
||||
iccid=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep -o "+ICCID:[ ]*[-0-9]\+" | grep -o "[-0-9]\{1,4\}")
|
||||
}
|
||||
|
||||
#获取网络类型
|
||||
# $1:网络类型数字
|
||||
meig_get_rat()
|
||||
{
|
||||
local rat
|
||||
case $1 in
|
||||
"0"|"1"|"3"|"8") rat="GSM" ;;
|
||||
"2"|"4"|"5"|"6"|"9"|"10") rat="WCDMA" ;;
|
||||
"7") rat="LTE" ;;
|
||||
"11"|"12") rat="NR" ;;
|
||||
esac
|
||||
echo "${rat}"
|
||||
}
|
||||
|
||||
#获取信号强度指示(4G)
|
||||
# $1:信号强度指示数字
|
||||
meig_get_rssi()
|
||||
{
|
||||
local rssi
|
||||
case $1 in
|
||||
"99") rssi="unknown" ;;
|
||||
* ) rssi=$((2 * $1 - 113)) ;;
|
||||
esac
|
||||
echo "$rssi"
|
||||
}
|
||||
|
||||
#获取4G签约速率
|
||||
# $1:AT响应
|
||||
# $2:上行或下行标志
|
||||
meig_get_lte_ambr()
|
||||
{
|
||||
local response="$1"
|
||||
local flag="$2"
|
||||
|
||||
local ambr
|
||||
case $flag in
|
||||
"ul")
|
||||
#使用awk拆分字符串
|
||||
ambr=$(echo "$response" | awk -F',' '{
|
||||
#使用split()函数将字符串拆分为数组
|
||||
n = split($0, arr, ",")
|
||||
|
||||
#循环遍历每个值
|
||||
for (i = 1; i <= n-2; i=i+2)
|
||||
{
|
||||
if (arr[i] != "0") {
|
||||
tmp = arr[i]
|
||||
}
|
||||
else {
|
||||
break
|
||||
}
|
||||
}
|
||||
print tmp
|
||||
}')
|
||||
;;
|
||||
"dl")
|
||||
#使用awk拆分字符串
|
||||
ambr=$(echo "$response" | awk -F',' '{
|
||||
#使用split()函数将字符串拆分为数组
|
||||
n = split($0, arr, ",")
|
||||
|
||||
#循环遍历每个值
|
||||
for (i = 2; i <= n-2; i=i+2)
|
||||
{
|
||||
if (arr[i] != "0") {
|
||||
tmp = arr[i]
|
||||
}
|
||||
else {
|
||||
break
|
||||
}
|
||||
}
|
||||
print tmp
|
||||
}')
|
||||
;;
|
||||
* )
|
||||
#使用awk拆分字符串
|
||||
ambr=$(echo "$response" | awk -F',' '{
|
||||
#使用split()函数将字符串拆分为数组
|
||||
n = split($0, arr, ",")
|
||||
|
||||
#循环遍历每个值
|
||||
for (i = 2; i <= n-2; i=i+2)
|
||||
{
|
||||
if (arr[i] != "0") {
|
||||
tmp = arr[i]
|
||||
}
|
||||
else {
|
||||
break
|
||||
}
|
||||
}
|
||||
print tmp
|
||||
}')
|
||||
;;
|
||||
esac
|
||||
echo "$ambr"
|
||||
}
|
||||
|
||||
#网络信息
|
||||
meig_network_info()
|
||||
{
|
||||
debug "Meig network info"
|
||||
|
||||
#Connect Status(连接状态)
|
||||
connect_status=$(meig_get_connect_status ${at_port} ${define_connect})
|
||||
if [ "$connect_status" != "connect" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
#Network Type(网络类型)
|
||||
at_command="AT^SYSINFOEX"
|
||||
network_type=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "\^SYSINFOEX:" | awk -F'"' '{print $4}')
|
||||
|
||||
[ -z "$network_type" ] && {
|
||||
at_command='AT+COPS?'
|
||||
local rat_num=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+COPS:" | awk -F',' '{print $4}' | sed 's/\r//g')
|
||||
network_type=$(meig_get_rat ${rat_num})
|
||||
}
|
||||
|
||||
#设置网络类型为5G时,信号强度指示用RSRP代替
|
||||
# at_command="AT+GTCSQNREN=1"
|
||||
# sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command
|
||||
|
||||
#CSQ(信号强度)
|
||||
at_command="AT+CSQ"
|
||||
response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "+CSQ:" | sed 's/+CSQ: //g' | sed 's/\r//g')
|
||||
|
||||
#RSSI(4G信号强度指示)
|
||||
# rssi_num=$(echo $response | awk -F',' '{print $1}')
|
||||
# rssi=$(meig_get_rssi $rssi_num)
|
||||
#BER(4G信道误码率)
|
||||
# ber=$(echo $response | awk -F',' '{print $2}')
|
||||
|
||||
# #PER(信号强度)
|
||||
# if [ -n "$csq" ]; then
|
||||
# per=$(($csq * 100/31))"%"
|
||||
# fi
|
||||
|
||||
#最大比特率,信道质量指示
|
||||
at_command="AT^DSAMBR=${define_connect}"
|
||||
response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "\^DSAMBR:" | awk -F': ' '{print $2}')
|
||||
|
||||
at_command='AT+COPS?'
|
||||
local rat_num=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+COPS:" | awk -F',' '{print $4}' | sed 's/\r//g')
|
||||
local network_type_tmp=$(meig_get_rat ${rat_num})
|
||||
case $network_type_tmp in
|
||||
"LTE")
|
||||
ambr_ul_tmp=$(meig_get_lte_ambr ${response} "ul")
|
||||
ambr_dl_tmp=$(meig_get_lte_ambr ${response} "dl")
|
||||
;;
|
||||
"NR")
|
||||
ambr_ul_tmp=$(echo "$response" | awk -F',' '{print $9}')
|
||||
ambr_dl_tmp=$(echo "$response" | awk -F',' '{print $10}' | sed 's/\r//g')
|
||||
;;
|
||||
*)
|
||||
ambr_ul_tmp=$(meig_get_lte_ambr ${response} "ul")
|
||||
ambr_dl_tmp=$(meig_get_lte_ambr ${response} "dl")
|
||||
;;
|
||||
esac
|
||||
|
||||
#AMBR UL(上行签约速率,单位,Mbps)
|
||||
ambr_ul=$(awk "BEGIN{ printf \"%.2f\", $ambr_ul_tmp / 1024 }" | sed 's/\.*0*$//')
|
||||
#AMBR DL(下行签约速率,单位,Mbps)
|
||||
ambr_dl=$(awk "BEGIN{ printf \"%.2f\", $ambr_dl_tmp / 1024 }" | sed 's/\.*0*$//')
|
||||
|
||||
# #速率统计
|
||||
# at_command='AT^DSFLOWQRY'
|
||||
# response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "\^DSFLOWRPT:" | sed 's/\^DSFLOWRPT: //g' | sed 's/\r//g')
|
||||
|
||||
# #当前上传速率(单位,Byte/s)
|
||||
# tx_rate=$(echo $response | awk -F',' '{print $1}')
|
||||
|
||||
# #当前下载速率(单位,Byte/s)
|
||||
# rx_rate=$(echo $response | awk -F',' '{print $2}')
|
||||
}
|
||||
|
||||
#获取频段
|
||||
# $1:网络类型
|
||||
# $2:频段数字
|
||||
meig_get_band()
|
||||
{
|
||||
local band
|
||||
case $1 in
|
||||
"WCDMA") band="$2" ;;
|
||||
"LTE") band="$2" ;;
|
||||
"NR") band="$2" ;;
|
||||
esac
|
||||
echo "$band"
|
||||
}
|
||||
|
||||
#获取带宽
|
||||
# $1:网络类型
|
||||
# $2:带宽数字
|
||||
meig_get_bandwidth()
|
||||
{
|
||||
local network_type="$1"
|
||||
local bandwidth_num="$2"
|
||||
|
||||
local bandwidth
|
||||
case $network_type in
|
||||
"LTE") bandwidth=$(( $bandwidth_num / 5 )) ;;
|
||||
"NR") bandwidth="$bandwidth_num" ;;
|
||||
esac
|
||||
echo "$bandwidth"
|
||||
}
|
||||
|
||||
#获取参考信号接收功率
|
||||
# $1:网络类型
|
||||
# $2:参考信号接收功率数字
|
||||
meig_get_rsrp()
|
||||
{
|
||||
local rsrp
|
||||
case $1 in
|
||||
"LTE") rsrp=$(($2-141)) ;;
|
||||
"NR") rsrp=$(($2-157)) ;;
|
||||
esac
|
||||
echo "$rsrp"
|
||||
}
|
||||
|
||||
#获取参考信号接收质量
|
||||
# $1:网络类型
|
||||
# $2:参考信号接收质量数字
|
||||
meig_get_rsrq()
|
||||
{
|
||||
local rsrq
|
||||
case $1 in
|
||||
"LTE") rsrq=$(awk "BEGIN{ printf \"%.2f\", $2 * 0.5 - 20 }" | sed 's/\.*0*$//') ;;
|
||||
"NR") rsrq=$(awk -v num="$2" "BEGIN{ printf \"%.2f\", (num+1) * 0.5 - 44 }" | sed 's/\.*0*$//') ;;
|
||||
esac
|
||||
echo "$rsrq"
|
||||
}
|
||||
|
||||
#获取信噪比
|
||||
# $1:信噪比数字
|
||||
meig_get_sinr()
|
||||
{
|
||||
local sinr=$(awk "BEGIN{ printf \"%.2f\", $1 / 10 }" | sed 's/\.*0*$//')
|
||||
echo "$sinr"
|
||||
}
|
||||
|
||||
#小区信息
|
||||
meig_cell_info()
|
||||
{
|
||||
debug "Meig cell info"
|
||||
|
||||
at_command="AT^CELLINFO=${define_connect}"
|
||||
response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "\^CELLINFO:" | sed 's/\^CELLINFO://')
|
||||
|
||||
local rat=$(echo "$response" | awk -F',' '{print $1}')
|
||||
|
||||
case $rat in
|
||||
"5G")
|
||||
network_mode="NR5G-SA Mode"
|
||||
nr_duplex_mode=$(echo "$response" | awk -F',' '{print $2}')
|
||||
nr_mcc=$(echo "$response" | awk -F',' '{print $3}')
|
||||
nr_mnc=$(echo "$response" | awk -F',' '{print $4}')
|
||||
nr_cell_id=$(echo "$response" | awk -F',' '{print $5}')
|
||||
nr_physical_cell_id=$(echo "$response" | awk -F',' '{print $6}')
|
||||
nr_tac=$(echo "$response" | awk -F',' '{print $7}')
|
||||
nr_band_num=$(echo "$response" | awk -F',' '{print $8}')
|
||||
nr_band=$(meig_get_band "NR" ${nr_band_num})
|
||||
nr_dl_bandwidth_num=$(echo "$response" | awk -F',' '{print $9}')
|
||||
nr_dl_bandwidth=$(meig_get_bandwidth "NR" ${nr_dl_bandwidth_num})
|
||||
nr_scs=$(echo "$response" | awk -F',' '{print $10}')
|
||||
nr_fr_type=$(echo "$response" | awk -F',' '{print $11}')
|
||||
nr_dl_channel=$(echo "$response" | awk -F',' '{print $12}')
|
||||
nr_ul_channel=$(echo "$response" | awk -F',' '{print $13}')
|
||||
nr_rssi=$(echo "$response" | awk -F',' '{print $14}')
|
||||
nr_rsrp=$(echo "$response" | awk -F',' '{print $15}')
|
||||
nr_rsrq=$(echo "$response" | awk -F',' '{print $16}')
|
||||
nr_sinr_num=$(echo "$response" | awk -F',' '{print $17}')
|
||||
nr_sinr=$(meig_get_sinr ${nr_sinr_num})
|
||||
nr_vonr=$(echo "$response" | awk -F',' '{print $18}' | sed 's/\r//g')
|
||||
;;
|
||||
"LTE-NR")
|
||||
network_mode="EN-DC Mode"
|
||||
#LTE
|
||||
endc_lte_duplex_mode=$(echo "$response" | awk -F',' '{print $2}')
|
||||
endc_lte_mcc=$(echo "$response" | awk -F',' '{print $3}')
|
||||
endc_lte_mnc=$(echo "$response" | awk -F',' '{print $4}')
|
||||
endc_lte_global_cell_id=$(echo "$response" | awk -F',' '{print $5}')
|
||||
endc_lte_physical_cell_id=$(echo "$response" | awk -F',' '{print $6}')
|
||||
# endc_lte_eNBID=$(echo "$response" | awk -F',' '{print $7}')
|
||||
endc_lte_cell_id=$(echo "$response" | awk -F',' '{print $8}')
|
||||
endc_lte_tac=$(echo "$response" | awk -F',' '{print $9}')
|
||||
endc_lte_band_num=$(echo "$response" | awk -F',' '{print $10}')
|
||||
endc_lte_band=$(meig_get_band "LTE" ${endc_lte_band_num})
|
||||
ul_bandwidth_num=$(echo "$response" | awk -F',' '{print $11}')
|
||||
endc_lte_ul_bandwidth=$(meig_get_bandwidth "LTE" ${ul_bandwidth_num})
|
||||
endc_lte_dl_bandwidth="$endc_lte_ul_bandwidth"
|
||||
endc_lte_dl_channel=$(echo "$response" | awk -F',' '{print $12}')
|
||||
endc_lte_ul_channel=$(echo "$response" | awk -F',' '{print $13}')
|
||||
endc_lte_rssi=$(echo "$response" | awk -F',' '{print $14}')
|
||||
endc_lte_rsrp=$(echo "$response" | awk -F',' '{print $15}')
|
||||
endc_lte_rsrq=$(echo "$response" | awk -F',' '{print $16}')
|
||||
endc_lte_sinr_num=$(echo "$response" | awk -F',' '{print $17}')
|
||||
endc_lte_sinr=$(meig_get_sinr ${endc_lte_sinr_num})
|
||||
endc_lte_rssnr=$(echo "$response" | awk -F',' '{print $18}')
|
||||
# endc_lte_ue_category=$(echo "$response" | awk -F',' '{print $19}')
|
||||
# endc_lte_pathloss=$(echo "$response" | awk -F',' '{print $20}')
|
||||
# endc_lte_cqi=$(echo "$response" | awk -F',' '{print $21}')
|
||||
endc_lte_tx_power=$(echo "$response" | awk -F',' '{print $22}')
|
||||
# endc_lte_tm=$(echo "$response" | awk -F',' '{print $23}')
|
||||
# endc_lte_qci=$(echo "$response" | awk -F',' '{print $24}')
|
||||
# endc_lte_volte=$(echo "$response" | awk -F',' '{print $25}')
|
||||
# endc_lte_ims_sms=$(echo "$response" | awk -F',' '{print $26}')
|
||||
# endc_lte_sib2_plmn_r15_info_present=$(echo "$response" | awk -F',' '{print $27}')
|
||||
# endc_lte_sib2_upr_layer_ind=$(echo "$response" | awk -F',' '{print $28}')
|
||||
# endc_lte_restrict_dcnr=$(echo "$response" | awk -F',' '{print $29}')
|
||||
#NR5G-NSA
|
||||
endc_nr_mcc=$(echo "$response" | awk -F',' '{print $3}')
|
||||
endc_nr_mnc=$(echo "$response" | awk -F',' '{print $4}')
|
||||
endc_nr_global_cell_id=$(echo "$response" | awk -F',' '{print $5}')
|
||||
endc_nr_physical_cell_id=$(echo "$response" | awk -F',' '{print $6}')
|
||||
endc_nr_cell_id=$(echo "$response" | awk -F',' '{print $8}')
|
||||
endc_nr_tac=$(echo "$response" | awk -F',' '{print $9}')
|
||||
endc_nr_rsrp=$(echo "$response" | awk -F',' '{print $30}')
|
||||
endc_nr_rsrq=$(echo "$response" | awk -F',' '{print $31}')
|
||||
endc_nr_sinr_num=$(echo "$response" | awk -F',' '{print $32}')
|
||||
endc_nr_sinr=$(meig_get_sinr ${endc_nr_sinr_num})
|
||||
endc_nr_band_num=$(echo "$response" | awk -F',' '{print $33}')
|
||||
endc_nr_band=$(meig_get_band "NR" ${endc_nr_band_num})
|
||||
endc_nr_freq=$(echo "$response" | awk -F',' '{print $34}')
|
||||
nr_dl_bandwidth_num=$(echo "$response" | awk -F',' '{print $35}')
|
||||
endc_nr_dl_bandwidth=$(meig_get_bandwidth "NR" ${nr_dl_bandwidth_num})
|
||||
# endc_nr_pci=$(echo "$response" | awk -F',' '{print $36}')
|
||||
endc_nr_scs=$(echo "$response" | awk -F',' '{print $37}' | sed 's/\r//g')
|
||||
;;
|
||||
"LTE"|"eMTC"|"NB-IoT")
|
||||
network_mode="LTE Mode"
|
||||
lte_duplex_mode=$(echo "$response" | awk -F',' '{print $2}')
|
||||
lte_mcc=$(echo "$response" | awk -F',' '{print $3}')
|
||||
lte_mnc=$(echo "$response" | awk -F',' '{print $4}')
|
||||
lte_global_cell_id=$(echo "$response" | awk -F',' '{print $5}')
|
||||
lte_physical_cell_id=$(echo "$response" | awk -F',' '{print $6}')
|
||||
lte_eNBID=$(echo "$response" | awk -F',' '{print $7}')
|
||||
lte_cell_id=$(echo "$response" | awk -F',' '{print $8}')
|
||||
let_tac=$(echo "$response" | awk -F',' '{print $9}')
|
||||
# lte_earfcn=$(echo "$response" | awk -F',' '{print $7}')
|
||||
lte_band_num=$(echo "$response" | awk -F',' '{print $10}')
|
||||
lte_band=$(meig_get_band "LTE" ${lte_band_num})
|
||||
ul_bandwidth_num=$(echo "$response" | awk -F',' '{print $11}')
|
||||
lte_ul_bandwidth=$(meig_get_bandwidth "LTE" ${ul_bandwidth_num})
|
||||
lte_dl_bandwidth="$lte_ul_bandwidth"
|
||||
lte_dl_channel=$(echo "$response" | awk -F',' '{print $12}')
|
||||
lte_ul_channel=$(echo "$response" | awk -F',' '{print $13}')
|
||||
lte_rssi=$(echo "$response" | awk -F',' '{print $14}')
|
||||
lte_rsrp=$(echo "$response" | awk -F',' '{print $15}')
|
||||
lte_rsrq=$(echo "$response" | awk -F',' '{print $16}')
|
||||
lte_sinr_num=$(echo "$response" | awk -F',' '{print $17}')
|
||||
lte_sinr=$(meig_get_sinr ${lte_sinr_num})
|
||||
lte_rssnr=$(echo "$response" | awk -F',' '{print $18}')
|
||||
# lte_ue_category=$(echo "$response" | awk -F',' '{print $19}')
|
||||
# lte_pathloss=$(echo "$response" | awk -F',' '{print $20}')
|
||||
# lte_cqi=$(echo "$response" | awk -F',' '{print $21}')
|
||||
lte_tx_power=$(echo "$response" | awk -F',' '{print $22}')
|
||||
# lte_tm=$(echo "$response" | awk -F',' '{print $23}')
|
||||
# lte_qci=$(echo "$response" | awk -F',' '{print $24}')
|
||||
# lte_volte=$(echo "$response" | awk -F',' '{print $25}')
|
||||
# lte_ims_sms=$(echo "$response" | awk -F',' '{print $26}')
|
||||
# lte_sib2_plmn_r15_info_present=$(echo "$response" | awk -F',' '{print $27}')
|
||||
# lte_sib2_upr_layer_ind=$(echo "$response" | awk -F',' '{print $28}')
|
||||
# lte_restrict_dcnr=$(echo "$response" | awk -F',' '{print $29}' | sed 's/\r//g')
|
||||
;;
|
||||
"WCDMA"|"UMTS")
|
||||
network_mode="WCDMA Mode"
|
||||
wcdma_mcc=$(echo "$response" | awk -F',' '{print $2}')
|
||||
wcdma_mnc=$(echo "$response" | awk -F',' '{print $3}')
|
||||
wcdma_global_cell_id=$(echo "$response" | awk -F',' '{print $4}')
|
||||
wcdma_psc=$(echo "$response" | awk -F',' '{print $5}')
|
||||
wcdma_NodeB=$(echo "$response" | awk -F',' '{print $6}')
|
||||
wcdma_cell_id=$(echo "$response" | awk -F',' '{print $7}')
|
||||
wcdma_lac=$(echo "$response" | awk -F',' '{print $8}')
|
||||
wcdma_band_num=$(echo "$response" | awk -F',' '{print $9}')
|
||||
wcdma_band=$(meig_get_band "WCDMA" ${wcdma_band_num})
|
||||
wcdma_dl_channel=$(echo "$response" | awk -F',' '{print $10}')
|
||||
wcdma_ul_channel=$(echo "$response" | awk -F',' '{print $11}')
|
||||
wcdma_rssi=$(echo "$response" | awk -F',' '{print $12}')
|
||||
wcdma_ecio=$(echo "$response" | awk -F',' '{print $13}')
|
||||
# wcdma_sir=$(echo "$response" | awk -F',' '{print $14}')
|
||||
wcdma_rscp=$(echo "$response" | awk -F',' '{print $15}' | sed 's/\r//g')
|
||||
;;
|
||||
"GSM")
|
||||
network_mode="GSM Mode"
|
||||
gsm_mcc=$(echo "$response" | awk -F',' '{print $3}')
|
||||
gsm_mnc=$(echo "$response" | awk -F',' '{print $4}')
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
#获取美格模组信息
|
||||
# $1:AT串口
|
||||
# $2:平台
|
||||
# $3:连接定义
|
||||
get_meig_info()
|
||||
{
|
||||
debug "get meig info"
|
||||
#设置AT串口
|
||||
at_port="$1"
|
||||
platform="$2"
|
||||
define_connect="$3"
|
||||
|
||||
#基本信息
|
||||
meig_base_info
|
||||
|
||||
#SIM卡信息
|
||||
meig_sim_info
|
||||
if [ "$sim_status" != "ready" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
#网络信息
|
||||
meig_network_info
|
||||
if [ "$connect_status" != "connect" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
#小区信息
|
||||
meig_cell_info
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2023 Siriling <siriling@qq.com>
|
||||
|
||||
#脚本目录
|
||||
SCRIPT_DIR="/usr/share/modem"
|
||||
source "${SCRIPT_DIR}/modem_debug.sh"
|
||||
|
||||
#发送at命令
|
||||
# $1 AT串口
|
||||
# $2 AT命令
|
||||
at "$1" "$2"
|
||||
+94
@@ -0,0 +1,94 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2023 Siriling <siriling@qq.com>
|
||||
|
||||
#脚本目录
|
||||
SCRIPT_DIR="/usr/share/modem"
|
||||
source "${SCRIPT_DIR}/modem_debug.sh"
|
||||
|
||||
#初始化模组频段
|
||||
init_modem_band()
|
||||
{
|
||||
#2G
|
||||
DCS_1800="-"
|
||||
E-GSM_900="-"
|
||||
P-GSM_900="-"
|
||||
GSM_450="-"
|
||||
GSM_480="-"
|
||||
GSM_750="-"
|
||||
GSM_850="-"
|
||||
R-GSM_900="-"
|
||||
PCS_1900="-"
|
||||
|
||||
#3G
|
||||
|
||||
#4G
|
||||
B1="-"
|
||||
B2="-"
|
||||
B3="-"
|
||||
B4="-"
|
||||
B5="-"
|
||||
B6="-"
|
||||
B7="-"
|
||||
B8="-"
|
||||
B9="-"
|
||||
B10="-"
|
||||
B11="-"
|
||||
B12="-"
|
||||
B13="-"
|
||||
B14="-"
|
||||
B17="-"
|
||||
B18="-"
|
||||
B19="-"
|
||||
B20="-"
|
||||
B21="-"
|
||||
B25="-"
|
||||
B26="-"
|
||||
B28="-"
|
||||
B29="-"
|
||||
B30="-"
|
||||
B32="-"
|
||||
B34="-"
|
||||
B38="-"
|
||||
B39="-"
|
||||
B40="-"
|
||||
B41="-"
|
||||
B42="-"
|
||||
B66="-"
|
||||
B71="-"
|
||||
|
||||
#5G
|
||||
N1="-"
|
||||
N2="-"
|
||||
N3="-"
|
||||
N5="-"
|
||||
N7="-"
|
||||
N8="-"
|
||||
N12="-"
|
||||
N20="-"
|
||||
N25="-"
|
||||
N28="-"
|
||||
N38="-"
|
||||
N40="-"
|
||||
N41="-"
|
||||
N48="-"
|
||||
N66="-"
|
||||
N71="-"
|
||||
N77="-"
|
||||
N78="-"
|
||||
N79="-"
|
||||
}
|
||||
|
||||
#获取模组数据信息
|
||||
# $1:AT串口
|
||||
# $2:制造商
|
||||
# $3:平台
|
||||
# $4:连接定义
|
||||
modem_band()
|
||||
{
|
||||
#初始化模组频段
|
||||
debug "初始化模组频段"
|
||||
init_modem_band
|
||||
debug "初始化模组频段完成"
|
||||
}
|
||||
|
||||
modem_band "$1" "$2" "$3" "$4"
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2023 Siriling <siriling@qq.com>
|
||||
|
||||
#脚本目录
|
||||
SCRIPT_DIR="/usr/share/modem"
|
||||
|
||||
source "${SCRIPT_DIR}/quectel.sh"
|
||||
source "${SCRIPT_DIR}/fibocom.sh"
|
||||
source "${SCRIPT_DIR}/meig.sh"
|
||||
source "${SCRIPT_DIR}/huawei.sh"
|
||||
# source "${SCRIPT_DIR}/simcom.sh"
|
||||
|
||||
#调试开关
|
||||
# 0关闭
|
||||
# 1打开
|
||||
# 2输出到文件
|
||||
switch=0
|
||||
out_file="/tmp/modem.log" #输出文件
|
||||
#日志信息
|
||||
debug()
|
||||
{
|
||||
time=$(date "+%Y-%m-%d %H:%M:%S") #获取系统时间
|
||||
if [ $switch = 1 ]; then
|
||||
echo $time $1 #打印输出
|
||||
elif [ $switch = 2 ]; then
|
||||
echo $time $1 >> $outfile #输出到文件
|
||||
fi
|
||||
}
|
||||
|
||||
#发送at命令
|
||||
# $1 AT串口
|
||||
# $2 AT命令
|
||||
at()
|
||||
{
|
||||
local at_port="$1"
|
||||
local new_str="${2/[$]/$}"
|
||||
local at_command="${new_str/\"/\"}"
|
||||
|
||||
#echo
|
||||
# echo -e "${at_command}"" > "${at_port}" 2>&1
|
||||
|
||||
#sms_tool
|
||||
sms_tool -d "${at_port}" at "${at_command}" 2>&1
|
||||
}
|
||||
|
||||
#测试时打开
|
||||
# debug $1
|
||||
# at $1 $2
|
||||
|
||||
#获取快捷命令
|
||||
# $1:快捷选项
|
||||
# $2:制造商
|
||||
get_quick_commands()
|
||||
{
|
||||
local quick_option="$1"
|
||||
local manufacturer="$2"
|
||||
|
||||
local quick_commands
|
||||
case "$quick_option" in
|
||||
"auto") quick_commands=$(cat ${SCRIPT_DIR}/${manufacturer}_at_commands.json) ;;
|
||||
"custom") quick_commands=$(cat /etc/modem/custom_at_commands.json) ;;
|
||||
*) quick_commands=$(cat ${SCRIPT_DIR}/${manufacturer}_at_commands.json) ;;
|
||||
esac
|
||||
echo "$quick_commands"
|
||||
}
|
||||
|
||||
#拨号日志
|
||||
# $1:AT命令
|
||||
# $2:日志路径
|
||||
dial_log()
|
||||
{
|
||||
local at_command="$1"
|
||||
local path="$2"
|
||||
|
||||
#打印日志
|
||||
local update_time=$(date +"%Y-%m-%d %H:%M:%S")
|
||||
echo "[${update_time}] Send AT command ${at_command} to modem" >> "${path}"
|
||||
}
|
||||
+412
@@ -0,0 +1,412 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2023 Siriling <siriling@qq.com>
|
||||
|
||||
#脚本目录
|
||||
SCRIPT_DIR="/usr/share/modem"
|
||||
source "${SCRIPT_DIR}/modem_debug.sh"
|
||||
|
||||
#初值化数据结构
|
||||
init_modem_info()
|
||||
{
|
||||
#基本信息
|
||||
name='unknown' #名称
|
||||
manufacturer='unknown' #制造商
|
||||
revision='-' #固件版本
|
||||
at_port='-' #AT串口
|
||||
mode='unknown' #拨号模式
|
||||
temperature="NaN $(printf "\xc2\xb0")C" #温度
|
||||
update_time='-' #更新时间
|
||||
|
||||
#SIM卡信息
|
||||
sim_status="unknown" #SIM卡状态
|
||||
sim_slot="-" #SIM卡卡槽
|
||||
isp="-" #运营商(互联网服务提供商)
|
||||
sim_number='-' #SIM卡号码(手机号)
|
||||
imei='-' #IMEI
|
||||
imsi='-' #IMSI
|
||||
iccid='-' #ICCID
|
||||
|
||||
#网络信息
|
||||
connect_status="disconnect" #SIM卡状态
|
||||
network_type="-" #蜂窝网络类型
|
||||
cqi_ul="-" #上行信道质量指示
|
||||
cqi_dl="-" #下行信道质量指示
|
||||
ambr_ul="-" #上行签约速率
|
||||
ambr_dl="-" #下行签约速率
|
||||
tx_rate="-" #上传速率
|
||||
rx_rate="-" #下载速率
|
||||
|
||||
#小区信息
|
||||
network_mode="-" #网络模式
|
||||
#NR5G-SA模式
|
||||
nr_mcc=''
|
||||
nr_mnc=''
|
||||
nr_duplex_mode=''
|
||||
nr_cell_id=''
|
||||
nr_physical_cell_id=''
|
||||
nr_tac=''
|
||||
nr_arfcn=''
|
||||
nr_band=''
|
||||
nr_dl_bandwidth=''
|
||||
nr_rsrp=''
|
||||
nr_rsrq=''
|
||||
nr_sinr=''
|
||||
nr_rxlev=''
|
||||
nr_scs=''
|
||||
nr_srxlev=''
|
||||
#EN-DC模式(LTE)
|
||||
endc_lte_mcc=''
|
||||
endc_lte_mnc=''
|
||||
endc_lte_duplex_mode=''
|
||||
endc_lte_cell_id=''
|
||||
endc_lte_physical_cell_id=''
|
||||
endc_lte_earfcn=''
|
||||
endc_lte_freq_band_ind=''
|
||||
endc_lte_ul_bandwidth=''
|
||||
endc_lte_dl_bandwidth=''
|
||||
endc_lte_tac=''
|
||||
endc_lte_rsrp=''
|
||||
endc_lte_rsrq=''
|
||||
endc_lte_rssi=''
|
||||
endc_lte_sinr=''
|
||||
endc_lte_rxlev=''
|
||||
endc_lte_cql=''
|
||||
endc_lte_tx_power=''
|
||||
endc_lte_srxlev=''
|
||||
#EN-DC模式(NR5G-NSA)
|
||||
endc_nr_mcc=''
|
||||
endc_nr_mnc=''
|
||||
endc_nr_physical_cell_id=''
|
||||
endc_nr_arfcn=''
|
||||
endc_nr_band=''
|
||||
endc_nr_dl_bandwidth=''
|
||||
endc_nr_rsrp=''
|
||||
endc_nr_rsrq=''
|
||||
endc_nr_sinr=''
|
||||
endc_nr_scs=''
|
||||
#LTE模式
|
||||
lte_mcc=''
|
||||
lte_mnc=''
|
||||
lte_duplex_mode=''
|
||||
lte_cell_id=''
|
||||
lte_physical_cell_id=''
|
||||
lte_earfcn=''
|
||||
lte_freq_band_ind=''
|
||||
lte_band=''
|
||||
lte_ul_bandwidth=''
|
||||
lte_dl_bandwidth=''
|
||||
lte_tac=''
|
||||
lte_rsrp=''
|
||||
lte_rsrq=''
|
||||
lte_rssi=''
|
||||
lte_sinr=''
|
||||
lte_rxlev=''
|
||||
lte_cql=''
|
||||
lte_tx_power=''
|
||||
lte_srxlev=''
|
||||
#WCDMA模式
|
||||
wcdma_mcc=''
|
||||
wcdma_mnc=''
|
||||
wcdma_lac=''
|
||||
wcdma_cell_id=''
|
||||
wcdma_uarfcn=''
|
||||
wcdma_psc=''
|
||||
wcdma_rac=''
|
||||
wcdma_band=''
|
||||
wcdma_rssi=''
|
||||
wcdma_rscp=''
|
||||
wcdma_ecio=''
|
||||
wcdma_phych=''
|
||||
wcdma_sf=''
|
||||
wcdma_slot=''
|
||||
wcdma_speech_code=''
|
||||
wcdma_com_mod=''
|
||||
}
|
||||
|
||||
#设置基本信息
|
||||
set_base_info()
|
||||
{
|
||||
base_info="\"base_info\":{
|
||||
\"manufacturer\":\"$manufacturer\",
|
||||
\"revision\":\"$revision\",
|
||||
\"at_port\":\"$at_port\",
|
||||
\"mode\":\"$mode\",
|
||||
\"temperature\":\"$temperature\",
|
||||
\"update_time\":\"$update_time\"
|
||||
},"
|
||||
}
|
||||
|
||||
#设置SIM卡信息
|
||||
set_sim_info()
|
||||
{
|
||||
if [ "$sim_status" = "ready" ]; then
|
||||
sim_info="\"sim_info\":[
|
||||
{\"SIM Status\":\"$sim_status\", \"full_name\":\"SIM Status\"},
|
||||
{\"ISP\":\"$isp\", \"full_name\":\"Internet Service Provider\"},
|
||||
{\"SIM Slot\":\"$sim_slot\", \"full_name\":\"SIM Slot\"},
|
||||
{\"SIM Number\":\"$sim_number\", \"full_name\":\"SIM Number\"},
|
||||
{\"IMEI\":\"$imei\", \"full_name\":\"International Mobile Equipment Identity\"},
|
||||
{\"IMSI\":\"$imsi\", \"full_name\":\"International Mobile Subscriber Identity\"},
|
||||
{\"ICCID\":\"$iccid\", \"full_name\":\"Integrate Circuit Card Identity\"}
|
||||
],"
|
||||
elif [ "$sim_status" = "miss" ]; then
|
||||
sim_info="\"sim_info\":[
|
||||
{\"SIM Status\":\"$sim_status\", \"full_name\":\"SIM Status\"},
|
||||
{\"IMEI\":\"$imei\", \"full_name\":\"International Mobile Equipment Identity\"}
|
||||
],"
|
||||
elif [ "$sim_status" = "unknown" ]; then
|
||||
sim_info="\"sim_info\":[
|
||||
{\"SIM Status\":\"$sim_status\", \"full_name\":\"SIM Status\"}
|
||||
],"
|
||||
else
|
||||
sim_info="\"sim_info\":[
|
||||
{\"SIM Status\":\"$sim_status\", \"full_name\":\"SIM Status\"},
|
||||
{\"SIM Slot\":\"$sim_slot\", \"full_name\":\"SIM Slot\"},
|
||||
{\"IMEI\":\"$imei\", \"full_name\":\"International Mobile Equipment Identity\"},
|
||||
{\"IMSI\":\"$imsi\", \"full_name\":\"International Mobile Subscriber Identity\"},
|
||||
{\"ICCID\":\"$iccid\", \"full_name\":\"Integrate Circuit Card Identity\"}
|
||||
],"
|
||||
fi
|
||||
}
|
||||
|
||||
#设置网络信息
|
||||
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\"}
|
||||
],"
|
||||
}
|
||||
|
||||
#设置信号信息
|
||||
set_cell_info()
|
||||
{
|
||||
if [ "$network_mode" = "NR5G-SA Mode" ]; then
|
||||
cell_info="\"cell_info\":{
|
||||
\"NR5G-SA Mode\":[
|
||||
{\"MCC\":\"$nr_mcc\", \"full_name\":\"Mobile Country Code\"},
|
||||
{\"MNC\":\"$nr_mnc\", \"full_name\":\"Mobile Network Code\"},
|
||||
{\"Duplex Mode\":\"$nr_duplex_mode\", \"full_name\":\"Duplex Mode\"},
|
||||
{\"Cell ID\":\"$nr_cell_id\", \"full_name\":\"Cell ID\"},
|
||||
{\"Physical Cell ID\":\"$nr_physical_cell_id\", \"full_name\":\"Physical Cell ID\"},
|
||||
{\"TAC\":\"$nr_tac\", \"full_name\":\"Tracking area code of cell servedby neighbor Enb\"},
|
||||
{\"ARFCN\":\"$nr_arfcn\", \"full_name\":\"Absolute Radio-Frequency Channel Number\"},
|
||||
{\"Band\":\"$nr_band\", \"full_name\":\"Band\"},
|
||||
{\"DL Bandwidth\":\"$nr_dl_bandwidth\", \"full_name\":\"DL Bandwidth\"},
|
||||
{\"RSRP\":\"$nr_rsrp\", \"full_name\":\"Reference Signal Received Power\"},
|
||||
{\"RSRQ\":\"$nr_rsrq\", \"full_name\":\"Reference Signal Received Quality\"},
|
||||
{\"SINR\":\"$nr_sinr\", \"full_name\":\"Signal to Interference plus Noise Ratio Bandwidth\"},
|
||||
{\"RxLev\":\"$nr_rxlev\", \"full_name\":\"Received Signal Level\"},
|
||||
{\"SCS\":\"$nr_scs\", \"full_name\":\"SCS\"},
|
||||
{\"Srxlev\":\"$nr_srxlev\", \"full_name\":\"Serving Cell Receive Level\"}
|
||||
]
|
||||
}"
|
||||
elif [ "$network_mode" = "EN-DC Mode" ]; then
|
||||
cell_info="\"cell_info\":{
|
||||
\"EN-DC Mode\":[
|
||||
{\"LTE\":[
|
||||
{\"MCC\":\"$endc_lte_mcc\", \"full_name\":\"Mobile Country Code\"},
|
||||
{\"MNC\":\"$endc_lte_mnc\", \"full_name\":\"Mobile Network Code\"},
|
||||
{\"Duplex Mode\":\"$endc_lte_duplex_mode\", \"full_name\":\"Duplex Mode\"},
|
||||
{\"Cell ID\":\"$endc_lte_cell_id\", \"full_name\":\"Cell ID\"},
|
||||
{\"Physical Cell ID\":\"$endc_lte_physical_cell_id\", \"full_name\":\"Physical Cell ID\"},
|
||||
{\"EARFCN\":\"$endc_lte_earfcn\", \"full_name\":\"E-UTRA Absolute Radio Frequency Channel Number\"},
|
||||
{\"Freq band indicator\":\"$endc_lte_freq_band_ind\", \"full_name\":\"Freq band indicator\"},
|
||||
{\"Band\":\"$endc_lte_band\", \"full_name\":\"Band\"},
|
||||
{\"UL Bandwidth\":\"$endc_lte_ul_bandwidth\", \"full_name\":\"UL Bandwidth\"},
|
||||
{\"DL Bandwidth\":\"$endc_lte_dl_bandwidth\", \"full_name\":\"DL Bandwidth\"},
|
||||
{\"TAC\":\"$endc_lte_tac\", \"full_name\":\"Tracking area code of cell servedby neighbor Enb\"},
|
||||
{\"RSRP\":\"$endc_lte_rsrp\", \"full_name\":\"Reference Signal Received Power\"},
|
||||
{\"RSRQ\":\"$endc_lte_rsrq\", \"full_name\":\"Reference Signal Received Quality\"},
|
||||
{\"RSSI\":\"$endc_lte_rssi\", \"full_name\":\"Received Signal Strength Indicator\"},
|
||||
{\"SINR\":\"$endc_lte_sinr\", \"full_name\":\"Signal to Interference plus Noise Ratio Bandwidth\"},
|
||||
{\"RxLev\":\"$endc_lte_rxlev\", \"full_name\":\"Received Signal Level\"},
|
||||
{\"RSSNR\":\"$endc_lte_rssnr\", \"full_name\":\"Radio Signal Strength Noise Ratio\"},
|
||||
{\"CQI\":\"$endc_lte_cql\", \"full_name\":\"Channel Quality Indicator\"},
|
||||
{\"TX Power\":\"$endc_lte_tx_power\", \"full_name\":\"TX Power\"},
|
||||
{\"Srxlev\":\"$endc_lte_srxlev\", \"full_name\":\"Serving Cell Receive Level\"}
|
||||
]
|
||||
},
|
||||
|
||||
{\"NR5G-NSA\":[
|
||||
{\"MCC\":\"$endc_nr_mcc\", \"full_name\":\"Mobile Country Code\"},
|
||||
{\"MNC\":\"$endc_nr_mnc\", \"full_name\":\"Mobile Network Code\"},
|
||||
{\"Physical Cell ID\":\"$endc_nr_physical_cell_id\", \"full_name\":\"Physical Cell ID\"},
|
||||
{\"ARFCN\":\"$endc_nr_arfcn\", \"full_name\":\"Absolute Radio-Frequency Channel Number\"},
|
||||
{\"Band\":\"$endc_nr_band\", \"full_name\":\"Band\"},
|
||||
{\"DL Bandwidth\":\"$endc_nr_dl_bandwidth\", \"full_name\":\"DL Bandwidth\"},
|
||||
{\"RSRP\":\"$endc_nr_rsrp\", \"full_name\":\"Reference Signal Received Power\"},
|
||||
{\"RSRQ\":\"$endc_nr_rsrq\", \"full_name\":\"Reference Signal Received Quality\"},
|
||||
{\"SINR\":\"$endc_nr_sinr\", \"full_name\":\"Signal to Interference plus Noise Ratio Bandwidth\"},
|
||||
{\"SCS\":\"$endc_nr_scs\", \"full_name\":\"SCS\"}
|
||||
]
|
||||
}
|
||||
]
|
||||
}"
|
||||
elif [ "$network_mode" = "LTE Mode" ]; then
|
||||
cell_info="\"cell_info\":{
|
||||
\"LTE Mode\":[
|
||||
{\"MCC\":\"$lte_mcc\", \"full_name\":\"Mobile Country Code\"},
|
||||
{\"MNC\":\"$lte_mnc\", \"full_name\":\"Mobile Network Code\"},
|
||||
{\"Duplex Mode\":\"$lte_duplex_mode\", \"full_name\":\"Duplex Mode\"},
|
||||
{\"Cell ID\":\"$lte_cell_id\", \"full_name\":\"Cell ID\"},
|
||||
{\"Physical Cell ID\":\"$lte_physical_cell_id\", \"full_name\":\"Physical Cell ID\"},
|
||||
{\"EARFCN\":\"$lte_earfcn\", \"full_name\":\"E-UTRA Absolute Radio Frequency Channel Number\"},
|
||||
{\"Freq band indicator\":\"$lte_freq_band_ind\", \"full_name\":\"Freq band indicator\"},
|
||||
{\"Band\":\"$lte_band\", \"full_name\":\"Band\"},
|
||||
{\"UL Bandwidth\":\"$lte_ul_bandwidth\", \"full_name\":\"UL Bandwidth\"},
|
||||
{\"DL Bandwidth\":\"$lte_dl_bandwidth\", \"full_name\":\"DL Bandwidth\"},
|
||||
{\"TAC\":\"$lte_tac\", \"full_name\":\"Tracking area code of cell servedby neighbor Enb\"},
|
||||
{\"RSRP\":\"$lte_rsrp\", \"full_name\":\"Reference Signal Received Power\"},
|
||||
{\"RSRQ\":\"$lte_rsrq\", \"full_name\":\"Reference Signal Received Quality\"},
|
||||
{\"RSSI\":\"$lte_rssi\", \"full_name\":\"Received Signal Strength Indicator\"},
|
||||
{\"SINR\":\"$lte_sinr\", \"full_name\":\"Signal to Interference plus Noise Ratio Bandwidth\"},
|
||||
{\"RxLev\":\"$lte_rxlev\", \"full_name\":\"RxLev\"},
|
||||
{\"RSSNR\":\"$lte_rssnr\", \"full_name\":\"Radio Signal Strength Noise Ratio\"},
|
||||
{\"CQI\":\"$lte_cql\", \"full_name\":\"Channel Quality Indicator\"},
|
||||
{\"TX Power\":\"$lte_tx_power\", \"full_name\":\"TX Power\"},
|
||||
{\"Srxlev\":\"$lte_srxlev\", \"full_name\":\"Serving Cell Receive Level\"}
|
||||
]
|
||||
}"
|
||||
elif [ "$network_mode" = "WCDMA Mode" ]; then
|
||||
cell_info="\"cell_info\":{
|
||||
\"WCDMA Mode\":[
|
||||
{\"MCC\":\"$wcdma_mcc\", \"full_name\":\"Mobile Country Code\"},
|
||||
{\"MNC\":\"$wcdma_mnc\", \"full_name\":\"Mobile Network Code\"},
|
||||
{\"LAC\":\"$wcdma_lac\", \"full_name\":\"Location Area Code\"},
|
||||
{\"Cell ID\":\"$wcdma_cell_id\", \"full_name\":\"Cell ID\"},
|
||||
{\"UARFCN\":\"$wcdma_uarfcn\", \"full_name\":\"UTRA Absolute Radio Frequency Channel Number\"},
|
||||
{\"PSC\":\"$wcdma_psc\", \"full_name\":\"Primary Scrambling Code\"},
|
||||
{\"RAC\":\"$wcdma_rac\", \"full_name\":\"Routing Area Code\"},
|
||||
{\"Band\":\"$wcdma_band\", \"full_name\":\"Band\"},
|
||||
{\"RSSI\":\"$wcdma_rssi\", \"full_name\":\"Received Signal Strength Indicator\"},
|
||||
{\"RSCP\":\"$wcdma_rscp\", \"full_name\":\"Received Signal Code Power\"},
|
||||
{\"Ec/Io\":\"$wcdma_ecio\", \"full_name\":\"Ec/Io\"},
|
||||
{\"Ec/No\":\"$wcdma_ecno\", \"full_name\":\"Ec/No\"},
|
||||
{\"Physical Channel\":\"$wcdma_phych\", \"full_name\":\"Physical Channel\"},
|
||||
{\"Spreading Factor\":\"$wcdma_sf\", \"full_name\":\"Spreading Factor\"},
|
||||
{\"Slot\":\"$wcdma_slot\", \"full_name\":\"Slot\"},
|
||||
{\"Speech Code\":\"$wcdma_speech_code\", \"full_name\":\"Speech Code\"},
|
||||
{\"Compression Mode\":\"$wcdma_com_mod\", \"full_name\":\"Compression Mode\"},
|
||||
{\"RxLev\":\"$wcdma_rxlev\", \"full_name\":\"RxLev\"}
|
||||
]
|
||||
}"
|
||||
fi
|
||||
}
|
||||
|
||||
#以Json格式保存模组信息
|
||||
info_to_json()
|
||||
{
|
||||
base_info="\"base_info\":{},"
|
||||
sim_info="\"sim_info\":{},"
|
||||
network_info="\"network_info\":{},"
|
||||
cell_info="\"cell_info\":{}"
|
||||
|
||||
#设置基本信息
|
||||
set_base_info
|
||||
|
||||
#判断是否适配
|
||||
if [ "$manufacturer" != "unknown" ]; then
|
||||
#设置SIM卡信息
|
||||
set_sim_info
|
||||
fi
|
||||
|
||||
#判断插卡和连接状态
|
||||
if [ "$sim_status" = "ready" ] && [ "$connect_status" = "connect" ]; then
|
||||
#设置网络信息
|
||||
set_network_info
|
||||
#设置小区信息
|
||||
set_cell_info
|
||||
fi
|
||||
|
||||
#拼接所有信息(不要漏掉最后一个})
|
||||
modem_info="{$base_info$modem_info$sim_info$network_info$cell_info}"
|
||||
}
|
||||
# echo $ECIO #参考信号接收质量 RSRQ ecio
|
||||
# echo $ECIO1 #参考信号接收质量 RSRQ ecio1
|
||||
# echo $RSCP #参考信号接收功率 RSRP rscp0
|
||||
# echo $RSCP1 #参考信号接收功率 RSRP rscp1
|
||||
# echo $SINR #信噪比 SINR rv["sinr"]
|
||||
|
||||
# #基站信息
|
||||
# echo $COPS_MCC #MCC
|
||||
# echo $$COPS_MNC #MNC
|
||||
# echo $LAC #eNB ID
|
||||
# echo '' #LAC_NUM
|
||||
# echo $RNC #TAC
|
||||
# echo '' #RNC_NUM
|
||||
# echo $CID
|
||||
# echo '' #CID_NUM
|
||||
# echo $LBAND
|
||||
# echo $channel
|
||||
# echo $PCI
|
||||
# echo $MODTYPE
|
||||
# echo $QTEMP
|
||||
|
||||
#获取模组信息
|
||||
get_modem_info()
|
||||
{
|
||||
update_time=$(date +"%Y-%m-%d %H:%M:%S")
|
||||
|
||||
debug "检查模组的AT串口"
|
||||
#获取模块AT串口
|
||||
if [ -z "$at_port" ]; then
|
||||
debug "模组没有AT串口"
|
||||
return
|
||||
fi
|
||||
|
||||
#检查模块状态(是否处于重启,重置,串口异常状态)
|
||||
local at_command="ATI"
|
||||
local response=$(at ${at_port} ${at_command})
|
||||
if [[ "$response" = *"failed"* ]] || [[ "$response" = *"$at_port"* ]]; then
|
||||
debug "模组AT串口未就绪"
|
||||
return
|
||||
fi
|
||||
|
||||
debug "根据模组的制造商获取信息"
|
||||
#更多信息获取
|
||||
case $manufacturer in
|
||||
"quectel") get_quectel_info "${at_port}" "${platform}" "${define_connect}" ;;
|
||||
"fibocom") get_fibocom_info "${at_port}" "${platform}" "${define_connect}" ;;
|
||||
"meig") get_meig_info "${at_port}" "${platform}" "${define_connect}" ;;
|
||||
"simcom") get_simcom_info "${at_port}" "${platform}" "${define_connect}" ;;
|
||||
"huawei") get_huawei_info "${at_port}" "${platform}" "${define_connect}" ;;
|
||||
*) debug "未适配该模组" ;;
|
||||
esac
|
||||
|
||||
#获取更新时间
|
||||
update_time=$(date +"%Y-%m-%d %H:%M:%S")
|
||||
}
|
||||
|
||||
#获取模组数据信息
|
||||
# $1:AT串口
|
||||
# $2:制造商
|
||||
# $3:平台
|
||||
# $4:连接定义
|
||||
modem_info()
|
||||
{
|
||||
#初值化模组信息
|
||||
debug "初值化模组信息"
|
||||
init_modem_info
|
||||
debug "初值化模组信息完成"
|
||||
|
||||
#获取模组信息
|
||||
at_port="$1"
|
||||
manufacturer="$2"
|
||||
platform="$3"
|
||||
define_connect="$4"
|
||||
|
||||
debug "获取模组信息"
|
||||
get_modem_info
|
||||
|
||||
#整合模块信息
|
||||
info_to_json
|
||||
echo $modem_info
|
||||
}
|
||||
|
||||
modem_info "$1" "$2" "$3" "$4"
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2023 Siriling <siriling@qq.com>
|
||||
|
||||
#脚本目录
|
||||
SCRIPT_DIR="/usr/share/modem"
|
||||
source "${SCRIPT_DIR}/modem_util.sh"
|
||||
|
||||
#模组配置初始化
|
||||
modem_init()
|
||||
{
|
||||
m_log "info" "Clearing all modem configurations"
|
||||
#清空模组配置
|
||||
local modem_count=$(uci -q get modem.@global[0].modem_number)
|
||||
for i in $(seq 0 $((modem_count-1))); do
|
||||
#删除该模组的配置
|
||||
uci -q del modem.modem${i}
|
||||
done
|
||||
uci set modem.@global[0].modem_number=0
|
||||
uci commit modem
|
||||
m_log "info" "All module configurations cleared"
|
||||
}
|
||||
|
||||
modem_init
|
||||
+326
@@ -0,0 +1,326 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2023 Siriling <siriling@qq.com>
|
||||
|
||||
#脚本目录
|
||||
SCRIPT_DIR="/usr/share/modem"
|
||||
|
||||
#运行目录
|
||||
MODEM_RUNDIR="/var/run/modem"
|
||||
|
||||
#导入组件工具
|
||||
source "${SCRIPT_DIR}/modem_debug.sh"
|
||||
|
||||
#重设网络接口
|
||||
# $1:AT串口
|
||||
# $4:连接定义
|
||||
# $5:模组序号
|
||||
reset_network_interface()
|
||||
{
|
||||
local at_port="$1"
|
||||
local define_connect="$2"
|
||||
local modem_no="$3"
|
||||
|
||||
local interface_name="wwan_5g_${modem_no}"
|
||||
local interface_name_ipv6="wwan6_5g_${modem_no}"
|
||||
|
||||
#获取IPv4地址
|
||||
local at_command="AT+CGPADDR=${define_connect}"
|
||||
local ipv4=$(at ${at_port} ${at_command} | grep "+CGPADDR: " | sed -n '1p' | awk -F',' '{print $2}' | sed 's/"//g')
|
||||
#输出日志
|
||||
# echo "[$(date +"%Y-%m-%d %H:%M:%S")] Get Modem new IPv4 address : ${ipv4}" >> "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
|
||||
#获取DNS地址
|
||||
local dns=$(fibocom_get_dns ${at_port} ${define_connect})
|
||||
local ipv4_dns1=$(echo "${dns}" | jq -r '.dns.ipv4_dns1')
|
||||
local ipv4_dns2=$(echo "${dns}" | jq -r '.dns.ipv4_dns2')
|
||||
#输出日志
|
||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] Get Modem IPv4 DNS1: ${ipv4_dns1}" >> "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] Get Modem IPv4 DNS2: ${ipv4_dns2}" >> "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
|
||||
#比较的网络接口中的IPv4地址
|
||||
local ipv4_config=$(uci -q get network.${interface_name}.ipaddr)
|
||||
if [ "$ipv4_config" == "$ipv4" ]; then
|
||||
#输出日志
|
||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] IPv4 address is the same as in the network interface, skip" >> "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
else
|
||||
#输出日志
|
||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] Reset network interface ${interface_name}" >> "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
|
||||
#设置静态地址
|
||||
uci set network.wan.metric='2'
|
||||
uci set network.wan6.metric='2'
|
||||
uci set network.${interface_name}.proto='static'
|
||||
uci set network.${interface_name}.ipaddr="${ipv4}"
|
||||
uci set network.${interface_name}.netmask='255.255.255.0'
|
||||
uci set network.${interface_name}.gateway="${ipv4%.*}.1"
|
||||
uci set network.${interface_name}.peerdns='0'
|
||||
uci set network.${interface_name}.metric='1'
|
||||
uci set network.${interface_name_ipv6}.metric='1'
|
||||
uci -q del network.${interface_name}.dns
|
||||
uci add_list network.${interface_name}.dns="${ipv4_dns1}"
|
||||
uci add_list network.${interface_name}.dns="${ipv4_dns2}"
|
||||
uci commit network
|
||||
service network reload
|
||||
|
||||
#输出日志
|
||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] Reset network interface successful" >> "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
fi
|
||||
}
|
||||
|
||||
#GobiNet拨号
|
||||
# $1:AT串口
|
||||
# $2:制造商
|
||||
# $3:连接定义
|
||||
gobinet_dial()
|
||||
{
|
||||
local at_port="$1"
|
||||
local manufacturer="$2"
|
||||
local define_connect="$3"
|
||||
|
||||
#激活
|
||||
local at_command="AT+CGACT=1,${define_connect}"
|
||||
#打印日志
|
||||
dial_log "${at_command}" "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
|
||||
at "${at_port}" "${at_command}"
|
||||
|
||||
#拨号
|
||||
local at_command
|
||||
if [ "$manufacturer" = "quectel" ]; then
|
||||
#移远不走该分支
|
||||
at_command='ATI'
|
||||
elif [ "$manufacturer" = "fibocom" ]; then
|
||||
at_command='AT$QCRMCALL=1,3'
|
||||
elif [ "$manufacturer" = "meig" ]; then
|
||||
at_command="AT$QCRMCALL=1,1,${define_connect},2,1"
|
||||
else
|
||||
at_command='ATI'
|
||||
fi
|
||||
|
||||
#打印日志
|
||||
dial_log "${at_command}" "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
|
||||
at "${at_port}" "${at_command}"
|
||||
}
|
||||
|
||||
#ECM拨号
|
||||
# $1:AT串口
|
||||
# $2:制造商
|
||||
# $3:连接定义
|
||||
# $4:模组序号
|
||||
ecm_dial()
|
||||
{
|
||||
local at_port="$1"
|
||||
local manufacturer="$2"
|
||||
local define_connect="$3"
|
||||
local modem_no="$4"
|
||||
|
||||
name=$(uci -q get modem.modem${modem_no}.name)
|
||||
|
||||
#激活
|
||||
# local at_command="AT+CGACT=1,${define_connect}"
|
||||
# #打印日志
|
||||
# dial_log "${at_command}" "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
|
||||
# at "${at_port}" "${at_command}"
|
||||
|
||||
#拨号
|
||||
local at_command
|
||||
if [ "$manufacturer" = "quectel" ]; then
|
||||
at_command="AT+QNETDEVCTL=${define_connect},1,1"
|
||||
elif [ "$manufacturer" = "fibocom" ]; then
|
||||
at_command="AT+GTRNDIS=1,${define_connect}"
|
||||
elif [ "$manufacturer" = "meig" ]; then
|
||||
at_command="AT^NDISDUP=${define_connect},1"
|
||||
elif [ "$manufacturer" = "huawei" ]; then
|
||||
at_command="AT^NDISDUP=${define_connect},1"
|
||||
elif [ "$manufacturer" = "tdtech" ]; then
|
||||
at_command="AT^NDISDUP=${define_connect},1"
|
||||
else
|
||||
at_command='ATI'
|
||||
fi
|
||||
|
||||
#打印日志
|
||||
dial_log "${at_command}" "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
|
||||
at "${at_port}" "${at_command}"
|
||||
|
||||
sleep 2s
|
||||
}
|
||||
|
||||
#RNDIS拨号
|
||||
# $1:AT串口
|
||||
# $2:制造商
|
||||
# $3:平台
|
||||
# $4:连接定义
|
||||
# $5:模组序号
|
||||
rndis_dial()
|
||||
{
|
||||
local at_port="$1"
|
||||
local manufacturer="$2"
|
||||
local platform="$3"
|
||||
local define_connect="$4"
|
||||
local modem_no="$5"
|
||||
|
||||
#手动拨号(广和通FM350-GL)
|
||||
if [ "$manufacturer" = "fibocom" ] && [ "$platform" = "mediatek" ]; then
|
||||
|
||||
local at_command="AT+CGACT=1,${define_connect}"
|
||||
#打印日志
|
||||
dial_log "${at_command}" "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
#激活并拨号
|
||||
at "${at_port}" "${at_command}"
|
||||
|
||||
sleep 3s
|
||||
else
|
||||
#拨号
|
||||
ecm_dial "${at_port}" "${manufacturer}" "${define_connect}"
|
||||
fi
|
||||
}
|
||||
|
||||
#Modem Manager拨号
|
||||
# $1:接口名称
|
||||
# $2:连接定义
|
||||
modemmanager_dial()
|
||||
{
|
||||
local interface_name="$1"
|
||||
local define_connect="$2"
|
||||
|
||||
# #激活
|
||||
# local at_command="AT+CGACT=1,${define_connect}"
|
||||
# #打印日志
|
||||
# dial_log "${at_command}" "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
# at "${at_port}" "${at_command}"
|
||||
|
||||
#启动网络接口
|
||||
ifup "${interface_name}";
|
||||
}
|
||||
|
||||
#检查模组网络连接
|
||||
# $1:配置ID
|
||||
# $2:模组序号
|
||||
# $3:拨号模式
|
||||
modem_network_task()
|
||||
{
|
||||
local config_id="$1"
|
||||
local modem_no="$2"
|
||||
local mode="$3"
|
||||
|
||||
#获取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 define_connect=$(uci -q get modem.modem${modem_no}.define_connect)
|
||||
local network=$(uci -q get modem.modem${modem_no}.network)
|
||||
local interface_name="wwan_5g_${modem_no}"
|
||||
local interface_name_ipv6="wwan6_5g_${modem_no}"
|
||||
|
||||
#AT串口未获取到重新获取(解决模组还在识别中,就已经开始拨号的问题)
|
||||
while [ -z "$manufacturer" ] || [ "$manufacturer" = "unknown" ]; do
|
||||
at_port=$(uci -q get modem.modem${modem_no}.at_port)
|
||||
manufacturer=$(uci -q get modem.modem${modem_no}.manufacturer)
|
||||
platform=$(uci -q get modem.modem${modem_no}.platform)
|
||||
define_connect=$(uci -q get modem.modem${modem_no}.define_connect)
|
||||
sleep 1s
|
||||
done
|
||||
|
||||
#重载配置(解决AT命令发不出去的问题)
|
||||
# service modem reload
|
||||
|
||||
#IPv4地址缓存
|
||||
local ipv4_cache
|
||||
|
||||
#输出日志
|
||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] Start network task" >> "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
while true; do
|
||||
#全局
|
||||
local enable_dial=$(uci -q get modem.@global[0].enable_dial)
|
||||
if [ "$enable_dial" != "1" ]; then
|
||||
#输出日志
|
||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] The dialing configuration has been disabled, this network task quit" >> "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
break
|
||||
fi
|
||||
#单个模组
|
||||
enable=$(uci -q get modem.${config_id}.enable)
|
||||
if [ "$enable" != "1" ]; then
|
||||
#输出日志
|
||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] The modem has disabled dialing, this network task quit" >> "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
break
|
||||
fi
|
||||
|
||||
#网络连接检查
|
||||
local at_command="AT+CGPADDR=${define_connect}"
|
||||
local ipv4=$(at ${at_port} ${at_command} | grep "+CGPADDR: " | sed -n '1p' | awk -F',' '{print $2}' | sed 's/"//g')
|
||||
|
||||
if [ -z "$ipv4" ]; then
|
||||
|
||||
[ "$mode" = "modemmanager" ] && {
|
||||
#拨号工具为modemmanager时,不需要重新设置连接定义
|
||||
continue
|
||||
}
|
||||
|
||||
#输出日志
|
||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] Unable to get IPv4 address" >> "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] Redefine connect to ${define_connect}" >> "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
service modem reload
|
||||
|
||||
#输出日志
|
||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] Modem dial" >> "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
#拨号(针对获取IPv4返回为空的模组)
|
||||
case "$mode" in
|
||||
"gobinet") gobinet_dial "${at_port}" "${manufacturer}" "${define_connect}" ;;
|
||||
"ecm") ecm_dial "${at_port}" "${manufacturer}" "${define_connect}" "${modem_no}" ;;
|
||||
"rndis") rndis_dial "${at_port}" "${manufacturer}" "${platform}" "${define_connect}" "${modem_no}" ;;
|
||||
"modemmanager") modemmanager_dial "${interface_name}" "${define_connect}" ;;
|
||||
*) ecm_dial "${at_port}" "${manufacturer}" "${define_connect}" ;;
|
||||
esac
|
||||
|
||||
elif [[ "$ipv4" = *"0.0.0.0"* ]]; then
|
||||
|
||||
#输出日志
|
||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] Modem${modem_no} current IPv4 address : ${ipv4}" >> "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
|
||||
#输出日志
|
||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] Modem dial" >> "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
#拨号
|
||||
case "$mode" in
|
||||
"gobinet") gobinet_dial "${at_port}" "${manufacturer}" "${define_connect}" ;;
|
||||
"ecm") ecm_dial "${at_port}" "${manufacturer}" "${define_connect}" ;;
|
||||
"rndis") rndis_dial "${at_port}" "${manufacturer}" "${platform}" "${define_connect}" "${modem_no}" ;;
|
||||
"modemmanager") modemmanager_dial "${interface_name}" "${define_connect}" ;;
|
||||
*) ecm_dial "${at_port}" "${manufacturer}" "${define_connect}" ;;
|
||||
esac
|
||||
|
||||
elif [ "$ipv4" != "$ipv4_cache" ]; then
|
||||
|
||||
#第一次缓存IP为空时不输出日志
|
||||
[ -n "$ipv4_cache" ] && {
|
||||
#输出日志
|
||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] Modem${modem_no} IPv4 address has changed" >> "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
}
|
||||
|
||||
#输出日志
|
||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] Modem${modem_no} current IPv4 address : ${ipv4}" >> "${MODEM_RUNDIR}/modem${modem_no}_dial.cache"
|
||||
|
||||
#缓存当前IP
|
||||
ipv4_cache="${ipv4}"
|
||||
|
||||
#重新设置网络接口(广和通FM350-GL)
|
||||
if [ "$manufacturer" = "fibocom" ] && [ "$platform" = "mediatek" ]; then
|
||||
reset_network_interface "${at_port}" "${define_connect}" "${modem_no}"
|
||||
sleep 3s
|
||||
fi
|
||||
|
||||
[ "$mode" != "modemmanager" ] && {
|
||||
#重新启动网络接口
|
||||
ifup "${interface_name}"
|
||||
ifup "${interface_name_ipv6}"
|
||||
}
|
||||
fi
|
||||
rdisc6 "${network}" &
|
||||
ndisc6 fe80::1 "${network}" &
|
||||
sleep 5s
|
||||
done
|
||||
}
|
||||
|
||||
modem_network_task "$1" "$2" "$3"
|
||||
+144
@@ -0,0 +1,144 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2023 Siriling <siriling@qq.com>
|
||||
|
||||
#脚本目录
|
||||
SCRIPT_DIR="/usr/share/modem"
|
||||
source "${SCRIPT_DIR}/modem_util.sh"
|
||||
|
||||
#################################################################################旧扫描方法#################################################################################
|
||||
|
||||
#获取设备物理地址
|
||||
# $1:网络设备或串口
|
||||
get_device_physical_path()
|
||||
{
|
||||
local device_name="$(basename "$1")"
|
||||
local device_path="$(find /sys/class/ -name $device_name)"
|
||||
local device_physical_path="$(readlink -f $device_path/device/)"
|
||||
echo "$device_physical_path"
|
||||
}
|
||||
|
||||
#设置模组配置
|
||||
# $1:网络设备
|
||||
# $2:网络设备系统路径
|
||||
set_modem_config()
|
||||
{
|
||||
local network="$(basename $sys_network)"
|
||||
local network_path="$(readlink -f $sys_network)"
|
||||
|
||||
#只处理最上级的网络设备
|
||||
local count=$(echo "${network_path}" | grep -o "/net" | wc -l)
|
||||
[ "$count" -ge "2" ] && return
|
||||
|
||||
#判断路径是否带有usb(排除其他eth网络设备)
|
||||
if [[ "$network" = *"eth"* ]] && [[ "$network_path" != *"usb"* ]]; then
|
||||
return
|
||||
fi
|
||||
|
||||
#获取物理路径
|
||||
local device_physical_path=$(m_get_device_physical_path ${network_path})
|
||||
#设置物理设备
|
||||
m_set_physical_device "scan" "${device_physical_path}"
|
||||
|
||||
#启用拨号
|
||||
m_enable_dial "${network}"
|
||||
}
|
||||
|
||||
#设置系统网络设备
|
||||
# $1:系统网络设备列表
|
||||
set_sys_network_config()
|
||||
{
|
||||
local sys_networks="$1"
|
||||
|
||||
for sys_network in $sys_networks; do
|
||||
local network="$(basename $sys_network)"
|
||||
set_modem_config "${network}" "${sys_network}"
|
||||
done
|
||||
}
|
||||
|
||||
#通过网络扫描模组
|
||||
modem_scan_by_network()
|
||||
{
|
||||
#模组配置初始化
|
||||
sh "${SCRIPT_DIR}/modem_init.sh"
|
||||
|
||||
#发起模组添加事件
|
||||
#USB
|
||||
local sys_network
|
||||
sys_network="$(find /sys/class/net -name usb*)" #ECM RNDIS NCM
|
||||
set_sys_network_config "$sys_network"
|
||||
sys_network="$(find /sys/class/net -name wwan*)" #QMI MBIM
|
||||
set_sys_network_config "$sys_network"
|
||||
sys_network="$(find /sys/class/net -name eth*)" #RNDIS
|
||||
set_sys_network_config "$sys_network"
|
||||
|
||||
#PCI
|
||||
sys_network="$(find /sys/class/net -name mhi_hwip*)" #(通用mhi驱动)
|
||||
set_sys_network_config "$sys_network"
|
||||
sys_network="$(find /sys/class/net -name rmnet_mhi*)" #(制造商mhi驱动)
|
||||
set_sys_network_config "$sys_network"
|
||||
|
||||
echo "modem scan complete"
|
||||
}
|
||||
|
||||
#################################################################################新扫描方法#################################################################################
|
||||
|
||||
#扫描USB设备
|
||||
scan_usb_device()
|
||||
{
|
||||
echo "scan USB device"
|
||||
local devices_path="/sys/bus/usb/devices"
|
||||
|
||||
for device in ${devices_path}/*; do
|
||||
# 跳过非目录文件
|
||||
[[ ! -d "$device" ]] && continue
|
||||
|
||||
local device_name=$(basename "$device")
|
||||
# 跳过USB总线控制器 (以usb开头)
|
||||
[[ "$device_name" == usb* ]] && continue
|
||||
|
||||
# 设置物理设备
|
||||
m_set_physical_device "scan" "${device}"
|
||||
|
||||
# 启用拨号
|
||||
# m_enable_dial "${network}"
|
||||
done
|
||||
}
|
||||
|
||||
#扫描PCI设备
|
||||
scan_pci_device()
|
||||
{
|
||||
echo "scan PCI device"
|
||||
local devices_path="/sys/bus/pci/devices"
|
||||
|
||||
for device in ${devices_path}/*; do
|
||||
# 跳过非目录文件
|
||||
[[ ! -d "$device" ]] && continue
|
||||
|
||||
# 设置物理设备
|
||||
m_set_physical_device "scan" "${device}"
|
||||
|
||||
# 启用拨号
|
||||
# m_enable_dial "${network}"
|
||||
done
|
||||
}
|
||||
|
||||
#扫描模组
|
||||
modem_scan()
|
||||
{
|
||||
# 模组配置初始化
|
||||
sh "${SCRIPT_DIR}/modem_init.sh"
|
||||
|
||||
#USB
|
||||
local usb_scan=$(uci -q get modem.@global[0].usb_scan)
|
||||
[ "${usb_scan}" = "1" ] && scan_usb_device
|
||||
|
||||
#PCI
|
||||
local pci_scan=$(uci -q get modem.@global[0].pci_scan)
|
||||
[ "${pci_scan}" = "1" ] && scan_pci_device
|
||||
|
||||
echo "modem scan complete"
|
||||
}
|
||||
|
||||
#测试时打开
|
||||
# modem_scan
|
||||
# modem_scan_by_network
|
||||
@@ -0,0 +1,283 @@
|
||||
{
|
||||
"modem_support":{
|
||||
"usb":{
|
||||
"rg200u-cn":{
|
||||
"manufacturer_id":"2c7c",
|
||||
"manufacturer":"quectel",
|
||||
"platform":"unisoc",
|
||||
"data_interface":"usb",
|
||||
"define_connect":"1",
|
||||
"modes":["ecm","mbim","rndis","ncm"]
|
||||
},
|
||||
"rm500u-cn":{
|
||||
"manufacturer_id":"2c7c",
|
||||
"manufacturer":"quectel",
|
||||
"platform":"unisoc",
|
||||
"data_interface":"usb",
|
||||
"define_connect":"1",
|
||||
"modes":["ecm","mbim","rndis","ncm"]
|
||||
},
|
||||
"rm500u-ea":{
|
||||
"manufacturer_id":"2c7c",
|
||||
"manufacturer":"quectel",
|
||||
"platform":"unisoc",
|
||||
"data_interface":"usb",
|
||||
"define_connect":"1",
|
||||
"modes":["ecm","mbim","rndis","ncm"]
|
||||
},
|
||||
"rm500u-cnv":{
|
||||
"manufacturer_id":"2c7c",
|
||||
"manufacturer":"quectel",
|
||||
"platform":"unisoc",
|
||||
"data_interface":"usb",
|
||||
"define_connect":"1",
|
||||
"modes":["ecm","mbim","rndis","ncm"]
|
||||
},
|
||||
"rm500q-cn":{
|
||||
"manufacturer_id":"2c7c",
|
||||
"manufacturer":"quectel",
|
||||
"platform":"qualcomm",
|
||||
"data_interface":"usb",
|
||||
"define_connect":"1",
|
||||
"modes":["qmi","gobinet","ecm","mbim","rndis","ncm"]
|
||||
},
|
||||
"rm500q-ae":{
|
||||
"manufacturer_id":"2c7c",
|
||||
"manufacturer":"quectel",
|
||||
"platform":"qualcomm",
|
||||
"data_interface":"usb",
|
||||
"define_connect":"1",
|
||||
"modes":["qmi","gobinet","ecm","mbim","rndis","ncm"]
|
||||
},
|
||||
"rm500q-gl":{
|
||||
"manufacturer_id":"2c7c",
|
||||
"manufacturer":"quectel",
|
||||
"platform":"qualcomm",
|
||||
"data_interface":"usb",
|
||||
"define_connect":"1",
|
||||
"modes":["qmi","gobinet","ecm","mbim","rndis","ncm"],
|
||||
"band_5g":"1,2,3,5,7,8,12,20,25,28,38,40,41,48,66,71,77,78,79,257,258,260,261"
|
||||
},
|
||||
"rm502q-ae":{
|
||||
"manufacturer_id":"2c7c",
|
||||
"manufacturer":"quectel",
|
||||
"platform":"qualcomm",
|
||||
"data_interface":"usb",
|
||||
"define_connect":"1",
|
||||
"modes":["qmi","gobinet","ecm","mbim","rndis","ncm"]
|
||||
},
|
||||
"rm502q-gl":{
|
||||
"manufacturer_id":"2c7c",
|
||||
"manufacturer":"quectel",
|
||||
"platform":"qualcomm",
|
||||
"data_interface":"usb",
|
||||
"define_connect":"1",
|
||||
"modes":["qmi","gobinet","ecm","mbim","rndis","ncm"]
|
||||
},
|
||||
"rm505q-ae":{
|
||||
"manufacturer_id":"2c7c",
|
||||
"manufacturer":"quectel",
|
||||
"platform":"qualcomm",
|
||||
"data_interface":"usb",
|
||||
"define_connect":"1",
|
||||
"modes":["qmi","gobinet","ecm","mbim","rndis","ncm"]
|
||||
},
|
||||
"rm520n-cn":{
|
||||
"manufacturer_id":"2c7c",
|
||||
"manufacturer":"quectel",
|
||||
"platform":"qualcomm",
|
||||
"data_interface":"usb",
|
||||
"define_connect":"1",
|
||||
"modes":["qmi","gobinet","ecm","mbim","rndis","ncm"]
|
||||
},
|
||||
"rm520n-gl":{
|
||||
"manufacturer_id":"2c7c",
|
||||
"manufacturer":"quectel",
|
||||
"platform":"qualcomm",
|
||||
"data_interface":"usb",
|
||||
"define_connect":"1",
|
||||
"modes":["qmi","gobinet","ecm","mbim","rndis","ncm"]
|
||||
},
|
||||
"fm650-cn":{
|
||||
"manufacturer_id":"2cb7",
|
||||
"manufacturer":"fibocom",
|
||||
"platform":"unisoc",
|
||||
"data_interface":"usb",
|
||||
"define_connect":"1",
|
||||
"modes":["ecm","mbim","rndis","ncm"]
|
||||
},
|
||||
"fm350-gl":{
|
||||
"manufacturer_id":"0e8d",
|
||||
"manufacturer":"fibocom",
|
||||
"platform":"mediatek",
|
||||
"data_interface":"usb",
|
||||
"define_connect":"3",
|
||||
"modes":["rndis"]
|
||||
},
|
||||
"fm150-ae":{
|
||||
"manufacturer_id":"2cb7",
|
||||
"manufacturer":"fibocom",
|
||||
"platform":"qualcomm",
|
||||
"data_interface":"usb",
|
||||
"define_connect":"1",
|
||||
"modes":["qmi","gobinet","ecm","mbim","rndis","ncm"]
|
||||
},
|
||||
"fm160-cn":{
|
||||
"manufacturer_id":"2cb7",
|
||||
"manufacturer":"fibocom",
|
||||
"platform":"qualcomm",
|
||||
"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","rndis","ncm"]
|
||||
},
|
||||
"srm825":{
|
||||
"manufacturer_id":"2dee",
|
||||
"manufacturer":"meig",
|
||||
"platform":"qualcomm",
|
||||
"data_interface":"usb",
|
||||
"define_connect":"1",
|
||||
"modes":["qmi","gobinet","ecm","rndis","ncm"]
|
||||
},
|
||||
"srm825n":{
|
||||
"manufacturer_id":"2dee",
|
||||
"manufacturer":"meig",
|
||||
"platform":"qualcomm",
|
||||
"data_interface":"usb",
|
||||
"define_connect":"1",
|
||||
"modes":["qmi","gobinet","ecm","rndis","ncm"]
|
||||
},
|
||||
"mh5000-31":{
|
||||
"manufacturer_id":"12d1",
|
||||
"manufacturer":"huawei",
|
||||
"platform":"hisilicon",
|
||||
"data_interface":"usb",
|
||||
"define_connect":"1",
|
||||
"modes":["ecm","ncm"],
|
||||
"band_2g":"DCS_1800,E-GSM_900,P-GSM_900,GSM_850,R-GSM_900,PCS_1900",
|
||||
"band_3g":"1,2,5,6,8,9,19",
|
||||
"band_4g":"1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,18,19,20,21,25,26,28,33,34,35,36,37,38,39,40,41,42,43",
|
||||
"band_5g":"1,2,3,5,7,8,12,20,25,28,38,40,41,78,79"
|
||||
}
|
||||
},
|
||||
"pci":{
|
||||
"rm500q-cn":{
|
||||
"manufacturer":"quectel",
|
||||
"platform":"qualcomm",
|
||||
"data_interface":"pci",
|
||||
"define_connect":"1",
|
||||
"modes":["qmi","gobinet","mbim"]
|
||||
},
|
||||
"rm500q-gl":{
|
||||
"manufacturer":"quectel",
|
||||
"platform":"qualcomm",
|
||||
"data_interface":"pci",
|
||||
"define_connect":"1",
|
||||
"modes":["qmi","gobinet","mbim"]
|
||||
},
|
||||
"rg500q-ea":{
|
||||
"manufacturer":"quectel",
|
||||
"platform":"qualcomm",
|
||||
"data_interface":"pci",
|
||||
"define_connect":"1",
|
||||
"modes":["qmi","gobinet","mbim"]
|
||||
},
|
||||
"rm502q-gl":{
|
||||
"manufacturer":"quectel",
|
||||
"platform":"qualcomm",
|
||||
"data_interface":"pci",
|
||||
"define_connect":"1",
|
||||
"modes":["qmi","gobinet","mbim"]
|
||||
},
|
||||
"rm520n-gl":{
|
||||
"manufacturer":"quectel",
|
||||
"platform":"qualcomm",
|
||||
"data_interface":"pci",
|
||||
"define_connect":"1",
|
||||
"modes":["qmi","gobinet","mbim"]
|
||||
},
|
||||
"rg520n-eu":{
|
||||
"manufacturer":"quectel",
|
||||
"platform":"qualcomm",
|
||||
"data_interface":"pci",
|
||||
"define_connect":"1",
|
||||
"modes":["qmi","gobinet","mbim"]
|
||||
},
|
||||
"fm350-gl":{
|
||||
"manufacturer":"fibocom",
|
||||
"platform":"mediatek",
|
||||
"data_interface":"pci",
|
||||
"define_connect":"1",
|
||||
"modes":["mbim"]
|
||||
},
|
||||
"fm150-ae":{
|
||||
"manufacturer":"fibocom",
|
||||
"platform":"qualcomm",
|
||||
"data_interface":"pci",
|
||||
"define_connect":"1",
|
||||
"modes":["qmi","mbim"]
|
||||
}
|
||||
},
|
||||
"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","600b"]
|
||||
},
|
||||
"mediatek":{
|
||||
"vendor_id":["2c7c"],
|
||||
"product_id":["0700","7001","7003"]
|
||||
}
|
||||
},
|
||||
"fibocom":{
|
||||
"unisoc":{
|
||||
"vendor_id":["2cb7","3763","3c93"],
|
||||
"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"],
|
||||
"product_id":["4d20"]
|
||||
},
|
||||
"asrmicro":{
|
||||
"vendor_id":["2dee"],
|
||||
"product_id":["4d57","4d58","4d59"]
|
||||
}
|
||||
},
|
||||
"huawei":{
|
||||
"hisilicon":{
|
||||
"vendor_id":["12d1"],
|
||||
"product_id":["15c3"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2023 Siriling <siriling@qq.com>
|
||||
|
||||
#脚本目录
|
||||
SCRIPT_DIR="/usr/share/modem"
|
||||
source "${SCRIPT_DIR}/modem_debug.sh"
|
||||
source "${SCRIPT_DIR}/modem_scan.sh"
|
||||
|
||||
#模组扫描任务
|
||||
modem_scan_task()
|
||||
{
|
||||
sleep 8s #刚开机需要等待移动网络出来
|
||||
while true; do
|
||||
enable_dial=$(uci -q get modem.@global[0].enable_dial)
|
||||
if [ "$enable_dial" = "1" ]; then
|
||||
#扫描模块
|
||||
debug "开启模块扫描任务"
|
||||
modem_scan
|
||||
debug "结束模块扫描任务"
|
||||
fi
|
||||
sleep 10s
|
||||
done
|
||||
}
|
||||
|
||||
modem_scan_task
|
||||
+1151
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,96 @@
|
||||
{
|
||||
"network_prefer":{
|
||||
"2G":{
|
||||
"enable":1,
|
||||
"band":[
|
||||
{"DCS 1800":1},
|
||||
{"E-GSM 900":1},
|
||||
{"P-GSM 900":1},
|
||||
{"GSM 450":1},
|
||||
{"GSM 480":1},
|
||||
{"GSM 750":1},
|
||||
{"GSM 850":1},
|
||||
{"R-GSM 900":1},
|
||||
{"PCS 1900":1}
|
||||
]
|
||||
},
|
||||
"3G":{
|
||||
"enable":1,
|
||||
"band":[
|
||||
{"B1":1,"full_name":"WCDMA IMT EUROPE JAPAN & CHINA 2100"},
|
||||
{"B2":1,"full_name":"WCDMA US PCS 1900"},
|
||||
{"B3":1,"full_name":"WCDMA Europe and China DCS 1800"},
|
||||
{"B4":1,"full_name":"WCDMA US 1700"},
|
||||
{"B5":1,"full_name":"WCDMA US 850"},
|
||||
{"B6":1,"full_name":"WCDMA Japan 800"},
|
||||
{"B7":1,"full_name":"WCDMA Europe 2600"},
|
||||
{"B8":1,"full_name":"WCDMA Europe and Japan 900"},
|
||||
{"B9":1,"full_name":"WCDMA Japan 1700"},
|
||||
{"B11":1,"full_name":"WCDMA 1500"},
|
||||
{"B19":1,"full_name":"WCDMA Japan 850"}
|
||||
]
|
||||
},
|
||||
"4G":{
|
||||
"enable":1,
|
||||
"band":[
|
||||
{"B1":1},
|
||||
{"B2":1},
|
||||
{"B3":1},
|
||||
{"B4":1},
|
||||
{"B5":1},
|
||||
{"B6":1},
|
||||
{"B7":1},
|
||||
{"B8":1},
|
||||
{"B9":1},
|
||||
{"B10":1},
|
||||
{"B11":1},
|
||||
{"B12":1},
|
||||
{"B13":1},
|
||||
{"B14":1},
|
||||
{"B17":1},
|
||||
{"B18":1},
|
||||
{"B19":1},
|
||||
{"B20":1},
|
||||
{"B21":1},
|
||||
{"B25":1},
|
||||
{"B26":1},
|
||||
{"B28":1},
|
||||
{"B29":1},
|
||||
{"B30":1},
|
||||
{"B32":1},
|
||||
{"B34":1},
|
||||
{"B38":1},
|
||||
{"B39":1},
|
||||
{"B40":1},
|
||||
{"B41":1},
|
||||
{"B42":1},
|
||||
{"B66":1},
|
||||
{"B71":1}
|
||||
]
|
||||
},
|
||||
"5G":{
|
||||
"enable":1,
|
||||
"band":[
|
||||
{"N1":1},
|
||||
{"N2":1},
|
||||
{"N3":1},
|
||||
{"N5":1},
|
||||
{"N7":1},
|
||||
{"N8":1},
|
||||
{"N12":1},
|
||||
{"N20":1},
|
||||
{"N25":1},
|
||||
{"N28":1},
|
||||
{"N38":1},
|
||||
{"N40":1},
|
||||
{"N41":1},
|
||||
{"N48":1},
|
||||
{"N66":1},
|
||||
{"N71":1},
|
||||
{"N77":1},
|
||||
{"N78":1},
|
||||
{"N79":1}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
+1223
File diff suppressed because it is too large.
Load diff
+303
@@ -0,0 +1,303 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2023 Siriling <siriling@qq.com>
|
||||
|
||||
#脚本目录
|
||||
SCRIPT_DIR="/usr/share/modem"
|
||||
|
||||
#查询信息强度
|
||||
All_CSQ()
|
||||
{
|
||||
debug "All_CSQ"
|
||||
#信号
|
||||
OX=$( sh modem_at.sh $at_port "AT+CSQ" |grep "+CSQ:")
|
||||
OX=$(echo $OX | tr 'a-z' 'A-Z')
|
||||
CSQ=$(echo "$OX" | grep -o "+CSQ: [0-9]\{1,2\}" | grep -o "[0-9]\{1,2\}")
|
||||
if [ $CSQ = "99" ]; then
|
||||
CSQ=""
|
||||
fi
|
||||
if [ -n "$CSQ" ]; then
|
||||
CSQ_PER=$(($CSQ * 100/31))"%"
|
||||
CSQ_RSSI=$((2 * CSQ - 113))" dBm"
|
||||
else
|
||||
CSQ="-"
|
||||
CSQ_PER="-"
|
||||
CSQ_RSSI="-"
|
||||
fi
|
||||
}
|
||||
|
||||
# SIMCOM获取基站信息
|
||||
SIMCOM_Cellinfo()
|
||||
{
|
||||
#baseinfo.gcom
|
||||
OX=$( sh modem_at.sh 2 "ATI")
|
||||
OX=$( sh modem_at.sh 2 "AT+CGEQNEG=1")
|
||||
|
||||
#cellinfo0.gcom
|
||||
OX1=$( sh modem_at.sh 2 "AT+COPS=3,0;+COPS?")
|
||||
OX2=$( sh modem_at.sh 2 "AT+COPS=3,2;+COPS?")
|
||||
OX=$OX1" "$OX2
|
||||
|
||||
#cellinfo.gcom
|
||||
OY1=$( sh modem_at.sh 2 "AT+CREG=2;+CREG?;+CREG=0")
|
||||
OY2=$( sh modem_at.sh 2 "AT+CEREG=2;+CEREG?;+CEREG=0")
|
||||
OY3=$( sh modem_at.sh 2 "AT+C5GREG=2;+C5GREG?;+C5GREG=0")
|
||||
OY=$OY1" "$OY2" "$OY3
|
||||
|
||||
|
||||
OXx=$OX
|
||||
OX=$(echo $OX | tr 'a-z' 'A-Z')
|
||||
OY=$(echo $OY | tr 'a-z' 'A-Z')
|
||||
OX=$OX" "$OY
|
||||
|
||||
#debug "$OX"
|
||||
#debug "$OY"
|
||||
|
||||
COPS="-"
|
||||
COPS_MCC="-"
|
||||
COPS_MNC="-"
|
||||
COPSX=$(echo $OXx | grep -o "+COPS: [01],0,.\+," | cut -d, -f3 | grep -o "[^\"]\+")
|
||||
|
||||
if [ "x$COPSX" != "x" ]; then
|
||||
COPS=$COPSX
|
||||
fi
|
||||
|
||||
COPSX=$(echo $OX | grep -o "+COPS: [01],2,.\+," | cut -d, -f3 | grep -o "[^\"]\+")
|
||||
|
||||
if [ "x$COPSX" != "x" ]; then
|
||||
COPS_MCC=${COPSX:0:3}
|
||||
COPS_MNC=${COPSX:3:3}
|
||||
if [ "$COPS" = "-" ]; then
|
||||
COPS=$(awk -F[\;] '/'$COPS'/ {print $2}' $ROOTER/signal/mccmnc.data)
|
||||
[ "x$COPS" = "x" ] && COPS="-"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$COPS" = "-" ]; then
|
||||
COPS=$(echo "$O" | awk -F[\"] '/^\+COPS: 0,0/ {print $2}')
|
||||
if [ "x$COPS" = "x" ]; then
|
||||
COPS="-"
|
||||
COPS_MCC="-"
|
||||
COPS_MNC="-"
|
||||
fi
|
||||
fi
|
||||
COPS_MNC=" "$COPS_MNC
|
||||
|
||||
OX=$(echo "${OX//[ \"]/}")
|
||||
CID=""
|
||||
CID5=""
|
||||
RAT=""
|
||||
REGV=$(echo "$OX" | grep -o "+C5GREG:2,[0-9],[A-F0-9]\{2,6\},[A-F0-9]\{5,10\},[0-9]\{1,2\}")
|
||||
if [ -n "$REGV" ]; then
|
||||
LAC5=$(echo "$REGV" | cut -d, -f3)
|
||||
LAC5=$LAC5" ($(printf "%d" 0x$LAC5))"
|
||||
CID5=$(echo "$REGV" | cut -d, -f4)
|
||||
CID5L=$(printf "%010X" 0x$CID5)
|
||||
RNC5=${CID5L:1:6}
|
||||
RNC5=$RNC5" ($(printf "%d" 0x$RNC5))"
|
||||
CID5=${CID5L:7:3}
|
||||
CID5="Short $(printf "%X" 0x$CID5) ($(printf "%d" 0x$CID5)), Long $(printf "%X" 0x$CID5L) ($(printf "%d" 0x$CID5L))"
|
||||
RAT=$(echo "$REGV" | cut -d, -f5)
|
||||
fi
|
||||
REGV=$(echo "$OX" | grep -o "+CEREG:2,[0-9],[A-F0-9]\{2,4\},[A-F0-9]\{5,8\}")
|
||||
REGFMT="3GPP"
|
||||
if [ -z "$REGV" ]; then
|
||||
REGV=$(echo "$OX" | grep -o "+CEREG:2,[0-9],[A-F0-9]\{2,4\},[A-F0-9]\{1,3\},[A-F0-9]\{5,8\}")
|
||||
REGFMT="SW"
|
||||
fi
|
||||
if [ -n "$REGV" ]; then
|
||||
LAC=$(echo "$REGV" | cut -d, -f3)
|
||||
LAC=$(printf "%04X" 0x$LAC)" ($(printf "%d" 0x$LAC))"
|
||||
if [ $REGFMT = "3GPP" ]; then
|
||||
CID=$(echo "$REGV" | cut -d, -f4)
|
||||
else
|
||||
CID=$(echo "$REGV" | cut -d, -f5)
|
||||
fi
|
||||
CIDL=$(printf "%08X" 0x$CID)
|
||||
RNC=${CIDL:1:5}
|
||||
RNC=$RNC" ($(printf "%d" 0x$RNC))"
|
||||
CID=${CIDL:6:2}
|
||||
CID="Short $(printf "%X" 0x$CID) ($(printf "%d" 0x$CID)), Long $(printf "%X" 0x$CIDL) ($(printf "%d" 0x$CIDL))"
|
||||
|
||||
else
|
||||
REGV=$(echo "$OX" | grep -o "+CREG:2,[0-9],[A-F0-9]\{2,4\},[A-F0-9]\{2,8\}")
|
||||
if [ -n "$REGV" ]; then
|
||||
LAC=$(echo "$REGV" | cut -d, -f3)
|
||||
CID=$(echo "$REGV" | cut -d, -f4)
|
||||
if [ ${#CID} -gt 4 ]; then
|
||||
LAC=$(printf "%04X" 0x$LAC)" ($(printf "%d" 0x$LAC))"
|
||||
CIDL=$(printf "%08X" 0x$CID)
|
||||
RNC=${CIDL:1:3}
|
||||
CID=${CIDL:4:4}
|
||||
CID="Short $(printf "%X" 0x$CID) ($(printf "%d" 0x$CID)), Long $(printf "%X" 0x$CIDL) ($(printf "%d" 0x$CIDL))"
|
||||
else
|
||||
LAC=""
|
||||
fi
|
||||
else
|
||||
LAC=""
|
||||
fi
|
||||
fi
|
||||
REGSTAT=$(echo "$REGV" | cut -d, -f2)
|
||||
if [ "$REGSTAT" == "5" -a "$COPS" != "-" ]; then
|
||||
COPS_MNC=$COPS_MNC" (Roaming)"
|
||||
fi
|
||||
if [ -n "$CID" -a -n "$CID5" ] && [ "$RAT" == "13" -o "$RAT" == "10" ]; then
|
||||
LAC="4G $LAC, 5G $LAC5"
|
||||
CID="4G $CID<br />5G $CID5"
|
||||
RNC="4G $RNC, 5G $RNC5"
|
||||
elif [ -n "$CID5" ]; then
|
||||
LAC=$LAC5
|
||||
CID=$CID5
|
||||
RNC=$RNC5
|
||||
fi
|
||||
if [ -z "$LAC" ]; then
|
||||
LAC="-"
|
||||
CID="-"
|
||||
RNC="-"
|
||||
fi
|
||||
}
|
||||
SIMCOM_SIMINFO()
|
||||
{
|
||||
debug "Quectel_SIMINFO"
|
||||
# 获取IMEI
|
||||
IMEI=$( sh modem_at.sh $at_port "AT+CGSN" | sed -n '2p' )
|
||||
# 获取IMSI
|
||||
IMSI=$( sh modem_at.sh $at_port "AT+CIMI" | sed -n '2p' )
|
||||
# 获取ICCID
|
||||
ICCID=$( sh modem_at.sh $at_port "AT+ICCID" | grep -o "+ICCID:[ ]*[-0-9]\+" | grep -o "[-0-9]\{1,4\}" )
|
||||
# 获取电话号码
|
||||
phone=$( sh modem_at.sh $at_port "AT+CNUM" | grep "+CNUM:" )
|
||||
}
|
||||
#simcom查找基站AT
|
||||
get_simcom_data()
|
||||
{
|
||||
debug "get simcom data"
|
||||
#设置AT串口
|
||||
at_port=$1
|
||||
|
||||
All_CSQ
|
||||
SIMCOM_SIMINFO
|
||||
SIMCOM_Cellinfo
|
||||
|
||||
#温度
|
||||
OX=$( sh modem_at.sh $at_port "AT+CPMUTEMP")
|
||||
TEMP=$(echo "$OX" | grep -o "+CPMUTEMP:[ ]*[-0-9]\+" | grep -o "[-0-9]\{1,4\}")
|
||||
if [ -n "$TEMP" ]; then
|
||||
TEMP=$(echo $TEMP)$(printf "\xc2\xb0")"C"
|
||||
fi
|
||||
|
||||
|
||||
#基站信息
|
||||
OX=$( sh modem_at.sh $at_port "AT+CPSI?")
|
||||
rec=$(echo "$OX" | grep "+CPSI:")
|
||||
w=$(echo $rec |grep "NO SERVICE"| wc -l)
|
||||
if [ $w -ge 1 ];then
|
||||
debug "NO SERVICE"
|
||||
return
|
||||
fi
|
||||
w=$(echo $rec |grep "NR5G_"| wc -l)
|
||||
if [ $w -ge 1 ];then
|
||||
|
||||
w=$(echo $rec |grep "32768"| wc -l)
|
||||
if [ $w -ge 1 ];then
|
||||
debug "-32768"
|
||||
return
|
||||
fi
|
||||
|
||||
debug "$rec"
|
||||
rec1=${rec##*+CPSI:}
|
||||
#echo "$rec1"
|
||||
MODE="${rec1%%,*}" # MODE="NR5G"
|
||||
rect1=${rec1#*,}
|
||||
rect1s="${rect1%%,*}" #Online
|
||||
rect2=${rect1#*,}
|
||||
rect2s="${rect2%%,*}" #460-11
|
||||
rect3=${rect2#*,}
|
||||
rect3s="${rect3%%,*}" #0xCFA102
|
||||
rect4=${rect3#*,}
|
||||
rect4s="${rect4%%,*}" #55744245764
|
||||
rect5=${rect4#*,}
|
||||
rect5s="${rect5%%,*}" #196
|
||||
rect6=${rect5#*,}
|
||||
rect6s="${rect6%%,*}" #NR5G_BAND78
|
||||
rect7=${rect6#*,}
|
||||
rect7s="${rect7%%,*}" #627264
|
||||
rect8=${rect7#*,}
|
||||
rect8s="${rect8%%,*}" #-940
|
||||
rect9=${rect8#*,}
|
||||
rect9s="${rect9%%,*}" #-110
|
||||
# "${rec1##*,}" #最后一位
|
||||
rect10=${rect9#*,}
|
||||
rect10s="${rect10%%,*}" #最后一位
|
||||
PCI=$rect5s
|
||||
LBAND="n"$(echo $rect6s | cut -d, -f0 | grep -o "BAND[0-9]\{1,3\}" | grep -o "[0-9]\+")
|
||||
CHANNEL=$rect7s
|
||||
RSCP=$(($(echo $rect8s | cut -d, -f0) / 10))
|
||||
ECIO=$(($(echo $rect9s | cut -d, -f0) / 10))
|
||||
if [ "$CSQ_PER" = "-" ]; then
|
||||
CSQ_PER=$((100 - (($RSCP + 31) * 100/-125)))"%"
|
||||
fi
|
||||
SINR=$(($(echo $rect10s | cut -d, -f0) / 10))" dB"
|
||||
fi
|
||||
w=$(echo $rec |grep "LTE"|grep "EUTRAN"| wc -l)
|
||||
if [ $w -ge 1 ];then
|
||||
rec1=${rec#*EUTRAN-}
|
||||
lte_band=${rec1%%,*} #EUTRAN-BAND
|
||||
rec1=${rec1#*,}
|
||||
rec1=${rec1#*,}
|
||||
rec1=${rec1#*,}
|
||||
rec1=${rec1#*,}
|
||||
#rec1=${rec1#*,}
|
||||
rec1=${rec1#*,}
|
||||
lte_rssi=${rec1%%,*} #LTE_RSSI
|
||||
lte_rssi=`expr $lte_rssi / 10` #LTE_RSSI
|
||||
debug "LTE_BAND=$lte_band LTE_RSSI=$lte_rssi"
|
||||
if [ $rssi == 0 ];then
|
||||
rssi=$lte_rssi
|
||||
fi
|
||||
fi
|
||||
w=$(echo $rec |grep "WCDMA"| wc -l)
|
||||
if [ $w -ge 1 ];then
|
||||
w=$(echo $rec |grep "UNKNOWN"|wc -l)
|
||||
if [ $w -ge 1 ];then
|
||||
debug "UNKNOWN BAND"
|
||||
return
|
||||
fi
|
||||
fi
|
||||
|
||||
#CNMP
|
||||
OX=$( sh modem_at.sh $at_port "AT+CNMP?")
|
||||
CNMP=$(echo "$OX" | grep -o "+CNMP:[ ]*[0-9]\{1,3\}" | grep -o "[0-9]\{1,3\}")
|
||||
if [ -n "$CNMP" ]; then
|
||||
case $CNMP in
|
||||
"2"|"55" )
|
||||
NETMODE="1" ;;
|
||||
"13" )
|
||||
NETMODE="3" ;;
|
||||
"14" )
|
||||
NETMODE="5" ;;
|
||||
"38" )
|
||||
NETMODE="7" ;;
|
||||
"71" )
|
||||
NETMODE="9" ;;
|
||||
"109" )
|
||||
NETMODE="8" ;;
|
||||
* )
|
||||
NETMODE="0" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# CMGRMI 信息
|
||||
OX=$( sh modem_at.sh $at_port "AT+CMGRMI=4")
|
||||
CAINFO=$(echo "$OX" | grep -o "$REGXz" | tr ' ' ':')
|
||||
if [ -n "$CAINFO" ]; then
|
||||
for CASV in $(echo "$CAINFO"); do
|
||||
LBAND=$LBAND"<br />B"$(echo "$CASV" | cut -d, -f4)
|
||||
BW=$(echo "$CASV" | cut -d, -f5)
|
||||
decode_bw
|
||||
LBAND=$LBAND" (CA, Bandwidth $BW MHz)"
|
||||
CHANNEL="$CHANNEL, "$(echo "$CASV" | cut -d, -f2)
|
||||
PCI="$PCI, "$(echo "$CASV" | cut -d, -f7)
|
||||
done
|
||||
fi
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"vendor_support":{
|
||||
"2c7c":"quectel",
|
||||
"2cb7":"fibocom",
|
||||
"3763":"fibocom",
|
||||
"3c93":"fibocom",
|
||||
"0e8d":"fibocom",
|
||||
"2dee":"meig",
|
||||
"05c6":"meig",
|
||||
"4d20":"meig",
|
||||
"12d1":"huawei",
|
||||
"17cb":"qualcomm"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"luci-app-modem": {
|
||||
"description": "Grant UCI access for luci-app-modem",
|
||||
"read": {
|
||||
"uci": [ "modem" ]
|
||||
},
|
||||
"write": {
|
||||
"uci": [ "modem" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user