🌴 Sync 2026-03-05 23:51:42

This commit is contained in:
github-actions[bot] committed 2026-03-05 23:51:42 +08:00
1 parent 97c049ed0a
commit 0acff03804
14253 files changed
+3893239

No files matched your search

+35
View File
@@ -0,0 +1,35 @@
#将openwrt顶层目录下的rules.mk文件中的内容导入进来
include $(TOPDIR)/rules.mk
#软件包名
PKG_NAME:=luci-app-cpe
#软件包版本
PKG_VERSION:=5.0.1
PKG_RELEASE:=1
#真正编译当前软件包的目录
PKG_BUILD_DIR:= $(BUILD_DIR)/$(PKG_NAME)
#将$(TOPDIR)/include目录下的package.mk文件中的内容导入进来
include $(INCLUDE_DIR)/package.mk
define Package/luci-app-cpe
PKGARCH:=all
SECTION:=wrtnode
CATEGORY:=Daocaoren
SUBMENU :=CPE
TITLE:=luci-app-cpe
DEPENDS:=+sendat + luci-compat +kmod-usb-net +kmod-usb-net-cdc-ether +kmod-usb-acm \
+kmod-usb-net-qmi-wwan +kmod-usb-net-rndis +kmod-usb-serial-qualcomm \
+kmod-usb-net-sierrawireless +kmod-usb-ohci +kmod-usb-serial \
+kmod-usb-serial-option +kmod-usb-wdm \
+kmod-usb2 +kmod-usb3 \
+quectel-cm +kmod-usb-net-cdc-mbim +usbutils
endef
PKG_LICENSE:=GPLv3
PKG_LINCESE_FILES:=LICENSE
PKF_MAINTAINER:=daocaoren <168620188@qq.com>
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature
@@ -0,0 +1,189 @@
module("luci.controller.admin.cpe", package.seeall)
I18N = require "luci.i18n"
translate = I18N.translate
function index()
entry({"admin", "modem"}, firstchild(), translate("移动数据"), 25).dependent=false
entry({"admin", "modem", "nets"}, template("cpe/net_status"), translate("信号状态"), 0)
entry({"admin", "modem", "get_csq"}, call("action_get_csq"))
entry({"admin", "modem", "send_atcmd"}, call("action_send_atcmd"))
-- entry({"admin", "modem", "sms"}, template("cpe/sms"), translate("短信信息"), 1)
-- entry({"admin", "modem", "band"}, template("cpe/band"), translate("锁频段/锁PCI"), 1)
entry({"admin", "modem", "at"}, template("cpe/at"), translate("AT工具"), 98)
if not nixio.fs.access("/etc/config/modem") then
return
end
entry({"admin", "modem", "modem"}, cbi("cpe/modem"), _("模块设置"), 99)
end
function action_send_atcmd()
local rv ={}
local file
local p = luci.http.formvalue("p")
local set = luci.http.formvalue("set")
fixed = string.gsub(set, "\"", "~")
port= string.gsub(p, "\"", "~")
rv["at"] = fixed
rv["port"] = port
os.execute("/usr/share/cpe/atcmd.sh \'" .. port .. "\' \'" .. fixed .. "\'")
result = "/tmp/result.at"
file = io.open(result, "r")
if file ~= nil then
rv["result"] = file:read("*all")
file:close()
else
rv["result"] = " "
end
os.execute("/usr/share/cpe/delatcmd.sh")
luci.http.prepare_content("application/json")
luci.http.write_json(rv)
end
function action_get_csq()
local file
stat = "/tmp/cpe_cell.file"
file = io.open(stat, "r")
local rv ={}
-- echo 'RM520N-GL'
-- echo 'conntype'
-- echo '1e0e:9001'
-- echo $COPS #运营商
-- echo '' #端口
-- echo '' #温度
-- echo '' #协议
rv["modem"] = file:read("*line")
rv["conntype"] = file:read("*line")
rv["modid"] = file:read("*line")
rv["cops"] = file:read("*line")
rv["port"] = file:read("*line")
rv["tempur"] = file:read("*line")
rv["proto"] = file:read("*line")
file:read("*line")
-- echo $IMEI #imei
-- echo $IMSI #imsi
-- echo $ICCID #iccid
-- echo $phone #phone
rv["imei"] = file:read("*line")
rv["imsi"] = file:read("*line")
rv["iccid"] =file:read("*line")
rv["phone"] = file:read("*line")
file:read("*line")
-- echo $MODE
-- echo $CSQ
-- echo $CSQ_PER
-- echo $CSQ_RSSI
-- echo '' #参考信号接收质量 RSRQ ecio
-- echo '' #参考信号接收质量 RSRQ ecio1
-- echo '' #参考信号接收功率 RSRP rscp
-- echo '' #参考信号接收功率 RSRP rscp1
-- echo '' #信噪比 SINR rv["sinr"]
-- echo '' #连接状态监控 rv["netmode"]
rv["mode"] = file:read("*line")
rv["csq"] = file:read("*line")
rv["per"] = file:read("*line")
rv["rssi"] = file:read("*line")
rv["ecio"] = file:read("*line")
rv["ecio1"] = file:read("*line")
rv["rscp"] = file:read("*line")
rv["rscp1"] = file:read("*line")
rv["sinr"] = file:read("*line")
rv["netmode"] = file:read("*line")
file:read("*line")
rssi = rv["rssi"]
ecio = rv["ecio"]
rscp = rv["rscp"]
ecio1 = rv["ecio1"]
rscp1 = rv["rscp1"]
if ecio == nil then
ecio = "-"
end
if ecio1 == nil then
ecio1 = "-"
end
if rscp == nil then
rscp = "-"
end
if rscp1 == nil then
rscp1 = "-"
end
if ecio ~= "-" then
rv["ecio"] = ecio .. " dB"
end
if rscp ~= "-" then
rv["rscp"] = rscp .. " dBm"
end
if ecio1 ~= " " then
rv["ecio1"] = " (" .. ecio1 .. " dB)"
end
if rscp1 ~= " " then
rv["rscp1"] = " (" .. rscp1 .. " dBm)"
end
rv["mcc"] = file:read("*line")
rv["mnc"] = file:read("*line")
rv["rnc"] = file:read("*line")
rv["rncn"] = file:read("*line")
rv["lac"] = file:read("*line")
rv["lacn"] = file:read("*line")
rv["cid"] = file:read("*line")
rv["cidn"] = file:read("*line")
rv["lband"] = file:read("*line")
rv["channel"] = file:read("*line")
rv["pci"] = file:read("*line")
rv["date"] = file:read("*line")
-- rv["phonen"] = file:read("*line")
--rv["host"] = "0"
-- rv["simerr"] = "0"
--
--
--
--
--
--
--
--
--
--
-- rv["down"] = file:read("*line")
-- rv["up"] = file:read("*line")
--
--
--
-- rv["cell"] = file:read("*line")
-- rv["modtype"] = file:read("*line")
--
--
--
--
--
--
-- rv["lat"] = "-"
-- rv["long"] = "-"
rv["crate"] = translate("快速(每10秒更新一次)")
luci.http.prepare_content("application/json")
luci.http.write_json(rv)
end
+144
View File
@@ -0,0 +1,144 @@
local m, section, m2, s2
m = Map("modem", translate("Mobile Network"))
m.description = translate("Modem Server For OpenWrt")
-------------------------------Fibocom Wireless Inc. FM650 Module----------------------------------
if (string.gsub(luci.sys.exec('lsusb |grep "ID 2cb7:0a05 " | wc -l'),"%s+","")=="1") then
section = m:section(TypedSection, "ndis", translate("FMFM650-CN Settings"), translate("[1]Automatic start upon startup: Check</br>[2] FMFMFM650-CN module default ECM (36) mode. If not, please modify it, otherwise dialing cannot proceed normally</br>"))
section.anonymous = true
section.addremove = false
enable = section:option(Flag, "enabled", translate("Enable"))
enable.rmempty = false
else
section = m:section(TypedSection, "ndis", translate("SIM Settings"), translate("Automatic operation upon startup \r\n ooo"))
section.anonymous = true
section.addremove = false
section:tab("general", translate("General Setup"))
section:tab("advanced", translate("Advanced Settings"))
enable = section:taboption("general", Flag, "enabled", translate("Enable"))
enable.rmempty = false
device = section:taboption("general",Value, "device", translate("Modem device"))
device.rmempty = false
local device_suggestions = nixio.fs.glob("/dev/cdc-wdm*")
if device_suggestions then
local node
for node in device_suggestions do
device:value(node)
end
end
apn = section:taboption("general", Value, "apn", translate("APN"))
username = section:taboption("general", Value, "username", translate("PAP/CHAP Username"))
password = section:taboption("general", Value, "password", translate("PAP/CHAP Password"))
password.password = true
pincode = section:taboption("general", Value, "pincode", translate("PIN Code"))
auth = section:taboption("general", Value, "auth", translate("Authentication Type"))
auth.rmempty = true
auth:value("", translate("-- Please choose --"))
auth:value("both", "PAP/CHAP (both)")
auth:value("pap", "PAP")
auth:value("chap", "CHAP")
auth:value("none", "NONE")
tool = section:taboption("general", Value, "tool", translate("Tools"))
tool:value("quectel-CM", "quectel-CM")
tool.rmempty = true
PdpType= section:taboption("general", Value, "pdptype", translate("PdpType"))
PdpType:value("IPV4", "IPV4")
PdpType:value("IPV6", "IPV6")
PdpType:value("IPV4V6", "IPV4V6")
PdpType.rmempty = true
---------------------------advanced------------------------------
bandlist = section:taboption("advanced", ListValue, "bandlist", translate("Lock Band List"))
-- if (string.gsub(luci.sys.exec('uci get system.@system[0].modem |grep lte |wc -l'),"%s+","")=="1") then
-- bandlist.default = "0"
-- bandlist:value("1", "LTE BAND1")
-- bandlist:value("2", "LTE BAND2")
-- bandlist:value("3", "LTE BAND3")
-- bandlist:value("4", "LTE BAND4")
-- bandlist:value("5", "LTE BAND5")
-- bandlist:value("7", "LTE BAND7")
-- bandlist:value("8", "LTE BAND8")
-- bandlist:value("20", "LTE BAND20")
-- bandlist:value("38", "LTE BAND38")
-- bandlist:value("40", "LTE BAND40")
-- bandlist:value("41", "LTE BAND41")
-- bandlist:value("28", "LTE BAND28")
-- bandlist:value("A", "AUTO")
-- end
bandlist:value("0", translate("Disable"))
servertype = section:taboption("advanced", ListValue, "servertype", translate("Server Type"))
servertype.default = "0"
--if (string.gsub(luci.sys.exec('uci get system.@system[0].modem |grep nr5g |wc -l'),"%s+","")=="1") then
servertype:value("1", "5G Only")
servertype:value("5", "4G/5G Only")
--end
servertype:value("2", "4G Only")
servertype:value("3", "3G Only")
servertype:value("4", "2G Only")
servertype:value("0", "AUTO")
-- s1 = m:section(TypedSection, "ndis", translate("AT Port Settings"),translate("Set tyyUSB port"))
-- s1.anonymous = true
-- s1.addremove = false
-- tyyusb= s1:option(Value, "tyyusb", translate("tyyUSB port"))
-- tyyusb.default = "2"
-- tyyusb:value("0", "0")
-- tyyusb:value("1", "1")
-- tyyusb:value("2", "2")
-- tyyusb:value("3", "3")
-- tyyusb:value("4", "4")
-- tyyusb.rmempty=false
end
s2 = m:section(TypedSection, "ndis", translate("Network Diagnostics"),translate("Network exception handling: \
check the network connection in a loop for 5 seconds. If the Ping IP address is not successful, After the network \
exceeds the abnormal number, restart and search the registered network again."))
s2.anonymous = true
s2.addremove = false
en = s2:option(Flag, "en", translate("Enable"))
en.rmempty = false
ipaddress= s2:option(Value, "ipaddress", translate("Ping IP address"))
ipaddress.default = "114.114.114.114"
ipaddress.rmempty=false
an = s2:option(Value, "an", translate("Abnormal number"))
an.default = "15"
an:value("3", "3")
an:value("5", "5")
an:value("10", "10")
an:value("15", "15")
an:value("20", "20")
an:value("25", "25")
an:value("30", "30")
an.rmempty=false
local apply = luci.http.formvalue("cbi.apply")
if apply then
-- io.popen("/etc/init.d/modeminit restart")
io.popen("/etc/init.d/modem restart")
end
return m,m2
+152
View File
@@ -0,0 +1,152 @@
<%+header%>
<%
local sys = require "luci.sys"
local utl = require "luci.util"
local fs = require "nixio.fs"
local uci = require "luci.model.uci".cursor()
local s = uci:get("custom", "bandlock", "enabled")
local a = uci:get("custom", "atcmd", "enabled")
local multilock = uci:get("custom", "multiuser", "multi") or "0"
local rootlock = uci:get("custom", "multiuser", "root") or "0"
nomulti=1
if (multilock == "0") or (multilock == "1" and rootlock == "1") then
nosms = 1
if a == "1" then
nosms = 0
end
else
nosms = 1
nomulti = 0
end
block = 1
if s == "1" then
block = 0
end
function showicon(lck)
end
-%>
<script type="text/javascript" src="<%=resource%>/xhr.js"></script>
<script type="text/javascript">//<![CDATA[
function sendcmd(event)
{
var v = document.getElementById("drop1").value;
var s = document.getElementById("atcmd").value;
var r =document.getElementById("attxt").value;
if ( s.length == 0 )
{
document.getElementById("attxt").value= '<%:请输入AT命令!%>\r' + r;
return false;
}
XHR.get('<%=luci.dispatcher.build_url("admin", "modem", "send_atcmd")%>',
{ set: s , p: v},
function(x, rv)
{
var pd = rv.result;
document.getElementById("attxt").value=pd + r;
}
);
}
function sendclean(event)
{
document.getElementById("attxt").value='';
}
//]]></script>
<div class="cbi-map" id="cbi-misc">
<h2><a id="content" name="content"><%:AT命令工具%></a></h2>
<div class="cbi-map-descr"><%:AT命令工具%></div>
<head>
<style>
input {
vertical-align: bottom;
}
#popup {
width:560px;
height:190px;
padding:20px;
background-color:gainsboro;
border-style : solid;
position:fixed;
top : 40%;
margin-left: auto;
margin-right: auto;
left: 0;
right: 0;
text-align: center;
display:none;
}
textarea{
background:#373737;
border:none;
color:#FFF;
}
</style>
</head>
<fieldset class="cbi-section" id="cbi-term">
<legend><%:AT命令终端%></legend>
<div id="popup">
<table width="500" border="0">
<tr>
<td width="50px"><div><%:Enter Password to Unlock Full Terminal%></div></td>
</tr>
<tr>
<td width="200px"><input id="pass" type="password"/></td>
</tr>
<tr>
<td><input type="image" src="<%=showicon(0)%>" style="width:48px;height:48px;" onclick="return done()" /></td>
</tr>
</table>
</div>
<table width="700" border="0" id="droptxt">
<tr>
<td width="10%"><div align="right"><%:模块端口 : %></div></td>
<td width="15%">
<select style="width:200px" name="atdrop" id="drop1">
<option value="0">ttyUSB0</option>
<option value="1">ttyUSB1</option>
<option value="2" selected>ttyUSB2</option>
<option value="3">ttyUSB3</option>
<option value="4">ttyUSB4</option>
<option value="5">ttyUSB5</option>
<option value="6">ttyUSB6</option>
<option value="7">ttyUSB7</option>
<option value="8">ttyUSB8</option>
<option value="9">ttyUSB9</option>
<option value="10">ttyUSB10</option>
<option value="11">ttyUSB11</option>
<option value="12">ttyUSB12</option>
</select>
</td>
<td width="10%"><div align="right"><%:AT命令 : %></div></td>
<td width="15%"><input style="visibility:visible;width: 500px;maxlength="200" type="text" name="atcmdlck" id="atcmd" class="cbi-input-text"></input></td>
<td width="10%">
<input style="visibility:visible" type="submit" id="sendat" class="cbi-button cbi-button-apply" value="<%:发送%>" onclick="return sendcmd()" />
<input style="visibility:visible" type="submit" id="sendclean" class="cbi-button cbi-button-reset" value="<%:清除%>" onclick="return sendclean()" />
</td>
<td width="47%">&nbsp;</td>
</tr>
</table>
<textarea readonly="readonly" name="attxt" id="attxt" rows="50" style="width: 100%;" maxlength="160"></textarea>
</div>
</fieldset>
</div>
<%+footer%>
+296
View File
@@ -0,0 +1,296 @@
<%+header%>
<%
local fs = require "nixio.fs"
nosms = 1
if not fs.stat("/etc/nosim") then
nosms = 0
end
havegps = 0
if fs.stat("/etc/havegps") then
havegps = 1
end
-%>
<style>g {color:grey; font-size:75%; vertical-align: super;}</style>
<script type="text/javascript" src="<%=resource%>/xhr.js?v=git-23.159.15540-7154b89"></script>
<script type="text/javascript">//<![CDATA[
modemtype=0;
cell=0;
portx="-";
phonenx = "";
hided = 0;
XHR.poll(2, '<%=luci.dispatcher.build_url("admin", "modem", "get_csq")%>', null,
function(x, rv)
{
document.getElementById('date').innerHTML=rv.date;
document.getElementById('csq').innerHTML=rv.csq;
document.getElementById('per').innerHTML=rv.per;
document.getElementById('rssi').innerHTML=rv.rssi;
document.getElementById('modem').innerHTML=rv.modem;
document.getElementById('cops').innerHTML=rv.cops;
document.getElementById('mode').innerHTML=rv.mode;
document.getElementById('lac').innerHTML=rv.lac;
document.getElementById('cid').innerHTML=rv.cid;
document.getElementById('lacn').innerHTML=rv.lacn;
document.getElementById('cidn').innerHTML=rv.cidn;
document.getElementById('mcc').innerHTML=rv.mcc;
document.getElementById('mnc').innerHTML=rv.mnc;
document.getElementById('rnc').innerHTML=rv.rnc;
document.getElementById('rncn').innerHTML=rv.rncn;
document.getElementById('down').innerHTML=rv.down;
document.getElementById('up').innerHTML=rv.up;
document.getElementById('ecio').innerHTML=rv.ecio;
document.getElementById('rscp').innerHTML=rv.rscp;
document.getElementById('ecio1').innerHTML=rv.ecio1;
document.getElementById('rscp1').innerHTML=rv.rscp1;
document.getElementById('conntype').innerHTML=rv.conntype;
document.getElementById('chan').innerHTML=rv.channel;
document.getElementById('lband').innerHTML=rv.lband;
document.getElementById('conmon').innerHTML=rv.netmode;
document.getElementById('tempur').innerHTML=rv.tempur;
document.getElementById('pci').innerHTML=rv.pci;
document.getElementById('sinr').innerHTML=rv.sinr;
document.getElementById('imei').innerHTML=rv.imei;
document.getElementById('imsi').innerHTML=rv.imsi;
document.getElementById('iccid').innerHTML=rv.iccid;
document.getElementById('phone').innerHTML=rv.phone;
<% if havegps == 1 then %>
document.getElementById('lat').innerHTML=rv.lat;
document.getElementById('long').innerHTML=rv.long;
<% end %>
// document.getElementById('idvp').innerHTML=rv.modid;
// document.getElementById('proto').innerHTML=rv.proto;
// document.getElementById('port').innerHTML=rv.port;
// document.getElementById('crate').innerHTML=rv.crate;
// if (phonenx == "")
// {
// document.getElementById('phone').value=rv.phone;
// document.getElementById('phonen').value=rv.phonen;
// phonenx = document.getElementById('phone').value;
// document.getElementById("phone").disabled=false;
// document.getElementById("phonen").disabled=false;
// document.getElementById("pho").disabled=false;
// }
// if (rv.phone == "-")
// {
// document.getElementById('phone').value="-";
// document.getElementById('phonen').value="-";
// document.getElementById("pho").disabled=true;
// document.getElementById("phone").disabled=true;
// document.getElementById("phonen").disabled=true;
// phonenx = "";
// }
// simerr = rv.simerr;
// if (simerr == "0")
// {
// document.getElementById("simwarn").style.display="none";
// }
// else
// {
// document.getElementById("simwarn").style.display="block";
// document.getElementById("simsg").style.color = "red";
// if (simerr == "1")
// {
// document.getElementById("simsg").innerHTML = "<%:SIM卡已锁定,个人资料中未输入SIM Pin!!%>";
// }
// else
// {
// if (simerr == "2")
// {
// document.getElementById("simsg").innerHTML = "<%:解锁SIM卡的Pin不正确%>";
// }
// else
// {
// if (simerr == "3")
// {
// document.getElementById("simsg").innerHTML = "<%:无效SIM卡%>";
// } else
// {
// document.getElementById("simsg").innerHTML = "<%:SIM卡未锁定.错误的SIM卡%>";
// }
// }
// }
// }
// reslt=rv.result
// portx=rv.port
// if (portx == "-" )
// {
// document.getElementById('inc1').style.display="none";
// document.getElementById('dec1').style.display="none";
// }
// else
// {
// document.getElementById('inc1').style.display="block";
// document.getElementById('dec1').style.display="block";
// }
// host = rv.host;
// if(host == "1")
// {
// document.getElementById("pho").disabled=true;
// }
}
);
function clear_data()
{
document.getElementById('port').innerHTML="<%:Changing Port%>";
document.getElementById('csq').innerHTML="-";
document.getElementById('per').innerHTML="-";
document.getElementById('rssi').innerHTML="-";
document.getElementById('modem').innerHTML="-";
document.getElementById('cops').innerHTML="-";
document.getElementById('mode').innerHTML="-";
document.getElementById('lac').innerHTML="-";
document.getElementById('cid').innerHTML="-";
document.getElementById('lacn').innerHTML="-";
document.getElementById('cidn').innerHTML="-";
document.getElementById('mcc').innerHTML="-";
document.getElementById('mnc').innerHTML="-";
document.getElementById('rnc').innerHTML="-";
document.getElementById('rncn').innerHTML="-";
document.getElementById('down').innerHTML="-";
document.getElementById('up').innerHTML="-";
document.getElementById('ecio').innerHTML="-";
document.getElementById('rscp').innerHTML="-";
document.getElementById('ecio1').innerHTML="-";
document.getElementById('rscp1').innerHTML="-";
document.getElementById('netmode').innerHTML="-";
document.getElementById('conntype').innerHTML=" ";
document.getElementById('chan').innerHTML=" ";
document.getElementById('conmon').innerHTML="-";
document.getElementById('phone').value="-";
document.getElementById('imei').innerHTML="-";
document.getElementById('imsi').innerHTML="-";
document.getElementById('iccid').innerHTML="-";
document.getElementById('lband').innerHTML="-";
document.getElementById('pci').innerHTML="-";
<% if havegps == 1 then %>
document.getElementById('lat').innerHTML="-";
document.getElementById('long').innerHTML="-";
<% end %>
// document.getElementById('idvp').innerHTML="-";
// document.getElementById('phonen').value="-";
}
//]]></script>
<div class="cbi-map" id="cbi-modem">
<h2><a id="content" name="content"><%:信号状态/模块信息%></a></h2>
<div class="cbi-map-descr">请注意该插件所有功能并无适配所有5G模块,不用妄想冷门模块插上就能用(有能力者自行适配)
</div>
<fieldset class="cbi-section" id="simwarn" style="display:none;">
<legend><%:SIM警告%></legend>
<table width="550" border="0">
<tr>
<td width="10%"></td>
<td width="60%"><div align="left" id="simsg" style="font-size:1.875em"><strong></strong></div></td>
<td width="30%"></td>
</tr>
</table>
</fieldset>
<fieldset class="cbi-section" id="cbi-mod">
<legend><%:综合信息%></legend>
<table width="100%" cellspacing="10">
<tr><td width="20%"><%:模块 :%></td><td id="modem">-</td><td></td></tr>
<tr><td width="20%"><%:制造商 :%></td><td id="conntype"></td><td></td></tr>
<tr><td width="20%"><%:温度 : %></td><td id="tempur"></td><td></td></tr>
<tr><td width="20%"><%:更新时间 : %></td><td id="date"></td><td></td></tr>
<!-- <tr><td width="20%"><%:ID : %></td><td id="idvp"></td><td></td></tr>
<tr><td width="20%"><%:端口 : %></td><td id="port"></td><td></td></tr>
<tr><td width="20%"><%:协议 : %></td><td id="proto"></td><td></td></tr> -->
</table>
</fieldset>
<% if nosms == 0 then %>
<% end %>
<fieldset class="cbi-section" id="cbi-msinfo">
<legend><%:通信模块/SIM卡信息%></legend>
<table width="100%" cellspacing="10">
<tr><td width="20%"><%:运营商 : %></td><td id="cops"></td><td></td></tr>
<tr><td width="20%"><%:IMEI :%></td><td id="imei"></td><td></td></tr>
<tr><td width="20%"><%:IMSI : %></td><td id="imsi"></td><td></td></tr>
<tr><td width="20%"><%:ICCID : %></td><td id="iccid"></td><td></td></tr>
<tr><td width="20%"><%:SIM卡号码 : %></td><td id="phone"></td><td></td></tr>
</table>
</fieldset>
<fieldset class="cbi-section" id="cbi-sig">
<legend><%:信号状态%></legend>
<table width="100%" cellspacing="10">
<tr><td width="20%"><%:蜂窝网络类型 :%></td><td id="mode"></td><td></td></tr>
<tr><td width="20%"><%:CSQ : %></td><td id="csq"></td><td></td></tr>
<tr><td width="20%"><%:信号强度 : %></td><td id="per"></td><td></td></tr>
<tr><td width="20%"><%:信号接收强度 RSSI : %></td><td id="rssi"></td><td></td></tr>
<tr><td width="20%"><%:参考信号接收质量 RSRQ : %></td><td><ul><span id="ecio" class="r"></span><span id="ecio1" class="r"></span></ul></td><td></td></tr>
<tr><td width="20%"><%:参考信号接收功率 RSRP : %></td><td><ul><span id="rscp" class="r"></span><span id="rscp1" class="r"></span></ul></td><td></td></tr>
<tr><td width="20%"><%:信噪比 SINR : %></td><td id="sinr"></td><td></td></tr>
<tr><td width="20%"><%:连接状态监控 : %></td><td id="conmon"></td><td></td></tr>
</table>
</fieldset>
<fieldset class="cbi-section" id="cbi-sig">
<legend><%:基站信息%></legend>
<table width="100%" cellspacing="10">
<tr><td width="20%"><%:MCC / MNC :%></td><td id="mcc"></td><td id="mnc"></td></tr>
<tr><td width="20%"><%:eNB ID : %></td><td><ul><span id="rnc" class="r"></span><span id="rncn" class="r"></span></ul></td><td></td></tr>
<tr><td width="20%"><%:TAC : %></td><td><ul><span id="lac" class="r"></span><span id="lacn" class="r"></span></ul></td><td></td></tr>
<tr><td width="20%"><%:Cell ID : %></td><td><ul><span id="cid" class="r"></span><span id="cidn" class="r"></span></ul></td><td></td></tr>
<tr><td width="20%"><%:频段 Band : %></td><td id="lband"></td><td></td></tr>
<tr><td width="20%"><%:频点 Channel : %></td><td id="chan"></td><td></td></tr>
<tr><td width="20%"><%:物理小区标识 PCI : %></td><td id="pci"></td><td></td></tr>
<tr><td width="20%"><%:最大Qos级别 Maximum Qos : %></td><td><ul><span id="down" class="r"></span><span id="up" class="r"></span></ul></td><td></td></tr>
</table>
</fieldset>
<% if havegps == 1 then %>
<fieldset class="cbi-section" id="cbi-gps">
<legend><%:GPS 定位%></legend>
<table width="550" border="0">
<tr>
<td width="30%"><div align="right"><%:纬度 :%></div></td>
<td><ul id="lat"></ul></td>
<td width="1%">&nbsp;</td>
</tr>
<tr>
<td><div align="right"><%:经度 :%></div></td>
<td><ul id="long"></ul></td>
<td>&nbsp;</td>
</tr>
</table>
</fieldset>
<% end %>
</div>
<%+footer%>
+73
View File
@@ -0,0 +1,73 @@
msgid ""
msgstr ""
msgid "Mobile Network"
msgstr "模块设置"
msgid "Automatic operation upon startup ooo"
msgstr "开机自动启动:勾选"
msgid "Tools"
msgstr "拨号工具"
msgid "PAP/CHAP Username"
msgstr "PAP/CHAP 用户"
msgid "PAP/CHAP Password"
msgstr "PAP/CHAP 密码"
msgid "Modem Server For OpenWrt"
msgstr "4G/5G模块管理"
msgid "SIM Settings"
msgstr "SIM 配置 (联通ANP:3gnet) (电信APN:ctnet) (移动APN:cmnet) (广电APN:cbnet) "
msgid "PdpType"
msgstr "IP获取方式"
msgid "AT Port Settings"
msgstr "AT 模块配置"
msgid "Set tyyUSB port"
msgstr "AT 模块端口配置 (全模块指定端口)"
msgid "tyyUSB port"
msgstr "ttyUSB 配置ID"
msgid "Network Diagnostics"
msgstr "网络诊断"
msgid "Network Diagnostics"
msgstr "网络诊断"
msgid "Network exception handling: check the network connection in a loop for 5 seconds. If the Ping IP address is not successful, After the network exceeds the abnormal number, restart and search the registered network again."
msgstr "网络异常处理:循环检查网络连接5秒。如果Ping IP地址不成功,则在网络超过异常数量后,重新启动并搜索已注册的网络。"
msgid "Ping IP address"
msgstr "Ping IP地址"
msgid "Abnormal number"
msgstr "异常次数"
msgid "Lock Band List"
msgstr "锁定频段列表"
msgid "Server Type"
msgstr "服务类型"
msgid "FMFM650-CN Settings"
msgstr "FMFM650-CN 设置"
msgid "[1]Automatic start upon startup: Check</br>[2] FMFMFM650-CN module default ECM (36) mode. If not, please modify it, otherwise dialing cannot proceed normally</br>"
msgstr "【1】 开机自动启动:勾选 </br> 【2】 FMFM650-CN 模块默认 ECM (36)模式如果不是请修改 否则不能正常进行拨号 </br>"
+1
View File
@@ -0,0 +1 @@
zh-cn
+12
View File
@@ -0,0 +1,12 @@
config ndis
option enabled '0'
option bandlist '0'
option servertype '0'
option ipaddress '114.114.114.114'
option en '0'
option an '5'
option model 'nr5g'
option tyyusb '2'
option tool 'quectel-CM'
option device '/dev/cdc-wdm0'
option pdptype 'IPV4V6'
+7
View File
@@ -0,0 +1,7 @@
#!/bin/sh /etc/rc.common
START=99
start() {
/bin/sh /usr/share/cpe/rssi &
}
+107
View File
@@ -0,0 +1,107 @@
#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2014 OpenWrt.org
START=16
STOP=16
USE_PROCD=1
#使用procd启动
# start启动服务
# stop停止服务
# restart重新启动服务
# reload重新加载配置文件(如果服务未实现重新加载,则重新启动)
# enable启用服务自动启动
# disable禁用服务自动启动
# enabled检查服务是否在启动时启动
# 正在运行检查服务是否正在运行
# status服务状态
# trace从系统调用跟踪开始
runModem()
{
local enabled
config_get_bool enabled $1 enabled
echo "run runModem" >> /tmp/log4g
if [ "$enabled" = "1" ]; then
local user
local password
local apn
local auth
local pincode
local device
local tool
local pdptype
config_get user $1 user
config_get password $1 password
config_get apn $1 apn
config_get auth $1 auth
config_get pincode $1 pincode
config_get device $1 device
config_get tool $1 tool
config_get pdptype $1 pdptype
config_get tty $1 tty
config_get atcmd $1 atcmd
if [ "$pdptype" = "IPV4V6" ]; then
pdptype='-4 -6'
elif [ "$pdptype" = "IPV6" ]; then
pdptype='-6'
else
pdptype=''
fi
devname="$(basename "$device")"
devpath="$(readlink -f /sys/class/usbmisc/$devname/device/)"
ifname="$( ls "$devpath"/net )"
procd_open_instance
#创建一个实例, 在procd看来一个应用程序可以多个实\E4\BE?
#ubus call service list 可以查看实例
procd_set_param command $tool -i $ifname -s $apn $pdptype
if [ "$password" != "" ];then
procd_append_param command $user $password $auth
fi
if [ "$pincode" != "" ]; then
procd_append_param command -p $pincode
fi
# procd_append_param command -f /tmp/4g.log
procd_set_param respawn
echo "quectel-CM has started."
procd_close_instance
#关闭实例
fi
}
service_triggers()
{
procd_add_reload_trigger "modem"
}
start_service() {
config_load modem
config_foreach runModem ndis
}
stop_service()
{
echo "runModem stop" >> /tmp/log4g
killall quectel-CM
echo "quectel-CM has stoped."
}
reload_service() {
restart
}
@@ -0,0 +1,19 @@
#!/bin/sh
[ ! -f "/usr/share/ucitrack/luci-app-modem.json" ] && {
cat > /usr/share/ucitrack/luci-app-modem.json << EEOF
{
"config": "modem",
"init": "modem"
}
EEOF
}
uci -q batch <<-EOF >/dev/null
delete ucitrack.@modem[-1]
add ucitrack modem
set ucitrack.@modem[-1].init=modem
commit ucitrack
EOF
rm -f /tmp/luci-indexcache
exit 0
+19
View File
@@ -0,0 +1,19 @@
#!/bin/sh
#
printf "Band 128-bit bandmask\n"
LBAND=1
BBAND=1
while [ $LBAND -le 48 ]
do
printf "%-6s%016X%016X\n" "$LBAND" "0" "$BBAND"
LBAND=$(( $LBAND + 1 ))
BBAND=$(( $BBAND * 2 ))
done
LBAND=65
BBAND=1
while [ $LBAND -le 85 ]
do
printf "%-6s%016X%016X\n" "$LBAND" "$BBAND" "0"
LBAND=$(( $LBAND + 1 ))
BBAND=$(( $BBAND * 2 ))
done
+317
View File
@@ -0,0 +1,317 @@
#!/bin/sh
CHAN=$1
CHAN=$(echo "$CHAN" | grep -o "[0-9]*")
decode_lte() {
if [ $CHAN -lt 600 ]; then
BAND="B1"
elif [ $CHAN -lt 1200 ]; then
BAND="B2"
elif [ $CHAN -lt 1950 ]; then
BAND="B3"
elif [ $CHAN -lt 2400 ]; then
BAND="B4"
elif [ $CHAN -lt 2650 ]; then
BAND="B5"
elif [ $CHAN -lt 2750 ]; then
BAND="B6"
elif [ $CHAN -lt 3450 ]; then
BAND="B7"
elif [ $CHAN -lt 3800 ]; then
BAND="B8"
elif [ $CHAN -lt 4150 ]; then
BAND="B9"
elif [ $CHAN -lt 4750 ]; then
BAND="B10"
elif [ $CHAN -lt 4950 ]; then
BAND="B11"
elif [ $CHAN -lt 5010 ]; then
BAND="-"
elif [ $CHAN -lt 5180 ]; then
BAND="B12"
elif [ $CHAN -lt 5280 ]; then
BAND="B13"
elif [ $CHAN -lt 5380 ]; then
BAND="B14"
elif [ $CHAN -lt 5730 ]; then
BAND="-"
elif [ $CHAN -lt 5850 ]; then
BAND="B17"
elif [ $CHAN -lt 6000 ]; then
BAND="B18"
elif [ $CHAN -lt 6150 ]; then
BAND="B19"
elif [ $CHAN -lt 6450 ]; then
BAND="B20"
elif [ $CHAN -lt 6600 ]; then
BAND="B21"
elif [ $CHAN -lt 7400 ]; then
BAND="B22"
elif [ $CHAN -lt 7500 ]; then
BAND="-"
elif [ $CHAN -lt 7700 ]; then
BAND="B23"
elif [ $CHAN -lt 8040 ]; then
BAND="B24"
elif [ $CHAN -lt 8690 ]; then
BAND="B25"
elif [ $CHAN -lt 9040 ]; then
BAND="B26"
elif [ $CHAN -lt 9210 ]; then
BAND="B27"
elif [ $CHAN -lt 9660 ]; then
BAND="B28"
elif [ $CHAN -lt 9770 ]; then
BAND="B29"
elif [ $CHAN -lt 9870 ]; then
BAND="B30"
elif [ $CHAN -lt 9920 ]; then
BAND="B31"
elif [ $CHAN -lt 10400 ]; then
BAND="B32"
elif [ $CHAN -lt 36000 ]; then
BAND="-"
elif [ $CHAN -lt 36200 ]; then
BAND="B33"
elif [ $CHAN -lt 36350 ]; then
BAND="B34"
elif [ $CHAN -lt 36950 ]; then
BAND="B35"
elif [ $CHAN -lt 37550 ]; then
BAND="B36"
elif [ $CHAN -lt 37750 ]; then
BAND="B37"
elif [ $CHAN -lt 38250 ]; then
BAND="B38"
elif [ $CHAN -lt 38650 ]; then
BAND="B39"
elif [ $CHAN -lt 39650 ]; then
BAND="B40"
elif [ $CHAN -lt 41590 ]; then
BAND="B41"
elif [ $CHAN -lt 43590 ]; then
BAND="B42"
elif [ $CHAN -lt 45590 ]; then
BAND="B43"
elif [ $CHAN -lt 46590 ]; then
BAND="B44"
elif [ $CHAN -lt 46790 ]; then
BAND="B45"
elif [ $CHAN -lt 54540 ]; then
BAND="B46"
elif [ $CHAN -lt 55240 ]; then
BAND="B47"
elif [ $CHAN -lt 56740 ]; then
BAND="B48"
elif [ $CHAN -lt 58240 ]; then
BAND="B49"
elif [ $CHAN -lt 59090 ]; then
BAND="B50"
elif [ $CHAN -lt 59140 ]; then
BAND="B51"
elif [ $CHAN -lt 60140 ]; then
BAND="B52"
elif [ $CHAN -lt 60255 ]; then
BAND="B53"
elif [ $CHAN -lt 65536 ]; then
BAND="-"
elif [ $CHAN -lt 66436 ]; then
BAND="B65"
elif [ $CHAN -lt 67336 ]; then
BAND="B66"
elif [ $CHAN -lt 67536 ]; then
BAND="B67"
elif [ $CHAN -lt 67836 ]; then
BAND="B68"
elif [ $CHAN -lt 68336 ]; then
BAND="B69"
elif [ $CHAN -lt 68586 ]; then
BAND="B70"
elif [ $CHAN -lt 68936 ]; then
BAND="B71"
elif [ $CHAN -lt 68986 ]; then
BAND="B72"
elif [ $CHAN -lt 69036 ]; then
BAND="B73"
elif [ $CHAN -lt 69466 ]; then
BAND="B74"
elif [ $CHAN -lt 70316 ]; then
BAND="B75"
elif [ $CHAN -lt 70366 ]; then
BAND="B76"
elif [ $CHAN -lt 70546 ]; then
BAND="B85"
elif [ $CHAN -lt 70596 ]; then
BAND="B87"
elif [ $CHAN -lt 70646 ]; then
BAND="B88"
else
BAND="-"
fi
}
decode_nr5g() {
if [ $CHAN -lt 123400 ]; then
BAND="-"
elif [ $CHAN -le 130400 ]; then
BAND="n71"
elif [ $CHAN -lt 143400 ]; then
BAND="-"
elif [ $CHAN -lt 145600 ]; then
BAND="n29"
elif [ $CHAN -eq 145600 ]; then
BAND="n29|n85"
elif [ $CHAN -lt 145800 ]; then
BAND="n85"
elif [ $CHAN -eq 145800 ]; then
BAND="n12|n85"
elif [ $CHAN -lt 147600 ]; then
BAND="n12|n85"
elif [ $CHAN -lt 149200 ]; then
BAND="n12|n67|n85"
elif [ $CHAN -eq 149200 ]; then
BAND="n12|n13|n67|n85"
elif [ $CHAN -le 151200 ]; then
BAND="n13|n67"
elif [ $CHAN -lt 151600 ]; then
BAND="n67"
elif [ $CHAN -eq 151600 ]; then
BAND="n14|n28|n67"
elif [ $CHAN -le 153600 ]; then
BAND="n14|n28"
elif [ $CHAN -lt 158200 ]; then
BAND="n28"
elif [ $CHAN -eq 158200 ]; then
BAND="n14|n20|n28"
elif [ $CHAN -le 160600 ]; then
BAND="n20|n28"
elif [ $CHAN -le 164200 ]; then
BAND="n20"
elif [ $CHAN -lt 171800 ]; then
BAND="-"
elif [ $CHAN -lt 172000 ]; then
BAND="n26"
elif [ $CHAN -lt 173800 ]; then
BAND="n18|n26"
elif [ $CHAN -le 175000 ]; then
BAND="n5|n18|n26"
elif [ $CHAN -le 178800 ]; then
BAND="n5|n26"
elif [ $CHAN -lt 185000 ]; then
BAND="-"
elif [ $CHAN -le 192000 ]; then
BAND="n8"
elif [ $CHAN -lt 285400 ]; then
BAND="-"
elif [ $CHAN -lt 286400 ]; then
BAND="n51|n76|n91|n93"
elif [ $CHAN -eq 286400 ]; then
BAND="n50|n51|n75|n76|n91|92|n93|94"
elif [ $CHAN -lt 295000 ]; then
BAND="n50|n75|n92|n94"
elif [ $CHAN -eq 295000 ]; then
BAND="n50|n74|n75|n92|n94"
elif [ $CHAN -le 303400 ]; then
BAND="n50|n74|n75|n92|n94"
elif [ $CHAN -le 303600 ]; then
BAND="n74"
elif [ $CHAN -lt 305000 ]; then
BAND="-"
elif [ $CHAN -le 311800 ]; then
BAND="n24"
elif [ $CHAN -lt 361000 ]; then
BAND="-"
elif [ $CHAN -lt 376000 ]; then
BAND="n3"
elif [ $CHAN -eq 376000 ]; then
BAND="n3|n39"
elif [ $CHAN -le 384000 ]; then
BAND="n39"
elif [ $CHAN -lt 386000 ]; then
BAND="-"
elif [ $CHAN -le 398000 ]; then
BAND="n2|n25"
elif [ $CHAN -lt 399000 ]; then
BAND="n25"
elif [ $CHAN -eq 399000 ]; then
BAND="n25|n70"
elif [ $CHAN -lt 402000 ]; then
BAND="n70"
elif [ $CHAN -eq 402000 ]; then
BAND="n34|n70"
elif [ $CHAN -le 404000 ]; then
BAND="n34|n70"
elif [ $CHAN -le 405000 ]; then
BAND="n34"
elif [ $CHAN -lt 422000 ]; then
BAND="-"
elif [ $CHAN -le 434000 ]; then
BAND="n1|n65|n66"
elif [ $CHAN -le 440000 ]; then
BAND="n65|n66"
elif [ $CHAN -lt 460000 ]; then
BAND="-"
elif [ $CHAN -lt 470000 ]; then
BAND="n40"
elif [ $CHAN -eq 470000 ]; then
BAND="n30|n40"
elif [ $CHAN -le 472000 ]; then
BAND="n30|n40"
elif [ $CHAN -le 480000 ]; then
BAND="n40"
elif [ $CHAN -lt 496700 ]; then
BAND="-"
elif [ $CHAN -le 499000 ]; then
BAND="n53"
elif [ $CHAN -lt 499200 ]; then
BAND="-"
elif [ $CHAN -lt 514000 ]; then
BAND="n41|n90"
elif [ $CHAN -eq 514000 ]; then
BAND="n38|n41|n90"
elif [ $CHAN -lt 524000 ]; then
BAND="n38|n41|n90"
elif [ $CHAN -eq 524000 ]; then
BAND="n7|n38|n41|n90"
elif [ $CHAN -lt 538000 ]; then
BAND="n7|n41|n90"
elif [ $CHAN -eq 538000 ]; then
BAND="n7|n90"
elif [ $CHAN -lt 620000 ]; then
BAND="-"
elif [ $CHAN -lt 636667 ]; then
BAND="n77|n78"
elif [ $CHAN -le 646666 ]; then
BAND="n48|n77|n78"
elif [ $CHAN -le 653333 ]; then
BAND="n77|n78"
elif [ $CHAN -le 680000 ]; then
BAND="n77"
elif [ $CHAN -lt 693334 ]; then
BAND="-"
elif [ $CHAN -le 733333 ]; then
BAND="n79"
elif [ $CHAN -lt 743333 ]; then
BAND="-"
elif [ $CHAN -lt 795000 ]; then
BAND="n46"
elif [ $CHAN -eq 795000 ]; then
BAND="n46|n96"
elif [ $CHAN -le 875000 ]; then
BAND="n96"
else
BAND="-"
fi
}
if [ -z "$CHAN" ]; then
BAND="-"
elif [ "$CHAN" -lt 123400 ]; then
decode_lte
elif [ "$CHAN" -le 875000 ]; then
decode_nr5g
else
BAND="-"
fi
echo $BAND
exit
+24
View File
@@ -0,0 +1,24 @@
#!/usr/bin/lua
mtab = {}
vtab = {1, 2, 4, 8}
for i = 1, 32 do
mtab[i] = 0
end
numarg = #arg
for argval = 1, numarg do
band = arg[argval]
if tonumber(band) <= 128 then
idx = math.floor((band - 1) / 4) + 1
idxr = 33 - idx
val = vtab[(band - ((idx - 1) * 4 ))]
mtab[idxr] = mtab[idxr] + val
end
end
for i = 1, 32 do
mtab[i] = string.format("%X", mtab[i])
end
print(table.concat(mtab))
+9
View File
@@ -0,0 +1,9 @@
#!/bin/sh
LOOKFOR=$1
KILLLIST=$(ps | grep $LOOKFOR)
echo "$KILLLIST" | while read line; do
if `echo "$line" | grep "/$LOOKFOR" > /dev/null` ; then
PIDV=$(echo $line | grep -o "^[0-9]\{1,5\}" | grep -o "[0-9]\{1,5\}")
kill $PIDV
fi
done
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/lua
rsrp = tonumber(arg[1])
bw = tonumber(arg[2])
if bw == 1.4 then
n = 6
else
n = bw * 5
end
if tonumber(string.match(_VERSION, "%d+%.%d")) > 5.1 then
rssi = rsrp + (10 * math.log(n * 12, 10))
else
rssi = rsrp + (10 * math.log10(n * 12))
end
if rssi < -113 then
rssi = -113
elseif rssi > -51 then
rssi = -51
end
print(math.floor(rssi))
+18
View File
@@ -0,0 +1,18 @@
#!/bin/sh
PIN=$1
VALUE=$2
PIN_FILE=/sys/class/gpio/gpio$PIN
if [ -z "$PIN" -o -z "$VALUE" ]; then
exit 1
fi
echo $PIN >/sys/class/gpio/export
if [ $(cat $PIN_FILE/direction) = "out" ]; then
echo $VALUE >$PIN_FILE/value
fi
echo $PIN >/sys/class/gpio/unexport
+285
View File
@@ -0,0 +1,285 @@
#!/bin/sh
ATPORT=1
# SIMCOM获取基站信息
Fibocom_Cellinfo()
{
#baseinfo.gcom
OX=$( sendat $ATPORT "ATI")
OX=$( sendat $ATPORT "AT+CGEQNEG=1")
#cellinfo0.gcom
OX1=$( sendat $ATPORT "AT+COPS=3,0;+COPS?")
OX2=$( sendat $ATPORT "AT+COPS=3,2;+COPS?")
OX=$OX1" "$OX2
#cellinfo.gcom
OY1=$( sendat $ATPORT "AT+CREG=2;+CREG?;+CREG=0")
OY2=$( sendat $ATPORT "AT+CEREG=2;+CEREG?;+CEREG=0")
OY3=$( sendat $ATPORT "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
}
Fibocom_SIMINFO()
{
Debug "Fibocom_SIMINFO"
# 获取IMEI
IMEI=$( sendat $ATPORT "AT+CGSN" | sed -n '2p' )
# 获取IMSI
IMSI=$( sendat $ATPORT "AT+CIMI" | sed -n '2p' )
# 获取ICCID
ICCID=$( sendat $ATPORT "AT+ICCID" | grep -o "+ICCID:[ ]*[-0-9]\+" | grep -o "[-0-9]\{1,4\}" )
# 获取电话号码
phone=$( sendat $ATPORT "AT+CNUM" | grep "+CNUM:" )
}
#SIMCOM查找基站AT
Fibocom_AT()
{
Debug "Fibocom_AT"
ATPORT
All_CSQ
Fibocom_SIMINFO
Fibocom_Cellinfo
#温度
OX=$( sendat $ATPORT "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=$( sendat $ATPORT "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=$( sendat $ATPORT "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=$( sendat $ATPORT "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
}
+507
View File
@@ -0,0 +1,507 @@
#!/bin/sh
ATPORT=1
#Quectel
lte_bw() {
BW=$(echo $BW | grep -o "[0-5]\{1\}")
case $BW in
"0")
BW="1.4" ;;
"1")
BW="3" ;;
"2"|"3"|"4"|"5")
BW=$((($(echo $BW) - 1) * 5)) ;;
esac
}
#Quectel
nr_bw() {
BW=$(echo $BW | grep -o "[0-9]\{1,2\}")
case $BW in
"0"|"1"|"2"|"3"|"4"|"5")
BW=$((($(echo $BW) + 1) * 5)) ;;
"6"|"7"|"8"|"9"|"10"|"11"|"12")
BW=$((($(echo $BW) - 2) * 10)) ;;
"13")
BW="200" ;;
"14")
BW="400" ;;
esac
}
#查询信息强度
All_CSQ()
{
Debug "All_CSQ"
#信号
OX=$( sendat $ATPORT "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
}
Quectel_SIMINFO()
{
Debug "Quectel_SIMINFO"
# 获取IMEI
IMEI=$( sendat $ATPORT "AT+CGSN" | sed -n '2p' )
# 获取IMSI
IMSI=$( sendat $ATPORT "AT+CIMI" | sed -n '2p' )
# 获取ICCID
ICCID=$( sendat $ATPORT "AT+ICCID" | grep -o "+ICCID:[ ]*[-0-9]\+" | grep -o "[-0-9]\{1,4\}" )
# 获取电话号码
phone=$( sendat $ATPORT "AT+CNUM" | grep "+CNUM:" )
}
# SIMCOM获取基站信息
Quectel_Cellinfo()
{
# return
#cellinfo0.gcom
OX1=$( sendat $ATPORT "AT+COPS=3,0;+COPS?")
OX2=$( sendat $ATPORT "AT+COPS=3,2;+COPS?")
OX=$OX1" "$OX2
#cellinfo.gcom
OY1=$( sendat $ATPORT "AT+CREG=2;+CREG?;+CREG=0")
OY2=$( sendat $ATPORT "AT+CEREG=2;+CEREG?;+CEREG=0")
OY3=$( sendat $ATPORT "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
}
#Quectel公司查找基站AT
Quectel_AT()
{
Debug "Quectel_AT"
ATPORT
Quectel_SIMINFO
All_CSQ
Quectel_Cellinfo
#
OX=$( sendat $ATPORT 'AT+QENG="servingcell"' | grep "+QENG:" )
NR_NSA=$(echo $OX | grep -o -i "+QENG:[ ]\?\"NR5G-NSA\",")
NR_SA=$(echo $OX | grep -o -i "+QENG: \"SERVINGCELL\",[^,]\+,\"NR5G-SA\",\"[DFT]\{3\}\",")
if [ -n "$NR_NSA" ]; then
QENG=",,"$(echo $OX" " | grep -o -i "+QENG: \"LTE\".\+\"NR5G-NSA\"," | tr " " ",")
QENG5=$(echo $OX | grep -o -i "+QENG:[ ]\?\"NR5G-NSA\",[0-9]\{3\},[0-9]\{2,3\},[0-9]\{1,5\},-[0-9]\{2,5\},[-0-9]\{1,3\},-[0-9]\{2,3\},[0-9]\{1,7\},[0-9]\{1,3\}.\{1,6\}")
if [ -z "$QENG5" ]; then
QENG5=$(echo $OX | grep -o -i "+QENG:[ ]\?\"NR5G-NSA\",[0-9]\{3\},[0-9]\{2,3\},[0-9]\{1,5\},-[0-9]\{2,3\},[-0-9]\{1,3\},-[0-9]\{2,3\}")
if [ -n "$QENG5" ]; then
QENG5=$QENG5",,"
fi
fi
elif [ -n "$NR_SA" ]; then
QENG=$(echo $NR_SA | tr " " ",")
QENG5=$(echo $OX | grep -o -i "+QENG: \"SERVINGCELL\",[^,]\+,\"NR5G-SA\",\"[DFT]\{3\}\",[ 0-9]\{3,4\},[0-9]\{2,3\},[0-9A-F]\{1,10\},[0-9]\{1,5\},[0-9A-F]\{2,6\},[0-9]\{6,7\},[0-9]\{1,3\},[0-9]\{1,2\},-[0-9]\{2,5\},-[0-9]\{2,3\},[-0-9]\{1,3\}")
else
QENG=$(echo $OX" " | grep -o -i "+QENG: [^ ]\+ " | tr " " ",")
fi
# Debug "$QENG"
# Debug "$QENG5"
RAT=$(echo $QENG | cut -d, -f4 | grep -o "[-A-Z5]\{3,7\}")
case $RAT in
"GSM")
MODE="GSM"
;;
"WCDMA")
MODE="WCDMA"
CHANNEL=$(echo $QENG | cut -d, -f9)
RSCP=$(echo $QENG | cut -d, -f12)
RSCP="-"$(echo $RSCP | grep -o "[0-9]\{1,3\}")
ECIO=$(echo $QENG | cut -d, -f13)
ECIO="-"$(echo $ECIO | grep -o "[0-9]\{1,3\}")
;;
"LTE"|"CAT-M"|"CAT-NB")
MODE=$(echo $QENG | cut -d, -f5 | grep -o "[DFT]\{3\}")
if [ -n "$MODE" ]; then
MODE="$RAT $MODE"
else
MODE="$RAT"
fi
PCI=$(echo $QENG | cut -d, -f9)
CHANNEL=$(echo $QENG | cut -d, -f10)
LBAND=$(echo $QENG | cut -d, -f11 | grep -o "[0-9]\{1,3\}")
BW=$(echo $QENG | cut -d, -f12)
lte_bw
BWU=$BW
BW=$(echo $QENG | cut -d, -f13)
lte_bw
BWD=$BW
if [ -z "$BWD" ]; then
BWD="unknown"
fi
if [ -z "$BWU" ]; then
BWU="unknown"
fi
if [ -n "$LBAND" ]; then
LBAND="B"$LBAND" (Bandwidth $BWD MHz Down | $BWU MHz Up)"
fi
RSRP=$(echo $QENG | cut -d, -f15 | grep -o "[0-9]\{1,3\}")
if [ -n "$RSRP" ]; then
RSCP="-"$RSRP
RSRPLTE=$RSCP
fi
RSRQ=$(echo $QENG | cut -d, -f16 | grep -o "[0-9]\{1,3\}")
if [ -n "$RSRQ" ]; then
ECIO="-"$RSRQ
fi
RSSI=$(echo $QENG | cut -d, -f17 | grep -o "\-[0-9]\{1,3\}")
if [ -n "$RSSI" ]; then
CSQ_RSSI=$RSSI" dBm"
fi
SINRR=$(echo $QENG | cut -d, -f18 | grep -o "[0-9]\{1,3\}")
if [ -n "$SINRR" ]; then
if [ $SINRR -le 25 ]; then
SINR=$((($(echo $SINRR) * 2) -20))" dB"
fi
fi
if [ -n "$NR_NSA" ]; then
MODE="LTE/NR EN-DC"
echo "0" > /tmp/modnetwork
if [ -n "$QENG5" ] && [ -n "$LBAND" ] && [ "$RSCP" != "-" ] && [ "$ECIO" != "-" ]; then
PCI="$PCI, "$(echo $QENG5 | cut -d, -f4)
SCHV=$(echo $QENG5 | cut -d, -f8)
SLBV=$(echo $QENG5 | cut -d, -f9)
BW=$(echo $QENG5 | cut -d, -f10 | grep -o "[0-9]\{1,3\}")
if [ -n "$SLBV" ]; then
LBAND=$LBAND"<br />n"$SLBV
if [ -n "$BW" ]; then
nr_bw
LBAND=$LBAND" (Bandwidth $BW MHz)"
fi
if [ "$SCHV" -ge 123400 ]; then
CHANNEL=$CHANNEL", "$SCHV
else
CHANNEL=$CHANNEL", -"
fi
else
LBAND=$LBAND"<br />nxx (unknown NR5G band)"
CHANNEL=$CHANNEL", -"
fi
RSCP=$RSCP" dBm<br />"$(echo $QENG5 | cut -d, -f5)
SINRR=$(echo $QENG5 | cut -d, -f6 | grep -o "[0-9]\{1,3\}")
if [ -n "$SINRR" ]; then
if [ $SINRR -le 30 ]; then
SINR=$SINR"<br />"$((($(echo $SINRR) * 2) -20))" dB"
fi
fi
ECIO=$ECIO" (4G) dB<br />"$(echo $QENG5 | cut -d, -f7)" (5G) "
fi
fi
if [ -z "$LBAND" ]; then
LBAND="-"
else
if [ -n "$QCA" ]; then
QCA=$(echo $QCA | grep -o "\"S[CS]\{2\}\"[-0-9A-Z,\"]\+")
for QCAL in $(echo "$QCA"); do
if [ $(echo "$QCAL" | cut -d, -f7) = "2" ]; then
SCHV=$(echo $QCAL | cut -d, -f2 | grep -o "[0-9]\+")
SRATP="B"
if [ -n "$SCHV" ]; then
CHANNEL="$CHANNEL, $SCHV"
if [ "$SCHV" -gt 123400 ]; then
SRATP="n"
fi
fi
SLBV=$(echo $QCAL | cut -d, -f6 | grep -o "[0-9]\{1,2\}")
if [ -n "$SLBV" ]; then
LBAND=$LBAND"<br />"$SRATP$SLBV
BWD=$(echo $QCAL | cut -d, -f3 | grep -o "[0-9]\{1,3\}")
if [ -n "$BWD" ]; then
UPDOWN=$(echo $QCAL | cut -d, -f13)
case "$UPDOWN" in
"UL" )
CATYPE="CA"$(printf "\xe2\x86\x91") ;;
"DL" )
CATYPE="CA"$(printf "\xe2\x86\x93") ;;
* )
CATYPE="CA" ;;
esac
if [ $BWD -gt 14 ]; then
LBAND=$LBAND" ("$CATYPE", Bandwidth "$(($(echo $BWD) / 5))" MHz)"
else
LBAND=$LBAND" ("$CATYPE", Bandwidth 1.4 MHz)"
fi
fi
LBAND=$LBAND
fi
PCI="$PCI, "$(echo $QCAL | cut -d, -f8)
fi
done
fi
fi
if [ $RAT = "CAT-M" ] || [ $RAT = "CAT-NB" ]; then
LBAND="B$(echo $QENG | cut -d, -f11) ($RAT)"
fi
;;
"NR5G-SA")
MODE="NR5G-SA"
if [ -n "$QENG5" ]; then
#AT+qnwcfg="NR5G_AMBR" #查询速度
MODE="$RAT $(echo $QENG5 | cut -d, -f4)"
PCI=$(echo $QENG5 | cut -d, -f8)
CHANNEL=$(echo $QENG5 | cut -d, -f10)
LBAND=$(echo $QENG5 | cut -d, -f11)
BW=$(echo $QENG5 | cut -d, -f12)
nr_bw
LBAND="n"$LBAND" (Bandwidth $BW MHz)"
RSCP=$(echo $QENG5 | cut -d, -f13)
ECIO=$(echo $QENG5 | cut -d, -f14)
if [ "$CSQ_PER" = "-" ]; then
RSSI=$(rsrp2rssi $RSCP $BW)
CSQ_PER=$((100 - (($RSSI + 51) * 100/-62)))"%"
CSQ=$((($RSSI + 113) / 2))
CSQ_RSSI=$RSSI" dBm"
fi
SINRR=$(echo $QENG5 | cut -d, -f15 | grep -o "[0-9]\{1,3\}")
if [ -n "$SINRR" ]; then
if [ $SINRR -le 30 ]; then
SINR=$((($(echo $SINRR) * 2) -20))" dB"
fi
fi
fi
;;
esac
#
OX=$( sendat $ATPORT "AT+QCAINFO" | grep "+QCAINFO:" )
QCA=$(echo $OX" " | grep -o -i "+QCAINFO: \"S[CS]\{2\}\".\+NWSCANMODE" | tr " " ",")
#
OX=$( sendat $ATPORT 'AT+QCFG="nwscanmode"' | grep "+QCAINFO:" )
QNSM=$(echo $OX | grep -o -i "+QCFG: \"NWSCANMODE\",[0-9]")
QNSM=$(echo "$QNSM" | grep -o "[0-9]")
if [ -n "$QNSM" ]; then
MODTYPE="6"
case $QNSM in
"0" )
NETMODE="1" ;;
"1" )
NETMODE="3" ;;
"2"|"5" )
NETMODE="5" ;;
"3" )
NETMODE="7" ;;
esac
fi
if [ -n "$QNWP" ]; then
MODTYPE="6"
case $QNWP in
"AUTO" )
NETMODE="1" ;;
"WCDMA" )
NETMODE="5" ;;
"LTE" )
NETMODE="7" ;;
"LTE:NR5G" )
NETMODE="8" ;;
"NR5G" )
NETMODE="9" ;;
esac
fi
#
OX=$( sendat $ATPORT 'AT+QNWPREFCFG="mode_pref"' | grep "+QNWPREFCFG:" )
QNWP=$(echo $OX | grep -o -i "+QNWPREFCFG: \"MODE_PREF\",[A-Z5:]\+" | cut -d, -f2)
#温度
OX=$( sendat $ATPORT 'AT+QTEMP' | grep "+QTEMP:" )
QTEMP=$(echo $OX | grep -o -i "+QTEMP: [0-9]\{1,3\}")
if [ -z "$QTEMP" ]; then
QTEMP=$(echo $OX | grep -o -i "+QTEMP:[ ]\?\"XO[_-]THERM[_-][^,]\+,[\"]\?[0-9]\{1,3\}" | grep -o "[0-9]\{1,3\}")
fi
if [ -z "$QTEMP" ]; then
QTEMP=$(echo $OX | grep -o -i "+QTEMP:[ ]\?\"MDM-CORE-USR.\+[0-9]\{1,3\}\"" | cut -d\" -f4)
fi
if [ -z "$QTEMP" ]; then
QTEMP=$(echo $OX | grep -o -i "+QTEMP:[ ]\?\"MDMSS.\+[0-9]\{1,3\}\"" | cut -d\" -f4)
fi
if [ -n "$QTEMP" ]; then
CTEMP=$(echo $QTEMP | grep -o -i "[0-9]\{1,3\}")$(printf "\xc2\xb0")"C"
fi
#
OX=$( sendat $ATPORT "AT+QRSRP" | grep "+QRSRP:" )
QRSRP=$(echo "$OX" | grep -o -i "+QRSRP:[^,]\+,-[0-9]\{1,5\},-[0-9]\{1,5\},-[0-9]\{1,5\}[^ ]*")
if [ -n "$QRSRP" ] && [ "$RAT" != "WCDMA" ]; then
QRSRP1=$(echo $QRSRP | cut -d, -f1 | grep -o "[-0-9]\+")
QRSRP2=$(echo $QRSRP | cut -d, -f2)
QRSRP3=$(echo $QRSRP | cut -d, -f3)
QRSRP4=$(echo $QRSRP | cut -d, -f4)
QRSRPtype=$(echo $QRSRP | cut -d, -f5)
if [ "$QRSRPtype" == "NR5G" ]; then
if [ -n "$NR_SA" ]; then
RSCP=$QRSRP1
if [ -n "$QRPRP2" -a "$QRSRP2" != "-32768" ]; then
RSCP1="RxD "$QRSRP2
fi
if [ -n "$QRSRP3" -a "$QRSRP3" != "-32768" ]; then
RSCP=$RSCP" dBm<br />"$QRSRP3
fi
if [ -n "$QRSRP4" -a "$QRSRP4" != "-32768" ]; then
RSCP1="RxD "$QRSRP4
fi
else
RSCP=$RSRPLTE
if [ -n "$QRSRP1" -a "$QRSRP1" != "-32768" ]; then
RSCP=$RSCP" (4G) dBm<br />"$QRSRP1
if [ -n "$QRSRP2" -a "$QRSRP2" != "-32768" ]; then
RSCP="$RSCP,$QRSRP2"
if [ -n "$QRSRP3" -a "$QRSRP3" != "-32768" ]; then
RSCP="$RSCP,$QRSRP3"
if [ -n "$QRSRP4" -a "$QRSRP4" != "-32768" ]; then
RSCP="$RSCP,$QRSRP4"
fi
fi
RSCP=$RSCP" (5G) "
fi
fi
fi
elif [ "$QRSRP2$QRSRP3$QRSRP4" != "-44-44-44" -a -z "$QENG5" ]; then
RSCP=$QRSRP1
if [ "$QRSRP3$QRSRP4" == "-140-140" -o "$QRSRP3$QRSRP4" == "-44-44" -o "$QRSRP3$QRSRP4" == "-32768-32768" ]; then
RSCP1="RxD "$(echo $QRSRP | cut -d, -f2)
else
RSCP=$RSCP" dBm (RxD "$QRSRP2" dBm)<br />"$QRSRP3
RSCP1="RxD "$QRSRP4
fi
fi
fi
}
+303
View File
@@ -0,0 +1,303 @@
#!/bin/sh
ATPORT=1
#查询信息强度
All_CSQ()
{
Debug "All_CSQ"
#信号
OX=$( sendat $ATPORT "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=$( sendat 2 "ATI")
OX=$( sendat 2 "AT+CGEQNEG=1")
#cellinfo0.gcom
OX1=$( sendat 2 "AT+COPS=3,0;+COPS?")
OX2=$( sendat 2 "AT+COPS=3,2;+COPS?")
OX=$OX1" "$OX2
#cellinfo.gcom
OY1=$( sendat 2 "AT+CREG=2;+CREG?;+CREG=0")
OY2=$( sendat 2 "AT+CEREG=2;+CEREG?;+CEREG=0")
OY3=$( sendat 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=$( sendat $ATPORT "AT+CGSN" | sed -n '2p' )
# 获取IMSI
IMSI=$( sendat $ATPORT "AT+CIMI" | sed -n '2p' )
# 获取ICCID
ICCID=$( sendat $ATPORT "AT+ICCID" | grep -o "+ICCID:[ ]*[-0-9]\+" | grep -o "[-0-9]\{1,4\}" )
# 获取电话号码
phone=$( sendat $ATPORT "AT+CNUM" | grep "+CNUM:" )
}
#SIMCOM查找基站AT
SIMCOM_AT()
{
Debug "SIMCOM_AT"
ATPORT
All_CSQ
SIMCOM_SIMINFO
SIMCOM_Cellinfo
#温度
OX=$( sendat $ATPORT "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=$( sendat $ATPORT "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=$( sendat $ATPORT "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=$( sendat $ATPORT "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
}
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
rec=$(sendat $1 $2)
echo $rec >> /tmp/result.at
+27
View File
@@ -0,0 +1,27 @@
#!/bin/sh
en=1 #调试开关:0关闭,1打开 ,2输出到文件
outfile="/tmp/cpe.log" #输出文件
#日志信息
Debug()
{
tim=$(date "+%Y-%m-%d %H:%M:%S") #获取系统时间
if [ $en == 1 ]; then
echo $tim $1 #打印输出
elif [ $en == 2 ]; then
echo $tim $1 >> $outfile #输出到文件
fi
}
ATPORT()
{
MODEMNAME="ALL"
# ATPORT=$(uci -q get modem.@ndis[0].tyyusb)
lsusb=$( lsusb )
RDFM650=$(echo "$lsusb" | grep "ID 2cb7:0a05 " | wc -l)
if [ "$RDFM650" == 1 ]; then
ATPORT=0
MODEMNAME="FM650CN"
else
ATPORT=2
fi
}
+2
View File
@@ -0,0 +1,2 @@
#!/bin/sh
rm -f /tmp/result.at
+418
View File
@@ -0,0 +1,418 @@
#!/bin/sh
source /usr/share/cpe/cpedebug
source /usr/share/cpe/SIMCOM
source /usr/share/cpe/Quectel
source /usr/share/cpe/Fibocom
#初值化数据结构
InitData()
{
Date=''
CHANNEL="-"
ECIO="-"
RSCP="-"
ECIO1=" "
RSCP1=" "
NETMODE="-"
LBAND="-"
PCI="-"
CTEMP="-"
MODE="-"
SINR="-"
IMEI='-'
IMSI='-'
ICCID='-'
phone='-'
conntype=''
Model=''
}
#写数据
SETData()
{
{
echo $Model #'RM520N-GL'
echo $conntype #'conntype'
echo '1e0e:9001'
echo $COPS #运营商
echo 'ttyUSB2' #端口
echo $TEMP #温度
echo 'QMI' #协议
echo '---------------------------------'
echo $IMEI #imei
echo $IMSI #imsi
echo $ICCID #iccid
echo $phone #phone
echo '---------------------------------'
echo $MODE
echo $CSQ
echo $CSQ_PER
echo $CSQ_RSSI
echo $ECIO #参考信号接收质量 RSRQ ecio
echo $ECIO1 #参考信号接收质量 RSRQ ecio1
echo $RSCP #参考信号接收功率 RSRP rscp0
echo $RSCP1 #参考信号接收功率 RSRP rscp1
echo $SINR #信噪比 SINR rv["sinr"]
echo $NETMODE #连接状态监控 rv["netmode"]
echo '---------------------------------'
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 $Date
echo $MODTYPE
echo $QTEMP
} > /tmp/cpe_cell.file
}
ATPORT=1
# 自动处理模块信号
AUTO_CPE()
{
Debug "------------------------------端口$ATPORT---------------------------"
Debug "AUTO_CPE"
Date=$(date "+%Y-%m-%d %H:%M:%S")
#检测设备是否准备好
rec=$(sendat $ATPORT "AT" 500 |grep OK |wc -l)
if [ $rec == "1" ];then
sleep 1s
else
sleep 5s
return
fi
#读取模块信息
# if [ "$conntype" == "" ]; then
# {
# Debug "计算模块"
# ATATI=$( sendat $ATPORT "ATI")
# Getconntype=$(echo "$ATATI" | sed -n '2p')
# if [ "$Getconntype" == "" ]; then
# {
# sleep 5s
# return
# }
# fi
# Model=$(echo "$ATATI" | sed -n '3p')
# conntype=$Getconntype
# }
# fi
Debug "读取模块信息 计算模块"
ATATI=$( sendat $ATPORT "ATI")
Getconntype=$(echo "$ATATI" | sed -n '2p')
if [ "$Getconntype" == "" ]; then
{
sleep 5s
return
}
fi
Model=$(echo "$ATATI" | sed -n '3p')
conntype=$Getconntype
cpin=$( sendat $ATPORT "at+cpin?")
ERR=$(echo "$cpin" | grep "ERROR")
if [ ! -z "$ERR" ]; then # No SIM
Debug "No SIM"
sleep 5s
return
fi
RDY=$(echo "$cpin" | grep "READY")
if [ -z "$RDY" ]; then # SIM Locked
Debug "Correct Pin"
sleep 5s
return
else
Debug "Not Locked"
fi
#执行对应模块
if [ $(echo $conntype |grep "Quectel"| wc -l) -ge 1 ];then
{
Quectel_AT
}
elif [ $(echo $conntype |grep "SIMCOM"| wc -l) -ge 1 ];then
{
SIMCOM_AT
}
elif [ $(echo $conntype |grep "Fibocom"| wc -l) -ge 1 ];then
{
Fibocom_AT
}
else
{
Debug "null "
}
fi
}
#重新联网
modem_reset()
{
echo "Abnormal network restart"
lsusb=$( lsusb )
RDFM650=$(echo "$lsusb" | grep "ID 2cb7:0a05 " | wc -l)
echo "RDFM650 $RDFM650"
if [ "$RDFM650" == 1 ]; then
{
GTRNDIS=$(sendat $ATPORT "AT+GTRNDIS=1,1" 500 |grep OK |wc -l)
sleep 2s
}
else
{
start="$( /etc/init.d/modem stop )"
sleep 2s
start="$( /etc/init.d/modem start )"
sleep 5s
}
fi
}
#检测SIM卡是否插入,10次检测不到则重启模块
check_sim()
{
while [ 1 ]
do
enabled=$(uci -q get modem.@ndis[0].enabled)
if [ $enabled == '1' ] ;then
echo "Check the sim"
rec=$( sendat 2 "AT+CPIN?")
rec1=$(echo $rec | grep "READY" | wc -l )
if [ $rec1 == 1 ]; then
x=0
echo "SIM is READY"
else
let x++
if [ $x == 10 ]; then
echo "SIM abnormal restart"
modem_reset #重启模块
x=0
fi
fi
fi
sleep 6s
done
}
#检测网络状态第一次开机
chenk_firstdns()
{
while [ 1 ]
do
enabled=$(uci -q get modem.@ndis[0].enabled)
en1=$(uci -q get modem.@ndis[0].en)
if [ $enabled == '1' ] ;then
if [ $en1 == '1' ] ;then
echo "------------------------------开启任务---------------------------"
ipadd=$(uci -q get modem.@ndis[0].ipaddress)
ping -c 1 -w 1 $ipadd > /dev/null 2>&1
if [ $? -eq 0 ];then
echo "网络连接正常"
xx=0
return
else
echo "网络连接异常 $ipadd"
let xx++
let pxx++
fi
fi
if [ $xx == 5 ];then
xx=0
modem_reset
fi
if [ $pxx == 10 ];then
xx=0
pxx=0
return
fi
echo "------------------------------结束任务---------------------------"
fi
sleep 1s
done
}
#检测网络状态
chenk_dns()
{
en1=$(uci -q get modem.@ndis[0].en)
if [ $en1 == '1' ] ;then
echo "------------------------------开启任务---------------------------"
ipadd=$(uci -q get modem.@ndis[0].ipaddress)
ping -c 1 -w 1 $ipadd > /dev/null 2>&1
if [ $? -eq 0 ];then
echo "网络连接正常"
xx=0
else
echo "网络连接异常 $ipadd 次数$xx"
let xx++
fi
fi
an=$(uci -q get modem.@ndis[0].an)
if [ $xx == $an ];then
xx=0
modem_reset
fi
echo "------------------------------结束任务---------------------------"
}
# 信号任务
chenk_Task()
{
while [ 1 ]
do
enabled=$(uci -q get modem.@ndis[0].enabled)
if [ $enabled == '1' ] ;then
ATPORT
Debug "------------------------------开启任务---------------------------"
AUTO_CPE
SETData
chenk_dns
Debug "------------------------------结束任务---------------------------"
fi
sleep 10s
done
}
#注册网卡
RegisterNetwork()
{
# ATPORT
Debug "RegisterNetwork 注册网卡 $ $MODEMNAME"
# if [ "$MODEMNAME" == "FM650CN" ]; then
# getFM650=$(uci -q get network.wwan5g |grep "interface"| wc -l)
# if [ $getFM650 == "0" ] ;then
# uci set network.wwan5g=interface
# uci set network.wwan5g.device='usb0'
# uci set network.wwan5g.proto=dhcp
# uci commit network
# uci set firewall.@zone[1].network="wan wan6 wwan5g wwan5g6 wlan"
# uci commit firewall
# $(/etc/init.d/network reload)
# fi
# getFM650=$(uci -q get network.wwan5g6|grep "interface"| wc -l)
# if [ $getFM650 == "0" ] ;then
# uci set network.wwan5g6=interface
# uci set network.wwan5g6.device='usb0'
# uci set network.wwan5g6.proto='dhcpv6'
# uci set network.wwan5g6.reqaddress='try'
# uci set network.wwan5g6.reqprefix='auto'
# uci set network.wwan5g6._orig_ifname='usb0'
# uci set network.wwan5g6._orig_bridge='false'
# uci set network.wwan5g6.extendprefix='1'
# uci commit network
# uci set firewall.@zone[1].network="wan wan6 wwan wwan5g wwan5g6 wlan"
# uci commit firewall
# $(/etc/init.d/network reload)
# fi
# fi
if [ $(uci -q get network.wwan5g |grep "interface"| wc -l) == "0" ] ;then
uci set network.wwan5g=interface
if [ "$MODEMNAME" == "FM650CN" ]; then
uci set network.wwan5g.device='usb0'
else
uci set network.wwan5g.device='wwan0'
fi
uci set network.wwan5g.proto=dhcp
uci commit network
uci set firewall.@zone[1].network="wan wan6 wwan5g wwan5g6 wlan"
uci commit firewall
$(/etc/init.d/network reload)
fi
if [ $(uci -q get network.wwan5g6 |grep "interface"| wc -l) == "0" ] ;then
uci set network.wwan5g6=interface
if [ "$MODEMNAME" == "FM650CN" ]; then
uci set network.wwan5g6.device='usb0'
uci set network.wwan5g6._orig_ifname='usb0'
else
uci set network.wwan5g6.device='wwan0'
uci set network.wwan5g6._orig_ifname='wwan0'
fi
uci set network.wwan5g6.proto='dhcpv6'
uci set network.wwan5g6.reqaddress='try'
uci set network.wwan5g6.reqprefix='auto'
uci set network.wwan5g6._orig_bridge='false'
uci set network.wwan5g6.extendprefix='1'
uci commit network
uci set firewall.@zone[1].network="wan wan6 wwan wwan5g wwan5g6 wlan"
uci commit firewall
$(/etc/init.d/network reload)
fi
if [ "$MODEMNAME" == "FM650CN" ]; then
if [ $(uci -q get network.wwan5g.device |grep "usb0"| wc -l) == "0" ] ;then
uci set network.wwan5g.device='usb0'
uci commit network
$(/etc/init.d/network reload)
fi
if [ $(uci -q get network.wwan5g6.device |grep "usb0"| wc -l) == "0" ] ;then
uci set network.wwan5g6.device='usb0'
uci commit network
$(/etc/init.d/network reload)
fi
else
if [ $(uci -q get network.wwan5g.device |grep "wwan0"| wc -l) == "0" ] ;then
uci set network.wwan5g.device='wwan0'
uci commit network
$(/etc/init.d/network reload)
fi
if [ $(uci -q get network.wwan5g6.device |grep "wwan0"| wc -l) == "0" ] ;then
uci set network.wwan5g6._orig_ifname='wwan0'
uci set network.wwan5g6.device='wwan0'
uci commit network
$(/etc/init.d/network reload)
fi
fi
}
# 运行入口
first()
{
Debug "开启RSSI服务"
# 初值化数据结构
InitData
Debug "初值化数据完成"
sleep 1s
# 计算模块AT端口号
ATPORT
# 注册网卡
RegisterNetwork
# 第一次获取模块信息数据
AUTO_CPE
# 保存结构数据
SETData
#开机直接运行网络注册
modem_reset
# 第一次开机检测是否联网
chenk_firstdns
chenk_Task
}
#############################################
# #
# 进入主函数 #
# #
#############################################
first
@@ -0,0 +1,11 @@
{
"luci-app-cpe": {
"description": "Grant UCI access for luci-app-cpe",
"read": {
"uci": [ "modem" ]
},
"write": {
"uci": [ "modem" ]
}
}
}