完善热插拔功能

This commit is contained in:
ling 2024-04-07 21:39:24 +08:00
parent fa9149ef57
commit 149acb1916
5 changed files with 507 additions and 707 deletions

View File

@ -1,157 +0,0 @@
# OpenWRT软件开发
# 一、相关文档
UCI系统https://openwrt.org/docs/guide-user/base-system/uci
OpenWRT命令解释器https://openwrt.org/zh/docs/guide-user/base-system/user.beginner.cli
热插拔https://openwrt.org/zh/docs/guide-user/base-system/hotplug
网络基础配置https://openwrt.org/zh/docs/guide-user/base-system/basic-networking
Web界面相关
- 自定义主题https://github.com/openwrt/luci/wiki/HowTo:-Create-Themes
- 模块参考https://github.com/openwrt/luci/wiki/Modules
- 模板参考https://github.com/openwrt/luci/wiki/Templates
- 实例参考https://blog.csdn.net/byb123/article/details/77921486/
- 实例参考https://api.dandelioncloud.cn/article/details/1546689075828965377
# 二、网络配置
在任何网络配置更改(通过uci或其他方式)之后,你需要输入以下内容来重载网络配置:
```shell
service network reload
```
如果您安装的版本没有提供`service`命令,则可以使用:
```shell
/etc/init.d/network reload
```
# 三、拨号程序
拨号步骤
```shell
run_dial()
{
local enabled
config_get_bool enabled $1 enabled
if [ "$enabled" = "1" ]; then
local apn
local user
local password
local auth
local ipv6
local device
#获取配置
config_get apn $1 apn
config_get user $1 user
config_get password $1 password
config_get auth $1 auth
config_get ipv6 $1 ipv6
config_get device $1 device
devname="$(basename "$device")" #获取调制解调器/dev/cdc-wdm0->cdc-wdm0
devicepath="$(find /sys/class/ -name $devname)" #找到设备快捷路径/sys/class/net/cdc-wdm0
devpath="$(readlink -f $devicepath/device/)" #找出连接的物理设备路径/sys/devices/.../
ifname="$( ls "$devpath"/net )" #获取设备名/sys/devices/.../net->cdc-wdm0
procd_open_instance #打开一个示例
procd_set_param command quectel-CM #设置参数
if [ "$ipv6" = 1 ]; then
procd_append_param command -4 -6
fi
if [ "$apn" != "" ];then
procd_append_param command -s $apn
fi
if [ "$user" != "" ]; then
procd_append_param command $user
fi
if [ "$password" != "" ]; then
procd_append_param command $password
fi
if [ "$auth" != "" ]; then
procd_append_param command $auth
fi
if [ "$device" != "" ]; then
procd_append_param command -i $ifname
fi
procd_set_param respawn
procd_close_instance
if [ -d /sys/class/net/rmnet_mhi0 ]; then
pre_set rmnet_mhi0.1
elif [ -d /sys/class/net/wwan0_1 ]; then
pre_set wwan0_1
elif [ -d /sys/class/net/wwan0.1 ]; then
pre_set wwan0.1
elif [ -d /sys/class/net/wwan0 ]; then
pre_set wwan0
fi
fi
sleep 15
}
```
# 四、shell
获取设备物理路径
device_bus_path.sh
```shell
#!/bin/sh
#获取物理设备地址
local device_name="$(basename "$1")"
local device_path="$(find /sys/class/ -name $device_name)"
local device_physical_path="$(readlink -f $device_path/device/)"
local device_bus_path=$(dirname "$device_physical_path")
return $device_bus_path
```
设置配置
setConfig.sh
```shell
#!/bin/sh
#处理获取到的路径
substr="${parentDir/\/sys\/devices\//}"
echo $substr
#写入到配置中
uci set modem.modem1.path="$substr"
uci commit modem2
```
# 五、Git
查看当前文件的权限
```shell
git ls-tree HEAD
```
直接修改
修改提交文件的权限
```shell
git update-index --chmod=+x <file>
```
提交时修改
```shell
git add --chmod=+x -- <file>
```

View File

@ -1,420 +0,0 @@
<%+header%>
<%
local fs = require "nixio.fs"
local uci = luci.model.uci.cursor()
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"></script>
<script type="text/javascript">//<![CDATA[
window.onload=function()
{
//获取模块选择框元素
var modem_select = document.getElementById('modem_select');
// 更换模组AT串口时触发
modem_select.addEventListener('change', function() {
// 更新数据
update();
});
}
//获取小区信息视图
function get_cell_info_view(network_mode_info)
{
//初始化视图
var cell_info_view='';
//遍历每一条信息
for (var info of network_mode_info)
{
//遍历每一条信息里的键
for (var key in info)
{
var full_name=info["full_name"];
if (full_name==null)
{
full_name='';
}
//不显示空的信息
if (key!="full_name"&&info[key]!="")
{
cell_info_view+='<tr><td width="20%" title="'+full_name+'">'+<%: key %>+' :</td><td id="'+key+'">'+info[key]+'</td><td></td></tr>';
// cell_info_view+='<tr><td width="20%" title="'+full_name+'">'+<%:Message%>+' :</td><td id="'+key+'">'+info[key]+'</td><td></td></tr>';
}
}
}
return cell_info_view;
}
//获取小区信息
function show_cell_info(cell_info) {
//获取网络模式
var network_mode=Object.keys(cell_info)[0];
//获取网络模式下的信息
var network_mode_info=cell_info[network_mode];
//获取表格
var cell_info_Element=document.getElementById("cell_info");
//初始化视图
var cell_info_view='<caption>'+<%:network_mode%>+'</caption>';
if (network_mode=="EN-DC Mode")
{
var lte=network_mode_info[0]["LTE"];
cell_info_view+='<tr><td colspan="3">LTE</td></tr>';
cell_info_view+=get_cell_info_view(lte);
var nsa=network_mode_info[1]["NR5G-NSA"];
cell_info_view+='<tr><td colspan="3">NR5G-NSA</td></tr>';
cell_info_view+=get_cell_info_view(nsa);
}
else
{
// cell_info_view+='<tr><td colspan="3">NR5G-NSA</td></tr>';
cell_info_view+=get_cell_info_view(network_mode_info);
}
cell_info_Element.innerHTML=cell_info_view;
}
// 更新模组数据
function update()
{
var at_port="";
if (modem_select.options.length!=0) {
at_port=modem_select.options[modem_select.selectedIndex].value;
}
else {
return
}
XHR.get('<%=luci.dispatcher.build_url("admin", "network", "modem", "get_modem_info")%>', {"port":at_port},
function(x, modem_info)
{
console.log(modem_info);
var base_info=modem_info["base_info"];
var connect_status=base_info["connect_status"];
for (var key in base_info)
{
var base_info_Element=document.getElementById(key);
if (base_info_Element!=null)
{
base_info_Element.innerHTML=base_info[key];
}
}
var more_info=modem_info["more_info"];
//基本信息
base_info=more_info["base_info"];
for (var key in base_info)
{
var base_info_Element=document.getElementById(key);
if (base_info_Element!=null)
{
base_info_Element.innerHTML=base_info[key];
}
}
//SIM卡信息
var sim_info=more_info["sim_info"];
for (var key in sim_info)
{
var sim_info_Element=document.getElementById(key);
if (sim_info_Element!=null)
{
sim_info_Element.innerHTML=sim_info[key];
}
}
// 信息显示控制
// 隐藏提示信息
document.getElementById("cbi-info").style.display="none";
// 显示基本信息
document.getElementById("cbi-baseinfo").style.display="block";
// 显示SIM卡信息
document.getElementById("cbi-siminfo").style.display="block";
//网络信息
var network_info=more_info["network_info"];
for (var key in network_info)
{
var network_info_Element=document.getElementById(key);
if (network_info_Element!=null)
{
network_info_Element.innerHTML=network_info[key];
}
}
//小区信息
var cell_info=more_info["cell_info"];
if (cell_info!=null)
{
show_cell_info(cell_info);
}
// 信息显示控制
if (connect_status=="connect")
{
// 显示网络信息
document.getElementById("cbi-networkinfo").style.display="block";
// 显示小区信息
document.getElementById("cbi-cellinfo").style.display="block";
}
else
{
// 隐藏网络信息
document.getElementById("cbi-networkinfo").style.display="none";
// 隐藏小区信息
document.getElementById("cbi-cellinfo").style.display="none";
}
}
);
}
// 定时触发更新AT串口和模组数据
XHR.poll(5,'<%=luci.dispatcher.build_url("admin", "network", "modem", "get_at_port")%>', null,
function(x, port)
{
//获取模块选择框元素
var modem_select = document.getElementById('modem_select');
// 记录所选
var selected=modem_select.value;
// 删除原来的选项
modem_select.options.length=0;
// 更新keyAT串口value模块名称
for (var key in port)
{
var option = document.createElement('option');
option.text = port[key].trim();
option.value = key;
modem_select.appendChild(option);
}
// 恢复原来的选择
for (let i = 0; i < modem_select.options.length; i++)
{
if(modem_select.options[i].value == selected)
{
modem_select.selectedIndex=i;
break;
}
}
// 信息显示控制
if (port.length==0)
{
// 更新提示信息
document.getElementById("info_message").innerHTML="<strong><%:No modems found%></strong>";
// 隐藏提示信息
document.getElementById("cbi-info").style.display="block";
// 隐藏基本信息
document.getElementById("cbi-baseinfo").style.display="none";
// 隐藏SIM卡信息
document.getElementById("cbi-siminfo").style.display="none";
// 隐藏网络信息
document.getElementById("cbi-networkinfo").style.display="none";
// 隐藏小区信息
document.getElementById("cbi-cellinfo").style.display="none";
}
update();
}
);
modemtype=0;
cell=0;
portx="-";
phonenx = "";
hided = 0;
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('net_type').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('manufacturer').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 name="content"><%:Modem Information%></h2>
<div class="cbi-map-descr"><%:%></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-info" style="display: block;">
<h3><%:Message%></h3>
<table width="550" border="0">
<tr>
<td width="10%"></td>
<td width="60%">
<div align="left" id="info_message" style="font-size:1.875em">
<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle"/>
<%:Loading modem status%>...
</div>
</td>
<td width="30%"></td>
</tr>
</table>
</fieldset>
<fieldset class="cbi-section" id="cbi-baseinfo" style="display: none;">
<h3><%:Base Information%></h3>
<table width="100%" cellspacing="10">
<tr><td width="20%"><%:Modem%> :</td><td id="modem_name">
<select name="modem_select" id="modem_select"></select>
</td><td></td></tr>
<tr><td width="20%"><%:Manufacturer%> :</td><td id="manufacturer"></td><td></td></tr>
<tr><td width="20%"><%:Revision%>:</td><td id="revision"></td><td></td></tr>
<tr><td width="20%"><%:Data Interface%> :</td><td id="data_interface"></td><td></td></tr>
<tr><td width="20%"><%:Mode%> :</td><td id="mode"></td><td></td></tr>
<tr><td width="20%"><%:AT Port%> :</td><td id="at_port"></td><td></td></tr>
<tr><td width="20%"><%:Mobile Network%> :</td><td id="network"></td><td></td></tr>
<tr><td width="20%"><%:Temperature%> :</td><td id="temperature"></td><td></td></tr>
<tr><td width="20%"><%:Update Time%> :</td><td id="update_time"></td><td></td></tr>
</table>
</fieldset>
<% if nosms == 0 then %>
<% end %>
<fieldset class="cbi-section" id="cbi-siminfo" style="display: none;">
<h3><%:SIM Information%></h3>
<table width="100%" cellspacing="10">
<tr><td width="20%"><%:ISP%> :</td><td id="isp"></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 Number%> :</td><td id="sim_number"></td><td></td></tr>
</table>
</fieldset>
<fieldset class="cbi-section" id="cbi-networkinfo" style="display: none;">
<h3><%:Network Information%></h3>
<table width="100%" cellspacing="10">
<tr><td width="20%"><%:Network Type%> :</td><td id="network_type"></td><td></td></tr>
</table>
</fieldset>
<fieldset class="cbi-section" id="cbi-cellinfo" style="display: none;">
<h3><%:Cell Information%></h3>
<table width="100%" cellspacing="10" id="cell_info">
<!-- <tr><td width="20%"><%:MCC/MNC 国家码/网络码 %> :</td><td id="nr_mcc"></td><td id="nr_mnc"></td></tr>
<tr><td width="20%"><%:Duplex Mode 双工模式 %> :</td><td id="nr_duplex_mode"></td><td></td></tr>
<tr><td width="20%"><%:Cell ID 小区ID %> :</td><td><ul><span id="nr_cell_id" class="r"></span><span id="cidn" class="r"></span></ul></td><td></td></tr>
<tr><td width="20%"><%:Physical Cell ID 物理小区ID %> :</td><td id="nr_physical_cell_id"></td><td></td></tr>
<tr><td width="20%"><%:TAC 跟踪区编码 %> :</td><td id="nr_tac"></td><td></td></tr>
<tr><td width="20%" title="<%:Absolute Radio-Frequency Channel Number%>"><%:ARFCN 绝对射频信道号 : %></td><td id="nr_arfcn"></td><td></td></tr>
<tr><td width="20%"><%:Band 频段 : %></td><td id="nr_band"></td><td></td></tr>
<tr><td width="20%"><%:UL Bandwidth 上行带宽 %> :</td><td id="nr_ul_bandwidth"></td><td></td></tr>
<tr><td width="20%"><%:DL Bandwidth 下行带宽 %> :</td><td id="nr_dl_bandwidth"></td><td></td></tr>
<tr><td width="20%" title="<%:Reference Signal Received Power%>"><%:RSRP 参考信号接收功率 %> :</td><td id="nr_rsrp"></td><td></td></tr>
<tr><td width="20%" title="<%:Reference Signal Received Quality%>"><%:RSRQ 参考信号接收质量 %> :</td><td id="nr_rsrq"></td><td></td></tr>
<tr><td width="20%" title="<%:Signal to Interference plus Noise Ratio Bandwidth%>"><%:SINR 信号与干扰加噪声比 %> :</td><td id="nr_sinr"></td><td></td></tr>
<tr><td width="20%"><%:SCS NR子载波间隔 %> :</td><td id="nr_scs"></td><td></td></tr>
<tr><td width="20%"title="<%:Received Signal Level%>"><%:RxLev 接收信号电平 %> :</td><td id="nr_rxlev"></td><td></td></tr> -->
</table>
</fieldset>
<!-- <fieldset class="cbi-section" id="cbi-networkinfo" style="display: none;">
<h3><%:网络信息%></h3>
<table width="100%" cellspacing="10">
<tr><td width="20%"><%:Network Type 网络类型 %> :</td><td id="network_type"></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-stationinfo" style="display: none;">
<h3><%:基站信息%></h3>
<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="channel"></td><td></td></tr>
<tr><td width="20%"><%:PCI 物理小区标识 : %></td><td id="pci"></td><td></td></tr>
<tr><td width="20%"><%:Maximum Qos 最大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-gpsinfo">
<h3><%:GPS 定位%></h3>
<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%>

View File

@ -1,124 +0,0 @@
<%#
Copyright 2014 Aedan Renner <chipdankly@gmail.com>
Copyright 2018 Florian Eckert <fe@dev.tdt.de>
Licensed to the public under the GNU General Public License v2.
-%>
<script type="text/javascript">//<![CDATA[
XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "modem", "get_modems")%>', null,
function(x, modems)
{
console.log(modems);
if (modems.length!=0)
{
var modems_div=document.getElementById('modem_status_text');
//默认显示为模块加载中
var modem_view=String.format('<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle"/>'+"<%:Loading modem status...%>");
modems_div.innerHTML=modem_view;
modem_view = '';
for ( var key in modems)
{
var modem=modems[key];
// 检查模组名
if (modem["name"]==null) {
continue;
}
// 检查拨号模式
if (modem["mode"]==null) {
continue;
}
// 获取连接状态
var connect_status;
if (modem["connect_status"]!=null) {
// 首字母大写
connect_status=modem["connect_status"].charAt(0).toUpperCase() + modem["connect_status"].slice(1);
}
var state = '';
var css = '';
switch (modem["connect_status"])
{
case 'connect':
state = '<%:Connect%>';
css = 'success';
break;
case 'disconnect':
state = '<%:Disconnect%>';
css = 'danger';
break;
default:
state = '<%:Disabled%>';
css = 'warning';
break;
}
modem_view += String.format(
'<div class="alert-message %s">',
css
);
modem_view += String.format(
'<div><strong>No: </strong>%s</div>',
modem[".name"].slice(-1)
);
modem_view += String.format(
'<div><strong><%:Modem Name%>: </strong>%s</div>',
modem.name.toUpperCase()
);
modem_view += String.format(
'<div><strong><%:Data Interface%>: </strong>%s</div>',
modem.data_interface.toUpperCase()
);
modem_view += String.format(
'<div><strong><%:Mode%>: </strong>%s</div>',
modem.mode.toUpperCase()
);
modem_view += String.format(
'<div><strong><%:Mobile Network%>: </strong>%s</div>',
modem.network
);
modem_view += String.format(
'<div><strong><%:Connect Status%>: </strong>%s</div>',
<%:connect_status%>
);
modem_view += '</div>'
}
// 有参数不存在,则不显示模块状态
if (modem_view != '')
{
modems_div.innerHTML=modem_view;
// 显示模块状态(状态加载完成才显示)
document.getElementById("modem_status_field").style.display="block";
}
}
else
{
// 隐藏模块状态
document.getElementById("modem_status_field").style.display="none";
}
}
);
//]]>
</script>
<style type="text/css">
#modem_status_text > div {
display: inline-block;
margin: 1rem;
padding: 1rem;
width: 15rem;
float: left;
line-height: 125%;
}
</style>
<!-- 默认隐藏模块状态 -->
<fieldset id="modem_status_field" class="cbi-section" style="display: none;">
<!-- <legend><%:Modem Status%></legend> -->
<h3><%:Modem Status%></h3>
<div id="modem_status_text">
<strong><%:No modems found%></strong>
</div>
</fieldset>

View File

@ -0,0 +1,482 @@
msgid "Base Setting"
msgstr "基本设置"
msgid "Modem"
msgstr "移动通信模组"
msgid "Modem Config"
msgstr "模组配置"
msgid "Modem Status"
msgstr "模组状态"
msgid "Modem Name"
msgstr "模组名称"
msgid "Modem Debug"
msgstr "模组调试"
msgid "Modem Select"
msgstr "模组选择"
msgid "Check information about adapted modem on this page"
msgstr "在此页面查看已适配模组的信息"
msgid "Not adapted to this modem"
msgstr "未适配该模组"
msgid "Loading modem information"
msgstr "正在加载模组信息"
msgid "Loading modem status"
msgstr "正在加载模组状态"
msgid "Loading modem"
msgstr "正在加载模组"
msgid "Dial Config"
msgstr "拨号配置"
msgid "Add dialing configuration to all modules on this page"
msgstr "在此页面给所有模组添加拨号配置"
msgid "Global Config"
msgstr "全局配置"
msgid "connect"
msgstr "已连接"
msgid "disconnect"
msgstr "未连接"
msgid "disabled"
msgstr "未启用"
msgid "Data Interface"
msgstr "数据接口"
msgid "Mode"
msgstr "模式"
msgid "Connect Status"
msgstr "连接状态"
msgid "Config List"
msgstr "配置列表"
msgid "Debug Your Module"
msgstr "调试你的模组"
msgid "Select a modem for debugging"
msgstr "选择一个模组进行调试"
msgid "Network Preferences"
msgstr "网络偏好"
msgid "Self Test"
msgstr "自检"
msgid "Current"
msgstr "当前"
msgid "Option"
msgstr "选项"
msgid "Config"
msgstr "配置"
msgid "Item"
msgstr "项目"
msgid "Status"
msgstr "状态"
msgid "Abnormal"
msgstr "异常"
msgid "Normal"
msgstr "正常"
msgid "Low"
msgstr "偏低"
msgid "AT Command"
msgstr "AT命令"
msgid "Quick Option"
msgstr "快捷选项"
msgid "Auto"
msgstr "自动"
msgid "Custom"
msgstr "自定义"
msgid "Quick Commands"
msgstr "快捷命令"
msgid "Enter Command"
msgstr "输入命令"
msgid "Apply"
msgstr "应用"
msgid "Send"
msgstr "发送"
msgid "Clean"
msgstr "清空"
msgid "Response"
msgstr "响应"
msgid "Return to old page"
msgstr "返回旧界面"
msgid "Return to modem debug"
msgstr "返回模组调试界面"
msgid "Custom quick commands"
msgstr "自定义快捷命令"
msgid "Customize your quick commands"
msgstr "自定义你的快捷命令"
msgid "Custom Commands"
msgstr "自定义命令"
msgid "Serial Number"
msgstr "序号"
msgid "Description"
msgstr "描述"
msgid "Command"
msgstr "命令"
msgid "Modem Information"
msgstr "模组信息"
msgid "No modems found"
msgstr "没有找到模组"
msgid "Check to enable all configurations"
msgstr "勾选启用全部配置"
msgid "General Settings"
msgstr "通用配置"
msgid "Advanced Settings"
msgstr "高级配置"
msgid "Remarks"
msgstr "备注"
msgid "Mobile Network"
msgstr "移动网络"
msgid "UNKNOWN"
msgstr "未知"
msgid "unknown"
msgstr "未知"
msgid "Mobile network not found"
msgstr "未发现移动网络"
msgid "The network device was not found"
msgstr "找不到网络设备"
msgid "Only display the modes available for the adaptation modem"
msgstr "仅显示适配模组可用的拨号模式"
msgid "Dial Tool"
msgstr "拨号工具"
msgid "After switching the dialing tool, it may be necessary to restart the module or restart the router to recognize the module."
msgstr "切换拨号工具后,可能需要重启模组或重启路由器才能识别模组。"
msgid "Auto Choose"
msgstr "自动选择"
msgid "quectel-CM"
msgstr "移远模组拨号工具"
msgid "mmcli"
msgstr "模组管理工具"
msgid "PDP Type"
msgstr "网络类型"
msgid "Network Bridge"
msgstr "网络桥接"
msgid "After checking, enable network interface bridge."
msgstr "勾选后,启用网络接口桥接。"
msgid "APN"
msgstr "接入点"
msgid "China Mobile"
msgstr "中国移动"
msgid "China Unicom"
msgstr "中国联通"
msgid "China Telecom"
msgstr "中国电信"
msgid "China Broadcast"
msgstr "中国广电"
msgid "Skytone"
msgstr "天际通"
msgid "Authentication Type"
msgstr "认证类型"
msgid "PAP/CHAP (both)"
msgstr "PAP/CHAP (均使用)"
msgid "NONE"
msgstr "无"
msgid "PAP/CHAP Username"
msgstr "PAP/CHAP 用户名"
msgid "PAP/CHAP Password"
msgstr "PAP/CHAP 密码"
msgid "Message"
msgstr "信息"
msgid "Base Information"
msgstr "基本信息"
msgid "Manufacturer"
msgstr "制造商"
msgid "Revision"
msgstr "固件版本"
msgid "AT Port"
msgstr "AT串口"
msgid "Temperature"
msgstr "温度"
msgid "Update Time"
msgstr "更新时间"
msgid "SIM Information"
msgstr "SIM卡信息"
msgid "Unknown SIM card status"
msgstr "未知SIM卡状态"
msgid "SIM card not inserted"
msgstr "SIM卡未插入"
msgid "ISP"
msgstr "运营商"
msgid "SIM Status"
msgstr "SIM卡状态"
msgid "miss"
msgstr "未插入"
msgid "locked"
msgstr "锁定"
msgid "SIM Slot"
msgstr "SIM卡卡槽"
msgid "SIM Number"
msgstr "SIM卡号码"
msgid "IMEI"
msgstr "国际移动设备识别码"
msgid "IMSI"
msgstr "国际移动用户识别码"
msgid "ICCID"
msgstr "集成电路卡识别码"
msgid "Network Information"
msgstr "网络信息"
msgid "Network Type"
msgstr "网络类型"
msgid "Tx Rate"
msgstr "上传速率"
msgid "Rx Rate"
msgstr "下载速率"
msgid "RSSI"
msgstr "接收信号强度指示"
msgid "BER"
msgstr "信道误码率"
msgid "Cell Information"
msgstr "小区信息"
msgid "Network Mode"
msgstr "网络模式"
msgid "NR5G-SA Mode"
msgstr "NR5G-SA 模式"
msgid "EN-DC Mode"
msgstr "EN-DC 模式"
msgid "LTE Mode"
msgstr "LTE 模式"
msgid "WCDMA Mode"
msgstr "WCDMA 模式"
msgid "MCC"
msgstr "移动国家代码"
msgid "MNC"
msgstr "移动网络代码"
msgid "Duplex Mode"
msgstr "双工模式"
msgid "LAC"
msgstr "位置区码"
msgid "Cell ID"
msgstr "小区ID"
msgid "Physical Cell ID"
msgstr "物理小区ID"
msgid "TAC"
msgstr "跟踪区编码"
msgid "ARFCN"
msgstr "绝对射频信道号"
msgid "EARFCN"
msgstr "E-UTRA绝对射频信道号"
msgid "UARFCN"
msgstr "UTRA绝对射频信道号"
msgid "Band"
msgstr "频段"
msgid "Freq band indicator"
msgstr "频带指示"
msgid "UL Bandwidth"
msgstr "上行带宽"
msgid "DL Bandwidth"
msgstr "下行带宽"
msgid "RSRP"
msgstr "参考信号接收功率"
msgid "RSRQ"
msgstr "参考信号接收质量"
msgid "RSSI"
msgstr "接收信号强度指示"
msgid "SINR"
msgstr "信号与干扰加噪声比"
msgid "RSSNR"
msgstr "信号干扰比"
msgid "SCS"
msgstr "NR子载波间隔"
msgid "CQI"
msgstr "信道质量指示"
msgid "TX Power"
msgstr "TX 功率"
msgid "PSC"
msgstr "主扰码"
msgid "RAC"
msgstr "路由区域码"
msgid "RSCP"
msgstr "接收信号码功率"
msgid "每比特能量与干扰功率密度(干扰比)之比"
msgstr "Eb/Io"
msgid "每比特能量与噪声功率密度(噪声比)之比"
msgstr "Eb/No"
msgid "每码片能量与干扰功率密度(干扰比)之比"
msgstr "Ec/Io"
msgid "每码片能量与噪声功率密度(噪声比)之比"
msgstr "Ec/No"
msgid "Physical Channel"
msgstr "物理信道"
msgid "Spreading Factor"
msgstr "扩频因子"
msgid "Slot"
msgstr "插槽格式"
msgid "Speech Code"
msgstr "语音编码"
msgid "Compression Mode"
msgstr "压缩模式"
msgid "RxLev"
msgstr "接收信号功率"
msgid "CHN-CMCC"
msgstr "中国移动"
msgid "CMCC"
msgstr "中国移动"
msgid "46000"
msgstr "中国移动"
msgid "CHN-UNICOM"
msgstr "中国联通"
msgid "UNICOM"
msgstr "中国联通"
msgid "CUCC"
msgstr "中国联通"
msgid "46001"
msgstr "中国联通"
msgid "CHN-CT"
msgstr "中国电信"
msgid "CHN-TELECOM"
msgstr "中国电信"
msgid "CTCC"
msgstr "中国电信"
msgid "CT"
msgstr "中国电信"
msgid "46011"
msgstr "中国电信"

View File

@ -42,6 +42,27 @@ m_report_event()
m_log "debug" "event reported: action=${action}, type=${type}, name=${name}" m_log "debug" "event reported: action=${action}, type=${type}, name=${name}"
} }
#模组预设
# $1:AT串口
# $2:连接定义
m_modem_presets()
{
local at_port="$1"
local define_connect="$2"
#运营商选择设置
local at_command='AT+COPS=0,0'
at "${at_port}" "${at_command}"
#设置IPv6地址格式
at_command='AT+CGPIAF=1,0,0,0'
at "${at_port}" "${at_command}"
#PDP设置
at_command="AT+CGDCONT=$define_connect,\"IPV4V6\",\"\""
at "${at_port}" "${at_command}"
}
#获取设备物理路径 #获取设备物理路径
# $1:网络设备路径 # $1:网络设备路径
m_get_device_physical_path() m_get_device_physical_path()
@ -349,9 +370,8 @@ retry_set_modem_config()
uci add_list modem.modem${modem_no}.modes="${mode}" uci add_list modem.modem${modem_no}.modes="${mode}"
done done
#PDP设置 #设置模组预设
at_command="AT+CGDCONT=$define_connect,\"IPV4V6\",\"\"" m_modem_presets "${at_port}" "${define_connect}"
at "${at_port}" "${at_command}"
#打印日志 #打印日志
m_log "info" "Successfully retrying to configure the Modem ${modem_name}" m_log "info" "Successfully retrying to configure the Modem ${modem_name}"
@ -419,9 +439,8 @@ m_set_modem_config()
uci add_list modem.modem${modem_no}.modes="${mode}" uci add_list modem.modem${modem_no}.modes="${mode}"
done done
#PDP设置 #设置模组预设
at_command="AT+CGDCONT=$define_connect,\"IPV4V6\",\"\"" m_modem_presets "${at_port}" "${define_connect}"
at "${at_port}" "${at_command}"
#打印日志 #打印日志
m_log "info" "${log_message}" m_log "info" "${log_message}"