测试
This commit is contained in:
parent
2076c5f6c3
commit
c6c05ce05f
@ -6,16 +6,28 @@ include $(TOPDIR)/rules.mk
|
||||
PKG_NAME:=luci-app-modem
|
||||
LUCI_TITLE:=LuCI support for Modem
|
||||
LUCI_PKGARCH:=all
|
||||
PKG_VERSION:=1.4.4
|
||||
PKG_VERSION:=1.4.5
|
||||
PKG_LICENSE:=GPLv3
|
||||
PKG_LINCESE_FILES:=LICENSE
|
||||
PKF_MAINTAINER:=Siriling <siriling@qq.com>
|
||||
LUCI_DEPENDS:=+luci-compat \
|
||||
+kmod-usb2 +kmod-usb3 \
|
||||
+kmod-usb-net-sierrawireless +kmod-usb-ohci \
|
||||
+kmod-usb-serial-option +kmod-usb-serial +kmod-usb-serial-qualcomm \
|
||||
+kmod-usb-net +kmod-usb-acm \
|
||||
+kmod-usb-wdm +kmod-usb-net-qmi-wwan \
|
||||
+kmod-usb-net-cdc-ether \
|
||||
+kmod-usb-net-cdc-mbim \
|
||||
+kmod-usb-net-rndis \
|
||||
+kmod-usb-net-cdc-ncm +kmod-usb-net-huawei-cdc-ncm \
|
||||
+usbutils \
|
||||
+kmod-pcie_mhi \
|
||||
+pciutils \
|
||||
+quectel-CM-5G \
|
||||
+modemmanager \
|
||||
+luci-proto-modemmanager \
|
||||
+sms-tool \
|
||||
+jq
|
||||
+bc +jq
|
||||
|
||||
define Package/luci-app-modem/conffiles
|
||||
/etc/config/modem
|
||||
|
@ -27,6 +27,7 @@
|
||||
| 厂家名称 | 模组名称 | 平台 | 数据传输模式 | 端口模式 |
|
||||
| -------- | -------------------------------------------------- | -------- | ------------ | ---------------------------- |
|
||||
| 华为 | MH5000-31 | 华为 | USB | ECM,NCM |
|
||||
| 鼎桥 | MT5700M-CN | 华为 | USB | ECM,NCM |
|
||||
| 移远通信 | RG200U-CN(DONGLE版) | 紫光展锐 | USB | ECM,MBIM,RNDIS,NCM |
|
||||
| 移远通信 | RM500U-CN | 紫光展锐 | USB | ECM,MBIM,RNDIS,NCM |
|
||||
| 移远通信 | RM500U-EA | 紫光展锐 | USB | ECM,MBIM,RNDIS,NCM |
|
||||
|
@ -683,8 +683,18 @@
|
||||
}
|
||||
}
|
||||
|
||||
//设置频段偏好显示
|
||||
document.getElementById("cbi-"+network_type+"_band_info").style.display=band_info_display;
|
||||
//设置频段偏好显示(beta功能)
|
||||
band_info_display="none"; //不显示频段偏好
|
||||
|
||||
//获取当前启用的tab元素
|
||||
var tab_menu = document.getElementById("tab_menu");
|
||||
var tab_enable_element=get_tab_enable_element(tab_menu);
|
||||
//获取当前选中的tab元素
|
||||
var data_tab=tab_enable_element.getAttribute("data-tab").replace("_tab","");
|
||||
if (data_tab=="network_prefer")
|
||||
{
|
||||
document.getElementById("cbi-"+network_type+"_band_info").style.display=band_info_display;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -918,6 +928,8 @@
|
||||
var checkboxes=document.getElementById('prefer_custom_config').querySelectorAll('input[type="checkbox"]');
|
||||
for(checkbox of checkboxes)
|
||||
{
|
||||
//获取网络类型
|
||||
var network_type=checkbox.value;
|
||||
//获取网络类型配置
|
||||
var network_prefer={};
|
||||
network_prefer["enable"]=Number(checkbox.checked);
|
||||
@ -926,7 +938,6 @@
|
||||
network_prefer["band"]=[];
|
||||
if (checkbox.checked)
|
||||
{
|
||||
var network_type=checkbox.value;
|
||||
var band_check_element=document.getElementById(network_type+"_band_check");
|
||||
var bands=band_check_element.querySelectorAll('input[type="checkbox"]');
|
||||
for(band of bands)
|
||||
@ -1013,6 +1024,17 @@
|
||||
// );
|
||||
// }
|
||||
|
||||
// 显示判断偏好
|
||||
function display_band_prefer(status)
|
||||
{
|
||||
//不显示频段偏好
|
||||
for (let i = 2; i <=5; i++)
|
||||
{
|
||||
network_type=i+"g";
|
||||
document.getElementById("cbi-"+network_type+"_band_info").style.display=status;
|
||||
}
|
||||
}
|
||||
|
||||
// 获取模组调试信息
|
||||
function get_modem_debug_info()
|
||||
{
|
||||
@ -1026,7 +1048,11 @@
|
||||
//获取当前选中的tab元素
|
||||
var data_tab=tab_enable_element.getAttribute("data-tab").replace("_tab","");
|
||||
|
||||
if (data_tab=="mode") {
|
||||
if (data_tab=="mode")
|
||||
{
|
||||
//不显示频段偏好
|
||||
display_band_prefer("none");
|
||||
|
||||
//获取拨号模式信息
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "network", "modem", "get_mode_info")%>', {"port":at_port},
|
||||
function(x, data)
|
||||
@ -1042,7 +1068,8 @@
|
||||
}
|
||||
);
|
||||
}
|
||||
else if (data_tab=="network_prefer") {
|
||||
else if (data_tab=="network_prefer")
|
||||
{
|
||||
//获取网络偏好信息
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "network", "modem", "get_network_prefer_info")%>', {"port":at_port},
|
||||
function(x, data)
|
||||
@ -1058,7 +1085,11 @@
|
||||
}
|
||||
);
|
||||
}
|
||||
else if (data_tab=="self_test") {
|
||||
else if (data_tab=="self_test")
|
||||
{
|
||||
//不显示频段偏好
|
||||
display_band_prefer("none");
|
||||
|
||||
//获取自检信息
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "network", "modem", "get_self_test_info")%>', {"port":at_port},
|
||||
function(x, data)
|
||||
@ -1074,6 +1105,11 @@
|
||||
}
|
||||
);
|
||||
}
|
||||
else if (data_tab=="at_command")
|
||||
{
|
||||
//不显示频段偏好
|
||||
display_band_prefer("none");
|
||||
}
|
||||
}
|
||||
|
||||
// 定时触发更新AT串口
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: luci-app-modem 1.4.1-1\n"
|
||||
"Project-Id-Version: luci-app-modem 1.4.5-1\n"
|
||||
"POT-Creation-Date: 2024-04-20 12:07+0100\n"
|
||||
"PO-Revision-Date: 2024-04-24 18:08+0000\n"
|
||||
"Last-Translator: Siriling <siriling@gmail.com>\n"
|
||||
@ -103,6 +103,24 @@ msgstr "选择一个模组进行调试"
|
||||
msgid "Network Preferences"
|
||||
msgstr "网络偏好"
|
||||
|
||||
msgid "Apply Network Prefer"
|
||||
msgstr "应用网络偏好"
|
||||
|
||||
msgid "Apply Band Prefer"
|
||||
msgstr "应用频段偏好"
|
||||
|
||||
msgid "2G Band Preferences"
|
||||
msgstr "2G 频段偏好"
|
||||
|
||||
msgid "3G Band Preferences"
|
||||
msgstr "3G 频段偏好"
|
||||
|
||||
msgid "4G Band Preferences"
|
||||
msgstr "4G 频段偏好"
|
||||
|
||||
msgid "5G Band Preferences"
|
||||
msgstr "5G 频段偏好"
|
||||
|
||||
msgid "Self Test"
|
||||
msgstr "自检"
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: luci-app-modem 1.4.1-1\n"
|
||||
"Project-Id-Version: luci-app-modem 1.4.5-1\n"
|
||||
"POT-Creation-Date: 2024-04-20 12:07+0100\n"
|
||||
"PO-Revision-Date: 2024-04-24 18:08+0000\n"
|
||||
"Last-Translator: Siriling <siriling@gmail.com>\n"
|
||||
@ -103,6 +103,18 @@ msgstr "选择一个模组进行调试"
|
||||
msgid "Network Preferences"
|
||||
msgstr "网络偏好"
|
||||
|
||||
msgid "2G Band Preferences"
|
||||
msgstr "2G 频段偏好"
|
||||
|
||||
msgid "3G Band Preferences"
|
||||
msgstr "3G 频段偏好"
|
||||
|
||||
msgid "4G Band Preferences"
|
||||
msgstr "4G 频段偏好"
|
||||
|
||||
msgid "5G Band Preferences"
|
||||
msgstr "5G 频段偏好"
|
||||
|
||||
msgid "Self Test"
|
||||
msgstr "自检"
|
||||
|
||||
|
@ -387,6 +387,66 @@ config custom-commands
|
||||
option description '获取模组温度 > AT^CHIPTEMP?'
|
||||
option command 'AT^CHIPTEMP?'
|
||||
|
||||
config custom-commands
|
||||
option description '重启模组 > AT^RESET'
|
||||
option command 'AT^RESET'
|
||||
|
||||
config custom-commands
|
||||
option description '****************鼎桥****************'
|
||||
option command 'ATI'
|
||||
|
||||
config custom-commands
|
||||
option description '获取SIM卡卡槽状态 > AT^HVSST?'
|
||||
option command 'AT^HVSST?'
|
||||
|
||||
config custom-commands
|
||||
option description '设置当前使用的为卡1 > AT^SCICHG=0,1'
|
||||
option command 'AT^SCICHG=0,1'
|
||||
|
||||
config custom-commands
|
||||
option description '设置当前使用的为卡2 > AT^SCICHG=1,0'
|
||||
option command 'AT^SCICHG=1,0'
|
||||
|
||||
config custom-commands
|
||||
option description '查询网络信息 > AT^SYSINFOEX'
|
||||
option command 'AT^SYSINFOEX'
|
||||
|
||||
config custom-commands
|
||||
option description '查询当前拨号模式 > AT^SETMODE?'
|
||||
option command 'AT^SETMODE?'
|
||||
|
||||
config custom-commands
|
||||
option description 'ECM拨号模式(Linux) > AT^SETMODE=0'
|
||||
option command 'AT^SETMODE=0'
|
||||
|
||||
config custom-commands
|
||||
option description 'NCM拨号模式(Windows) > AT^SETMODE=1'
|
||||
option command 'AT^SETMODE=1'
|
||||
|
||||
config custom-commands
|
||||
option description 'ECM拨号模式(Linux,Debug) > AT^SETMODE=2'
|
||||
option command 'AT^SETMODE=2'
|
||||
|
||||
config custom-commands
|
||||
option description 'NCM拨号模式(Windows,Debug) > AT^SETMODE=3'
|
||||
option command 'AT^SETMODE=3'
|
||||
|
||||
config custom-commands
|
||||
option description '锁4G > AT^SYSCFGEX="03",40000000,1,2,7FFFFFFFFFFFFFFF,,'
|
||||
option command 'AT^SYSCFGEX="03",40000000,1,2,7FFFFFFFFFFFFFFF,,'
|
||||
|
||||
config custom-commands
|
||||
option description '锁5G > AT^SYSCFGEX="08",40000000,1,2,7FFFFFFFFFFFFFFF,,'
|
||||
option command 'AT^SYSCFGEX="08",40000000,1,2,7FFFFFFFFFFFFFFF,,'
|
||||
|
||||
config custom-commands
|
||||
option description '恢复自动搜索网络 > AT^SYSCFGEX="080302",3FFFFFFF,1,2,7FFFFFFFFFFFFFFF,,'
|
||||
option command 'AT^SYSCFGEX="080302",3FFFFFFF,1,2,7FFFFFFFFFFFFFFF,,'
|
||||
|
||||
config custom-commands
|
||||
option description '获取模组温度 > AT^CHIPTEMP?'
|
||||
option command 'AT^CHIPTEMP?'
|
||||
|
||||
config custom-commands
|
||||
option description '重启模组 > AT^RESET'
|
||||
option command 'AT^RESET'
|
@ -447,6 +447,8 @@ stop_ecm()
|
||||
at_command="AT^NDISDUP=${define_connect},0"
|
||||
elif [ "$manufacturer" = "huawei" ]; then
|
||||
at_command="AT^NDISDUP=${define_connect},0"
|
||||
elif [ "$manufacturer" = "tdtech" ]; then
|
||||
at_command="AT^NDISDUP=${define_connect},0"
|
||||
else
|
||||
at_command='ATI'
|
||||
fi
|
||||
|
@ -162,6 +162,7 @@
|
||||
},
|
||||
"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"},
|
||||
@ -176,6 +177,24 @@
|
||||
{"获取模组温度 > AT^CHIPTEMP?":"AT^CHIPTEMP?"},
|
||||
{"重启模组 > AT^RESET":"AT^RESET"}
|
||||
]
|
||||
},
|
||||
"tdtech":{
|
||||
"hisilicon":[
|
||||
{"获取SIM卡卡槽状态 > AT^HVSST?":"AT^HVSST?"},
|
||||
{"设置当前使用的为卡1 > AT^SCICHG=0,1":"AT^SCICHG=0,1"},
|
||||
{"设置当前使用的为卡2 > AT^SCICHG=1,0":"AT^SCICHG=1,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=\"080302\",3FFFFFFF,1,2,7FFFFFFFFFFFFFFF,,":"AT^SYSCFGEX=\"080302\",3FFFFFFF,1,2,7FFFFFFFFFFFFFFF,,"},
|
||||
{"获取模组温度 > AT^CHIPTEMP?":"AT^CHIPTEMP?"},
|
||||
{"重启模组 > AT^RESET":"AT^RESET"}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -122,8 +122,10 @@ huawei_get_mode()
|
||||
"hisilicon")
|
||||
case "$mode_num" in
|
||||
"0"|"2") mode="ecm" ;;
|
||||
"1"|"3") mode="ncm" ;;
|
||||
"4") mode="unknown" ;;
|
||||
"1"|"3"|"4"|"5") mode="ncm" ;;
|
||||
"6") mode="rndis" ;;
|
||||
"7") mode="mbim" ;;
|
||||
"8") mode="ppp" ;;
|
||||
*) mode="$mode_num" ;;
|
||||
esac
|
||||
;;
|
||||
@ -159,6 +161,7 @@ huawei_set_mode()
|
||||
"hisilicon")
|
||||
case "$mode_config" in
|
||||
"ecm") mode_num="0" ;;
|
||||
"ncm") mode_num="4" ;;
|
||||
*) mode_num="0" ;;
|
||||
esac
|
||||
;;
|
||||
|
@ -8,6 +8,7 @@ source "${SCRIPT_DIR}/quectel.sh"
|
||||
source "${SCRIPT_DIR}/fibocom.sh"
|
||||
source "${SCRIPT_DIR}/meig.sh"
|
||||
source "${SCRIPT_DIR}/huawei.sh"
|
||||
source "${SCRIPT_DIR}/tdtech.sh"
|
||||
# source "${SCRIPT_DIR}/simcom.sh"
|
||||
|
||||
#调试开关
|
||||
|
@ -372,6 +372,7 @@ get_modem_info()
|
||||
"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}" ;;
|
||||
"tdtech") get_tdtech_info "${at_port}" "${platform}" "${define_connect}" ;;
|
||||
*) debug "未适配该模组" ;;
|
||||
esac
|
||||
|
||||
|
@ -126,6 +126,8 @@ ecm_dial()
|
||||
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
|
||||
|
@ -165,6 +165,18 @@
|
||||
"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"
|
||||
},
|
||||
"mt5700m-cn":{
|
||||
"manufacturer_id":"3466",
|
||||
"manufacturer":"tdtech",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"pcie":{
|
||||
@ -277,6 +289,12 @@
|
||||
"vendor_id":["12d1"],
|
||||
"product_id":["15c3"]
|
||||
}
|
||||
},
|
||||
"tdtech":{
|
||||
"hisilicon":{
|
||||
"vendor_id":["3466"],
|
||||
"product_id":["3301"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -84,6 +84,7 @@ m_modem_presets()
|
||||
"meig") meig_presets ;;
|
||||
"simcom") simcom_presets ;;
|
||||
"huawei") huawei_presets ;;
|
||||
"tdtech") tdtech_presets ;;
|
||||
esac
|
||||
}
|
||||
|
||||
|
918
applications/luci-app-modem/root/usr/share/modem/tdtech.sh
Executable file
918
applications/luci-app-modem/root/usr/share/modem/tdtech.sh
Executable file
@ -0,0 +1,918 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2023 Siriling <siriling@qq.com>
|
||||
|
||||
#脚本目录
|
||||
SCRIPT_DIR="/usr/share/modem"
|
||||
|
||||
#预设
|
||||
tdtech_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:连接定义
|
||||
tdtech_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:平台
|
||||
tdtech_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} | sed -n '2p' | 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:拨号模式配置
|
||||
tdtech_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:频段名称
|
||||
tdtech_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)
|
||||
tdtech_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=$(tdtech_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:模组名称
|
||||
tdtech_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=$(tdtech_get_band_info "${bin_2g_3g}" "${support_2g_band}" "2G")
|
||||
local band_3g_info=$(tdtech_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=$(tdtech_get_band_info "${bin_4g_5g}" "${support_4g_band}" "4G")
|
||||
local band_5g_info=$(tdtech_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:网络偏好配置
|
||||
tdtech_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:频段偏好配置
|
||||
tdtech_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=$(tdtech_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串口
|
||||
tdtech_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串口
|
||||
tdtech_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:连接定义
|
||||
tdtech_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}"
|
||||
}
|
||||
|
||||
#基本信息
|
||||
tdtech_base_info()
|
||||
{
|
||||
debug "TDTech base info"
|
||||
|
||||
#Name(名称)
|
||||
at_command="AT+CGMM"
|
||||
name=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | sed -n '2p' | 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=$(tdtech_get_mode ${at_port} ${platform} | tr 'a-z' 'A-Z')
|
||||
|
||||
#Temperature(温度)
|
||||
temperature=$(tdtech_get_temperature ${at_port})
|
||||
}
|
||||
|
||||
#获取SIM卡状态
|
||||
# $1:SIM卡状态标志
|
||||
tdtech_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卡信息
|
||||
tdtech_sim_info()
|
||||
{
|
||||
debug "TDTech 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=$(tdtech_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:网络类型数字
|
||||
tdtech_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:信号强度指示数字
|
||||
tdtech_get_rssi()
|
||||
{
|
||||
local rssi
|
||||
case $1 in
|
||||
"99") rssi="unknown" ;;
|
||||
* ) rssi=$((2 * $1 - 113)) ;;
|
||||
esac
|
||||
echo "$rssi"
|
||||
}
|
||||
|
||||
#网络信息
|
||||
tdtech_network_info()
|
||||
{
|
||||
debug "TDTech network info"
|
||||
|
||||
#Connect Status(连接状态)
|
||||
connect_status=$(tdtech_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=$(tdtech_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=$(tdtech_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子载波间隔数字
|
||||
tdtech_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:频段数字
|
||||
tdtech_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"
|
||||
}
|
||||
|
||||
#小区信息
|
||||
tdtech_cell_info()
|
||||
{
|
||||
debug "TDTech 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=$(echo "$response" | awk -F',' '{print $6}')
|
||||
nr_physical_cell_id=$(echo "$response" | awk -F',' '{print $7}')
|
||||
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=$(echo "$response" | awk -F',' '{print $5}')
|
||||
endc_lte_physical_cell_id=$(echo "$response" | awk -F',' '{print $6}')
|
||||
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=$(echo "$response" | awk -F',' '{print $6}')
|
||||
endc_nr_physical_cell_id=$(echo "$response" | awk -F',' '{print $7}')
|
||||
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=$(echo "$response" | awk -F',' '{print $5}')
|
||||
lte_physical_cell_id=$(echo "$response" | awk -F',' '{print $6}')
|
||||
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=$(echo "$response" | awk -F',' '{print $6}')
|
||||
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=$(echo "$response" | awk -F',' '{print $7}')
|
||||
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_tdtech_info()
|
||||
{
|
||||
debug "get tdtech info"
|
||||
#设置AT串口
|
||||
at_port="$1"
|
||||
platform="$2"
|
||||
define_connect="$3"
|
||||
|
||||
#基本信息
|
||||
tdtech_base_info
|
||||
|
||||
#SIM卡信息
|
||||
tdtech_sim_info
|
||||
if [ "$sim_status" != "ready" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
#网络信息
|
||||
tdtech_network_info
|
||||
if [ "$connect_status" != "connect" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
#小区信息
|
||||
tdtech_cell_info
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user