diff --git a/luci-app-modem/luasrc/controller/modem.lua b/luci-app-modem/luasrc/controller/modem.lua index c96fd8e..5d27909 100644 --- a/luci-app-modem/luasrc/controller/modem.lua +++ b/luci-app-modem/luasrc/controller/modem.lua @@ -34,6 +34,9 @@ function index() --AT命令旧界面 entry({"admin", "network", "modem", "at_command_old"},template("modem/at_command_old")).leaf = true + + --AT快捷命令配置 + entry({"admin", "network", "modem", "quick_commands_config"},cbi("modem/quick_commands_config"),translate("自定义快捷命令配置"),40).leaf = true end --[[ diff --git a/luci-app-modem/luasrc/model/cbi/modem/quick_commands_config.lua b/luci-app-modem/luasrc/model/cbi/modem/quick_commands_config.lua new file mode 100644 index 0000000..48960d5 --- /dev/null +++ b/luci-app-modem/luasrc/model/cbi/modem/quick_commands_config.lua @@ -0,0 +1,53 @@ +-- Copyright 2020-2021 Rafa� Wabik (IceG) - From eko.one.pl forum +-- Licensed to the GNU General Public License v3.0. + +local dispatcher = require "luci.dispatcher" +local fs = require "nixio.fs" +local http = require "luci.http" +local uci = require "luci.model.uci".cursor() + +local AT_FILE_PATH = "/etc/modem/custom_at_commands.json" + +m = Map("sms_tool") +m.title = translate("Configuration sms-tool") +m.description = translate("Configuration panel for sms_tool and gui application.") + +-- 自定义命令 -- +s = m:section(TypedSection, "custom_at_commands", translate("Custom AT Commands")) +s.anonymous = true +s.addremove = true +s.template = "cbi/tblsection" + +description = s:option(Value, "description", translate("Description")) +description.placeholder = "" +description.rmempty = false +description.optional = false + +command = s:option(Value, "command", translate("Command")) +-- command.placeholder = "" +command.rmempty = false +-- command.optional = false + +function command.cfgvalue(self, section) + local custom_commands=fs.readfile(AT_FILE_PATH) + return "模组信息 > ATI" +end + +-- RAW File -- +s = m:section(NamedSection, 'general' , "sms_tool" , translate("")) +s.anonymous = true + +local tat = s:option(TextValue, "user_at", translate("User AT Commands"), translate("Each line must have the following format: 'AT Command name;AT Command'. Save to file '/etc/config/atcmds.user'.")) +tat.rows = 20 +tat.rmempty = true + +function tat.cfgvalue(self, section) + return fs.readfile(AT_FILE_PATH) +end + +function tat.write(self, section, value) + value = value:gsub("\r\n", "\n") + fs.writefile(AT_FILE_PATH, value) +end + +return m diff --git a/luci-app-modem/luasrc/view/modem/modem_info.htm b/luci-app-modem/luasrc/view/modem/modem_info.htm index 1b01ae5..c8ccf94 100644 --- a/luci-app-modem/luasrc/view/modem/modem_info.htm +++ b/luci-app-modem/luasrc/view/modem/modem_info.htm @@ -526,7 +526,7 @@ end --> <% if havegps == 1 then %> -
+ <% end %> diff --git a/luci-app-modem/root/etc/modem/custom_at_commands.json b/luci-app-modem/root/etc/modem/custom_at_commands.json index 91220a7..6c1bcc0 100644 --- a/luci-app-modem/root/etc/modem/custom_at_commands.json +++ b/luci-app-modem/root/etc/modem/custom_at_commands.json @@ -2,34 +2,34 @@ "quick_commands":[ {"****************通用****************":"ATI"}, {"模组信息 > ATI":"ATI"}, - {"查询SIM卡状态 > AT+CPIN?":"AT+CPIN?"}, - {"查询此时信号强度 > AT+CSQ":"AT+CSQ"}, - {"查询网络信息 > AT+COPS?":"AT+COPS?"}, - {"查询PDP信息 > AT+CGDCONT?":"AT+CGDCONT?"}, - {"最小功能模式 > AT+CFUN=0":"AT+CFUN=0"}, - {"全功能模式 > AT+CFUN=1":"AT+CFUN=1"}, + {"查询SIM卡状态 > AT+CPIN?":"AT+CPIN?"}, + {"查询此时信号强度 > AT+CSQ":"AT+CSQ"}, + {"查询网络信息 > AT+COPS?":"AT+COPS?"}, + {"查询PDP信息 > AT+CGDCONT?":"AT+CGDCONT?"}, + {"最小功能模式 > AT+CFUN=0":"AT+CFUN=0"}, + {"全功能模式 > AT+CFUN=1":"AT+CFUN=1"}, {"****************移远****************":"ATI"}, - {"SIM卡状态上报 > AT+QSIMSTAT?":"AT+QSIMSTAT?"}, - {"设置当前使用的为卡1 > AT+QUIMSLOT=1":"AT+QUIMSLOT=1"}, - {"设置当前使用的为卡2 > AT+QUIMSLOT=2":"AT+QUIMSLOT=2"}, - {"查询网络信息 > AT+QNWINFO":"AT+QNWINFO"}, - {"查询载波聚合参数 > AT+QCAINFO":"AT+QCAINFO"}, - {"查询当前拨号模式 > AT+QCFG=\"usbnet\"":"AT+QCFG=\"usbnet\""}, - {"QMI/GobiNet拨号 > AT+QCFG=\"usbnet\",0":"AT+QCFG=\"usbnet\",0"}, - {"ECM拨号 > AT+QCFG=\"usbnet\",1":"AT+QCFG=\"usbnet\",1"}, - {"MBIM拨号 > AT+QCFG=\"usbnet\",2":"AT+QCFG=\"usbnet\",2"}, - {"RNDIS拨号 > AT+QCFG=\"usbnet\",3":"AT+QCFG=\"usbnet\",3"}, - {"NCM拨号 > AT+QCFG=\"usbnet\",5":"AT+QCFG=\"usbnet\",5"}, - {"锁4G > AT+QNWPREFCFG=\"mode_pref\",LTE":"AT+QNWPREFCFG=\"mode_pref\",LTE"}, - {"锁5G > AT+QNWPREFCFG=\"mode_pref\",NR5G":"AT+QNWPREFCFG=\"mode_pref\",NR5G"}, - {"恢复自动搜索网络 > AT+QNWPREFCFG=\"mode_pref\",AUTO":"AT+QNWPREFCFG=\"mode_pref\",AUTO"}, - {"查询模组IMEI > AT+CGSN":"AT+CGSN"}, - {"查询模组IMEI > AT+GSN":"AT+GSN"}, - {"更改模组IMEI > AT+EGMR=1,7,\"IMEI\"":"AT+EGMR=1,7,\"在此设置IMEI\""}, - {"获取模组温度 > AT+QTEMP":"AT+QTEMP"}, - {"切换为USB通信端口 > AT+QCFG=\"data_interface\",0,0":"AT+QCFG=\"data_interface\",0,0"}, - {"切换为PCIE通信端口 > AT+QCFG=\"data_interface\",1,0":"AT+QCFG=\"data_interface\",1,0"}, - {"重置模组 > AT+CFUN=1,1":"AT+CFUN=1,1"}, + {"SIM卡状态上报 > AT+QSIMSTAT?":"AT+QSIMSTAT?"}, + {"设置当前使用的为卡1 > AT+QUIMSLOT=1":"AT+QUIMSLOT=1"}, + {"设置当前使用的为卡2 > AT+QUIMSLOT=2":"AT+QUIMSLOT=2"}, + {"查询网络信息 > AT+QNWINFO":"AT+QNWINFO"}, + {"查询载波聚合参数 > AT+QCAINFO":"AT+QCAINFO"}, + {"查询当前拨号模式 > AT+QCFG=\"usbnet\"":"AT+QCFG=\"usbnet\""}, + {"QMI/GobiNet拨号 > AT+QCFG=\"usbnet\",0":"AT+QCFG=\"usbnet\",0"}, + {"ECM拨号 > AT+QCFG=\"usbnet\",1":"AT+QCFG=\"usbnet\",1"}, + {"MBIM拨号 > AT+QCFG=\"usbnet\",2":"AT+QCFG=\"usbnet\",2"}, + {"RNDIS拨号 > AT+QCFG=\"usbnet\",3":"AT+QCFG=\"usbnet\",3"}, + {"NCM拨号 > AT+QCFG=\"usbnet\",5":"AT+QCFG=\"usbnet\",5"}, + {"锁4G > AT+QNWPREFCFG=\"mode_pref\",LTE":"AT+QNWPREFCFG=\"mode_pref\",LTE"}, + {"锁5G > AT+QNWPREFCFG=\"mode_pref\",NR5G":"AT+QNWPREFCFG=\"mode_pref\",NR5G"}, + {"恢复自动搜索网络 > AT+QNWPREFCFG=\"mode_pref\",AUTO":"AT+QNWPREFCFG=\"mode_pref\",AUTO"}, + {"查询模组IMEI > AT+CGSN":"AT+CGSN"}, + {"查询模组IMEI > AT+GSN":"AT+GSN"}, + {"更改模组IMEI > AT+EGMR=1,7,\"IMEI\"":"AT+EGMR=1,7,\"在此设置IMEI\""}, + {"获取模组温度 > AT+QTEMP":"AT+QTEMP"}, + {"切换为USB通信端口 > AT+QCFG=\"data_interface\",0,0":"AT+QCFG=\"data_interface\",0,0"}, + {"切换为PCIE通信端口 > AT+QCFG=\"data_interface\",1,0":"AT+QCFG=\"data_interface\",1,0"}, + {"重置模组 > AT+CFUN=1,1":"AT+CFUN=1,1"}, {"****************广和通****************":"ATI"}, {"设置当前使用的为卡1 > AT+GTDUALSIM=0":"AT+GTDUALSIM=0"}, {"设置当前使用的为卡2 > AT+GTDUALSIM=1":"AT+GTDUALSIM=1"}, diff --git a/luci-app-modem/root/usr/share/modem/fibocom.sh b/luci-app-modem/root/usr/share/modem/fibocom.sh index e8513a0..c6f8cdb 100755 --- a/luci-app-modem/root/usr/share/modem/fibocom.sh +++ b/luci-app-modem/root/usr/share/modem/fibocom.sh @@ -9,20 +9,53 @@ get_mode() at_command="AT+GTUSBMODE?" local mode_num=$(sh $current_dir/modem_at.sh $at_port $at_command | grep "+GTUSBMODE:" | sed 's/+GTUSBMODE: //g' | sed 's/\r//g') + #获取芯片平台 + local platform + local modem_number=$(uci -q get modem.global.modem_number) + for i in $(seq 0 $((modem_number-1))); do + local at_port_tmp=$(uci -q get modem.modem$i.at_port) + if [ "$at_port" = "$at_port_tmp" ]; then + platform=$(uci -q get modem.modem$i.platform) + break + fi + done + local mode - case "$mode_num" in - "17") mode="qmi" ;; #- - "31") mode="qmi" ;; #- - "32") mode="qmi" ;; - # "32") mode="gobinet" ;; - "18") mode="ecm" ;; - "23") mode="ecm" ;; #- - "33") mode="ecm" ;; #- - "29") mode="mbim" ;; #- - "30") mode="mbim" ;; - "24") mode="rndis" ;; - "18") mode='ncm' ;; - *) mode="$mode_num" ;; + case "$platform" in + "qualcomm") + case "$mode_num" in + "17") mode="qmi" ;; #- + "31") mode="qmi" ;; #- + "32") mode="qmi" ;; + "34") mode="qmi" ;; + # "32") mode="gobinet" ;; + "18") mode="ecm" ;; + "23") mode="ecm" ;; #- + "33") mode="ecm" ;; #- + "35") mode="ecm" ;; #- + "29") mode="mbim" ;; #- + "30") mode="mbim" ;; + "24") mode="rndis" ;; + "18") mode='ncm' ;; + *) mode="$mode_num" ;; + esac + ;; + "unisoc") + case "$mode_num" in + "34") mode="ecm" ;; + "35") mode="ecm" ;; #- + "40") mode="mbim" ;; + "41") mode="mbim" ;; #- + "38") mode="rndis" ;; + "39") mode="rndis" ;; #- + "36") mode='ncm' ;; + "37") mode='ncm' ;; #- + *) mode="$mode_num" ;; + esac + ;; + *) + mode="$mode_num" + ;; esac echo "$mode" } diff --git a/luci-app-modem/root/usr/share/modem/modem_scan.sh b/luci-app-modem/root/usr/share/modem/modem_scan.sh index f10d368..418f975 100755 --- a/luci-app-modem/root/usr/share/modem/modem_scan.sh +++ b/luci-app-modem/root/usr/share/modem/modem_scan.sh @@ -101,6 +101,7 @@ setPortConfig() uci set modem.modem$i.at_port="$2" setModemInfoConfig $i $2 fi + break fi done } @@ -122,7 +123,7 @@ setModemInfoConfig() #获取一行的内容 local line_context=$(sed -n $i'p' "$modem_support_file") #获取数据接口内容 - local data_interface_info=$(echo "$line_context" | cut -d ";" -f 3) + local data_interface_info=$(echo "$line_context" | cut -d ";" -f 4) if [ "$data_interface" = "$data_interface_info" ]; then #获取模块名 local modem_name=$(echo "$line_context" | cut -d ";" -f 2) @@ -144,17 +145,21 @@ setModemInfoConfig() local manufacturer=$(echo "$line_context" | cut -d ";" -f 1) uci set modem.modem$1.manufacturer="$manufacturer" + #设置平台 + local platform=$(echo "$line_context" | cut -d ";" -f 3) + uci set modem.modem$1.platform="$platform" + #设置当前的拨号模式 local mode if [ "$manufacturer" = "unknown" ]; then mode="unknown" else - mode=$(source $current_dir/$manufacturer.sh && get_mode $2) + mode=$(source $current_dir/$manufacturer.sh && get_mode $2 $platform) fi uci set modem.modem$1.mode="$mode" #设置支持的拨号模式 - local modes=$(echo "$line_context" | cut -d ";" -f 4 | tr ',' ' ') + local modes=$(echo "$line_context" | cut -d ";" -f 5 | tr ',' ' ') #删除原来的拨号模式列表 uci -q del modem.modem$1.modes diff --git a/luci-app-modem/root/usr/share/modem/modem_support b/luci-app-modem/root/usr/share/modem/modem_support index e02fd9b..5f44d9a 100644 --- a/luci-app-modem/root/usr/share/modem/modem_support +++ b/luci-app-modem/root/usr/share/modem/modem_support @@ -1,12 +1,12 @@ -quectel;rg200u-cn;usb;ecm,mbim,rndis,ncm -quectel;rm500u-cn;usb;ecm,mbim,rndis,ncm -quectel;rm500q-gl;usb;qmi,gobinet,ecm,mbim,rndis,ncm -quectel;rm500q-gl;pcie;qmi,gobinet,mbim -quectel;rm502q-gl;usb;qmi,gobinet,ecm,mbim,rndis,ncm -quectel;rm502q-gl;pcie;qmi,gobinet,mbim -fibocom;fm650-cn;usb;ecm,mbim,rndis,ncm -fibocom;fm150-ae;usb;qmi,gobinet,ecm,mbim,rndis,ncm -fibocom;fm150-ae;pcie;qmi -fibocom;fm160-cn;usb;qmi,gobinet,ecm,mbim,rndis,ncm -unknown;unknown;usb;qmi,gobinet,ecm,mbim,rndis,ncm -unknown;unknown;pcie;qmi,gobinet,mbim +quectel;rg200u-cn;unisoc;usb;ecm,mbim,rndis,ncm +quectel;rm500u-cn;unisoc;usb;ecm,mbim,rndis,ncm +quectel;rm500q-gl;qualcomm;usb;qmi,gobinet,ecm,mbim,rndis,ncm +quectel;rm500q-gl;qualcomm;pcie;qmi,gobinet,mbim +quectel;rm502q-gl;qualcomm;usb;qmi,gobinet,ecm,mbim,rndis,ncm +quectel;rm502q-gl;qualcomm;pcie;qmi,gobinet,mbim +fibocom;fm650-cn;unisoc;usb;ecm,mbim,rndis,ncm +fibocom;fm150-ae;qualcomm;usb;qmi,gobinet,ecm,mbim,rndis,ncm +fibocom;fm150-ae;qualcomm;pcie;qmi +fibocom;fm160-cn;qualcomm;usb;qmi,gobinet,ecm,mbim,rndis,ncm +unknown;unknown;unknown;usb;qmi,gobinet,ecm,mbim,rndis,ncm +unknown;unknown;unknown;pcie;qmi,gobinet,mbim diff --git a/luci-app-modem/root/usr/share/modem/quectel.sh b/luci-app-modem/root/usr/share/modem/quectel.sh index 818c6a0..78f18cb 100755 --- a/luci-app-modem/root/usr/share/modem/quectel.sh +++ b/luci-app-modem/root/usr/share/modem/quectel.sh @@ -9,15 +9,42 @@ get_mode() at_command='AT+QCFG="usbnet"' local mode_num=$(sh $current_dir/modem_at.sh $at_port $at_command | grep "+QCFG:" | sed 's/+QCFG: "usbnet",//g' | sed 's/\r//g') + #获取芯片平台 + local platform + local modem_number=$(uci -q get modem.global.modem_number) + for i in $(seq 0 $((modem_number-1))); do + local at_port_tmp=$(uci -q get modem.modem$i.at_port) + if [ "$at_port" = "$at_port_tmp" ]; then + platform=$(uci -q get modem.modem$i.platform) + break + fi + done + local mode - case "$mode_num" in - "0") mode="qmi" ;; - # "0") mode="gobinet" ;; - "1") mode="ecm" ;; - "2") mode="mbim" ;; - "3") mode="rndis" ;; - "5") mode='ncm' ;; - *) mode="$mode_num" ;; + case "$platform" in + "qualcomm") + case "$mode_num" in + "0") mode="qmi" ;; + # "0") mode="gobinet" ;; + "1") mode="ecm" ;; + "2") mode="mbim" ;; + "3") mode="rndis" ;; + "5") mode='ncm' ;; + *) mode="$mode_num" ;; + esac + ;; + "unisoc") + case "$mode_num" in + "1") mode="ecm" ;; + "2") mode="mbim" ;; + "3") mode="rndis" ;; + "5") mode='ncm' ;; + *) mode="$mode_num" ;; + esac + ;; + *) + mode="$mode_num" + ;; esac echo "$mode" }