diff --git a/luci/luci-app-qmodem/root/etc/init.d/qmodem_reboot b/luci/luci-app-qmodem/root/etc/init.d/qmodem_reboot new file mode 100644 index 0000000..e678e50 --- /dev/null +++ b/luci/luci-app-qmodem/root/etc/init.d/qmodem_reboot @@ -0,0 +1,39 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2006 OpenWrt.org +USE_PROCD=1 + +START=95 +STOP=0 + +start_service() { + : +} + +stop_service() { + procd_set_param timeout 30 + config_load qmodem + config_foreach _reboot_usb modem-device + +} + +_reboot_usb() { + config_get data_interface $1 data_interface + if [ "$data_interface" == "usb" ]; then + config_get name $1 name + if [ "$name" == "fm350-gl" ]; then + config_get at_port $1 at_port + response=$(tom_modem -d "$at_port" -o a -c "AT+CFUN=1,1") + retries=3 + while ! echo "$response" | grep -qi "ok" && [ $retries -gt 0 ]; do + sleep 1 + response=$(tom_modem -d "$at_port" -o a -c "AT+CFUN=1,1") + retries=$((retries - 1)) + done + max_retries=15 + while [ -e "/dev/$at_port" ] && [ $max_retries -gt 0 ]; do + sleep 1 + max_retries=$((max_retries - 1)) + done + fi + fi +} \ No newline at end of file diff --git a/luci/luci-app-qmodem/root/usr/share/qmodem/modem_ctrl.sh b/luci/luci-app-qmodem/root/usr/share/qmodem/modem_ctrl.sh old mode 100755 new mode 100644 index 8d7051a..b492b19 --- a/luci/luci-app-qmodem/root/usr/share/qmodem/modem_ctrl.sh +++ b/luci/luci-app-qmodem/root/usr/share/qmodem/modem_ctrl.sh @@ -23,6 +23,9 @@ case $vendor in "sierra") . /usr/share/qmodem/vendor/sierra.sh ;; + "simcom") + . /usr/share/qmodem/vendor/simcom.sh + ;; *) . /usr/share/qmodem/generic.sh ;; diff --git a/luci/luci-app-qmodem/root/usr/share/qmodem/modem_dial.sh b/luci/luci-app-qmodem/root/usr/share/qmodem/modem_dial.sh old mode 100755 new mode 100644 index b1a097e..201b15e --- a/luci/luci-app-qmodem/root/usr/share/qmodem/modem_dial.sh +++ b/luci/luci-app-qmodem/root/usr/share/qmodem/modem_dial.sh @@ -270,22 +270,35 @@ check_ip() ;; "mediatek") check_ip_command="AT+CGPADDR=3" - mtk=1 stric=1 ;; esac ;; + "simcom") + case $platform in + "qualcomm") + check_ip_command="AT+CGPADDR=6" + ;; + esac + ;; esac ipaddr=$(at "$at_port" "$check_ip_command" |grep +CGPADDR:) if [ -n "$ipaddr" ];then - if [ $mtk -eq 1 ] && [ "$pdp_type" = "IPv4v6" ];then - if ! ping -c 2 -w 5 2400:3200::1 > /dev/null 2>&1; then - m_debug "ipv6 is down,try to restart" - ifdown "$interface"V6 && sleep 2 && ifup "$interface"V6 + if [ $mtk -eq 1 ] && echo "$ipv4_config" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$'; then + if [ "$pdp_type" = "IPv4v6" ];then + if ! ping -c 2 -w 5 2400:3200::1 > /dev/null 2>&1; then + m_debug "ipv6 is down,try to restart" + ifdown "$interface"V6 && sleep 2 && ifup "$interface"V6 + fi fi fi ipv6=$(echo $ipaddr | grep -oE "\b([0-9a-fA-F]{0,4}:){2,7}[0-9a-fA-F]{0,4}\b") ipv4=$(echo $ipaddr | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b") + if [ "$manufacturer" = "simcom" ];then + ipv4=$(echo $ipaddr | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep -v "0\.0\.0\.0" | head -n 1) + ipaddr=$(echo $ipaddr | sed 's/\./:/g' | sed 's/+CGPADDR: //g' | sed 's/'$ipv4',//g') + ipv6=$(echo $ipaddr | grep -oE "\b([0-9a-fA-F]{0,4}.){2,7}[0-9a-fA-F]{0,4}\b") + fi disallow_ipv4="0.0.0.0" #remove the disallow ip if [ "$ipv4" == *"$disallow_ipv4"* ];then @@ -768,7 +781,15 @@ at_dial() ;; esac ;; - + "simcom") + case $platform in + "qualcomm") + local cnmp=$(at ${at_port} "AT+CNMP?" | grep "+CNMP:" | sed 's/+CNMP: //g' | sed 's/\r//g') + at_command="AT+CNMP=$cnmp;+CNWINFO=1" + cgdcont_command="AT+CGDCONT=1,\"IPV4V6\",\"$apn\"" + ;; + esac + ;; esac m_debug "dialing vendor:$manufacturer;platform:$platform; $cgdcont_command ; $at_command" at "${at_port}" "${cgdcont_command}" @@ -949,7 +970,7 @@ at_dial_monitor() fi sleep 10 else - #检测ipv4是否变化 + #检测ipv4是否变化 sleep 15 if [ "$ipv4" != "$ipv4_cache" ];then handle_ip_change diff --git a/luci/luci-app-qmodem/root/usr/share/qmodem/modem_support.json b/luci/luci-app-qmodem/root/usr/share/qmodem/modem_support.json index e1d1196..28926de 100644 --- a/luci/luci-app-qmodem/root/usr/share/qmodem/modem_support.json +++ b/luci/luci-app-qmodem/root/usr/share/qmodem/modem_support.json @@ -1,4 +1,5 @@ -{ "modem_support": { +{ + "modem_support": { "usb": { "em05": { "manufacturer_id": "2c7c", @@ -469,6 +470,17 @@ "mbim", "rmnet" ] + }, + "simcom_d8200g": { + "manufacturer_id": "1a0e", + "manufacturer": "simcom", + "platform": "qualcomm", + "data_interface": "usb", + "define_connect": "1", + "modes": [ + "qmi", + "rndis" + ] } }, "pcie": { @@ -755,7 +767,18 @@ "4d59" ] } + }, + "simcom": { + "qualcomm": { + "vendor_id": [ + "1a0e" + ], + "product_id": [ + "9001", + "9011" + ] + } } } } -} +} \ No newline at end of file diff --git a/luci/luci-app-qmodem/root/usr/share/qmodem/modem_util.sh b/luci/luci-app-qmodem/root/usr/share/qmodem/modem_util.sh old mode 100755 new mode 100644 index 7cf12a7..0a54a74 --- a/luci/luci-app-qmodem/root/usr/share/qmodem/modem_util.sh +++ b/luci/luci-app-qmodem/root/usr/share/qmodem/modem_util.sh @@ -112,7 +112,23 @@ at_get_slot() ;; esac ;; - + "simcom") + at_res=$(at $at_port AT+SMSIMCFG? | grep "+SMSIMCFG:" | awk -F',' '{print $2}' | sed 's/\r//g') + case $at_res in + "1") + sim_slot="1" + ;; + "2") + sim_slot="2" + ;; + *) + sim_slot="1" + ;; + *) + sim_slot="1" + ;; + esac + ;; *) at_q_res=$(at $at_port AT+QSIMDET? |grep +QSIMDET: |awk -F: '{print $2}') at_f_res=$(at $at_port AT+GTDUALSIM? |grep +GTDUALSIM: |awk -F: '{print $2}') diff --git a/luci/luci-app-qmodem/root/usr/share/qmodem/vendor/simcom.sh b/luci/luci-app-qmodem/root/usr/share/qmodem/vendor/simcom.sh new file mode 100644 index 0000000..03282bc --- /dev/null +++ b/luci/luci-app-qmodem/root/usr/share/qmodem/vendor/simcom.sh @@ -0,0 +1,1014 @@ +#!/bin/sh + +source /usr/share/qmodem/generic.sh +debug_subject="quectel_ctrl" +#return raw data +get_imei(){ + at_command="AT+CGSN" + imei=$(at $at_port $at_command | grep -o "[0-9]\{15\}") + json_add_string "imei" "$imei" +} + +#return raw data +set_imei(){ + local imei="$1" + at_command="AT+SIMEI=$imei" + res=$(at $at_port $at_command) + json_select "result" + json_add_string "set_imei" "$res" + json_close_object + get_imei +} + +#获取拨号模式 +# $1:AT串口 +# $2:平台 +get_mode() +{ + at_command='AT+CUSBCFG?' + local mode_num=$(at ${at_port} ${at_command} | grep "USBID: " | sed 's/USBID: 0X1E0E,0X//g' | sed 's/\r//g') + local mode + case "$platform" in + "qualcomm") + case "$mode_num" in + "9001") mode="qmi" ;; + "9011") mode="rndis" ;; + *) mode="${mode_num}" ;; + esac + ;; + *) + mode="${mode_num}" + ;; + esac + available_modes=$(uci -q get qmodem.$config_section.modes) + json_add_object "mode" + for available_mode in $available_modes; do + if [ "$mode" = "$available_mode" ]; then + json_add_string "$available_mode" "1" + else + json_add_string "$available_mode" "0" + fi + done + json_close_object +} + +#设置拨号模式 +set_mode() +{ + #获取拨号模式配置 + local mode=$1 + case "$platform" in + "qualcomm") + case "$mode" in + "qmi") mode_num="9001" ;; + "rndis") mode_num="9011" ;; + *) mode_num="0" ;; + esac + ;; + *) + mode_num="0" + ;; + + esac + + #设置模组 + at_command='AT+CUSBCFG=usbid,1e0e,'${mode_num} + res=$(at "${at_port}" "${at_command}") + json_select "result" + json_add_string "set_mode" "$res" + json_close_object +} + +#获取网络偏好 +# $1:AT串口 +get_network_prefer() +{ + case "$platform" in + "qualcomm") + get_network_prefer_nr + ;; + *) + get_network_prefer_nr + ;; + esac + json_add_object network_prefer + json_add_string 3G $network_prefer_3g + json_add_string 4G $network_prefer_4g + case $platform in + "qualcomm") + json_add_string 5G $network_prefer_5g + ;; + esac + json_close_array + +} + +get_network_prefer_nr() +{ + at_command='AT+CNMP?' + local response=$(at ${at_port} ${at_command} | grep "+CNMP:" | awk -F': ' '{print $2}' | sed 's/\r//g') + + network_prefer_3g="0"; + network_prefer_4g="0"; + network_prefer_5g="0"; + + #匹配不同的网络类型 + local auto=$(echo "${response}" | grep "2") + if [ -n "$auto" ]; then + network_prefer_3g="1" + network_prefer_4g="1" + network_prefer_5g="1" + else + local wcdma=$(echo "${response}" | grep "14" || echo "${response}" | grep "54" || echo "${response}" | grep "55") + local lte=$(echo "${response}" | grep "38" || echo "${response}" | grep "54" || echo "${response}" | grep "109") + local nr=$(echo "${response}" | grep "71" || echo "${response}" | grep "55" || echo "${response}" | grep "109") + if [ -n "$wcdma" ]; then + network_prefer_3g="1" + fi + if [ -n "$lte" ]; then + network_prefer_4g="1" + fi + if [ -n "$nr" ]; then + network_prefer_5g="1" + fi + fi +} + +#设置网络偏好 +# $1:AT串口 +# $2:网络偏好配置 +set_network_prefer() +{ + network_prefer_3g=$(echo $1 |jq -r 'contains(["3G"])') + network_prefer_4g=$(echo $1 |jq -r 'contains(["4G"])') + network_prefer_5g=$(echo $1 |jq -r 'contains(["5G"])') + length=$(echo $1 |jq -r 'length') + + case "$platform" in + "qualcomm") + set_network_prefer_nr $at_port $network_prefer + ;; + *) + set_network_prefer_nr $at_port $network_prefer + ;; + esac +} + +set_network_prefer_nr() +{ + case "$length" in + "1") + if [ "$network_prefer_3g" = "true" ]; then + network_prefer_config="14" + elif [ "$network_prefer_4g" = "true" ]; then + network_prefer_config="38" + elif [ "$network_prefer_5g" = "true" ]; then + network_prefer_config="71" + fi + ;; + "2") + if [ "$network_prefer_3g" = "true" ] && [ "$network_prefer_4g" = "true" ]; then + network_prefer_config="54" + elif [ "$network_prefer_3g" = "true" ] && [ "$network_prefer_5g" = "true" ]; then + network_prefer_config="55" + elif [ "$network_prefer_4g" = "true" ] && [ "$network_prefer_5g" = "true" ]; then + network_prefer_config="109" + fi + ;; + "3") network_prefer_config="2" ;; + *) network_prefer_config="2" ;; + esac + + #设置模组 + at_command='AT+CNMP='${network_prefer_config} + at "${at_port}" "${at_command}" +} + +#获取电压 +# $1:AT串口 +get_voltage() +{ + at_command="AT+CBC" + local voltage=$(at ${at_port} ${at_command} | grep "+CBC:" | sed 's/+CBC: //g' | sed 's/V//g' | sed 's/\r//g') + [ -n "$voltage" ] && { + add_plain_info_entry "voltage" "$voltage V" "Voltage" + } +} + +#获取温度 +#return raw data +get_temperature() +{ + #Temperature(温度) + at_command="AT+CPMUTEMP" + local temp + local line=1 + QTEMP=$(at ${at_port} ${at_command} | grep "+CPMUTEMP:") + temp=$(echo $QTEMP | awk -F': ' '{print $2}' | sed 's/\r//g') + if [ -n "$temp" ]; then + temp="${temp}$(printf "\xc2\xb0")C" + fi + add_plain_info_entry "temperature" "$temp" "Temperature" +} + + + +#基本信息 +base_info() +{ + m_debug "Quectel base info" + + #Name(名称) + at_command="AT+CGMM" + name=$(at $at_port $at_command | sed -n '2p' | sed 's/\r//g') + #Manufacturer(制造商) + at_command="AT+CGMI" + manufacturer=$(at $at_port $at_command | sed -n '2p' | sed 's/\r//g') + #Revision(固件版本) + at_command="AT+SIMCOMATI" + revision=$(at $at_port $at_command | grep "Revision:" | sed 's/Revision: //g' | sed 's/\r//g') + # at_command="AT+CGMR" + # revision=$(at $at_port $at_command | sed -n '2p' | sed 's/\r//g') + class="Base Information" + add_plain_info_entry "manufacturer" "$manufacturer" "Manufacturer" + add_plain_info_entry "revision" "$revision" "Revision" + add_plain_info_entry "at_port" "$at_port" "AT Port" + get_temperature + get_voltage + get_connect_status +} + + +#SIM卡信息 +sim_info() +{ + m_debug "Quectel sim info" + + #SIM Slot(SIM卡卡槽) + at_command="AT+SMSIMCFG?" + sim_slot=$(at $at_port $at_command | grep "+SMSIMCFG:" | awk -F',' '{print $2}' | sed 's/\r//g') + + #IMEI(国际移动设备识别码) + at_command="AT+CGSN" + imei=$(at $at_port $at_command | sed -n '2p' | sed 's/\r//g') + + #SIM Status(SIM状态) + at_command="AT+CPIN?" + sim_status_flag=$(at $at_port $at_command | sed -n '2p') + sim_status=$(get_sim_status "$sim_status_flag") + + if [ "$sim_status" != "ready" ]; then + return + fi + + #ISP(互联网服务提供商) + at_command="AT+COPS?" + isp=$(at $at_port $at_command | sed -n '2p' | awk -F'"' '{print $2}') + # if [ "$isp" = "CHN-CMCC" ] || [ "$isp" = "CMCC" ]|| [ "$isp" = "46000" ]; then + # isp="中国移动" + # # elif [ "$isp" = "CHN-UNICOM" ] || [ "$isp" = "UNICOM" ] || [ "$isp" = "46001" ]; then + # elif [ "$isp" = "CHN-UNICOM" ] || [ "$isp" = "CUCC" ] || [ "$isp" = "46001" ]; then + # isp="中国联通" + # # elif [ "$isp" = "CHN-CT" ] || [ "$isp" = "CT" ] || [ "$isp" = "46011" ]; then + # elif [ "$isp" = "CHN-TELECOM" ] || [ "$isp" = "CTCC" ] || [ "$isp" = "46011" ]; then + # isp="中国电信" + # fi + + #SIM Number(SIM卡号码,手机号) + at_command="AT+CSCA?" + sim_number=$(at $at_port $at_command | sed -n '2p' | awk -F'"' '{print $2}') + + #IMSI(国际移动用户识别码) + at_command="AT+CIMI" + imsi=$(at $at_port $at_command | sed -n '2p' | sed 's/\r//g') + + #ICCID(集成电路卡识别码) + at_command="AT+ICCID" + iccid=$(at $at_port $at_command | grep -o "+ICCID:[ ]*[-0-9]\+" | grep -o "[-0-9]\{1,4\}") + class="SIM Information" + case "$sim_status" in + "ready") + add_plain_info_entry "SIM Status" "$sim_status" "SIM Status" + add_plain_info_entry "ISP" "$isp" "Internet Service Provider" + add_plain_info_entry "SIM Slot" "$sim_slot" "SIM Slot" + add_plain_info_entry "SIM Number" "$sim_number" "SIM Number" + add_plain_info_entry "IMEI" "$imei" "International Mobile Equipment Identity" + add_plain_info_entry "IMSI" "$imsi" "International Mobile Subscriber Identity" + add_plain_info_entry "ICCID" "$iccid" "Integrate Circuit Card Identity" + ;; + "miss") + add_plain_info_entry "SIM Status" "$sim_status" "SIM Status" + add_plain_info_entry "IMEI" "$imei" "International Mobile Equipment Identity" + ;; + "unknown") + add_plain_info_entry "SIM Status" "$sim_status" "SIM Status" + ;; + *) + add_plain_info_entry "SIM Status" "$sim_status" "SIM Status" + add_plain_info_entry "SIM Slot" "$sim_slot" "SIM Slot" + add_plain_info_entry "IMEI" "$imei" "International Mobile Equipment Identity" + add_plain_info_entry "IMSI" "$imsi" "International Mobile Subscriber Identity" + add_plain_info_entry "ICCID" "$iccid" "Integrate Circuit Card Identity" + ;; + esac +} + +#网络信息 +network_info() +{ + m_debug "Quectel network info" + + #Connect Status(连接状态) + + #Network Type(网络类型) + at_command="AT+CPSI?" + network_type=$(at ${at_port} ${at_command} | grep "+CPSI:" | awk -F',' '{print $1}' | sed 's/+CPSI: //g') + + [ -z "$network_type" ] && { + at_command='AT+COPS?' + local rat_num=$(at ${at_port} ${at_command} | grep "+COPS:" | awk -F',' '{print $4}' | sed 's/\r//g') + network_type=$(get_rat ${rat_num}) + } + + #CSQ(信号强度) + at_command="AT+CSQ" + response=$(at ${at_port} ${at_command} | grep "+CSQ:" | sed 's/+CSQ: //g' | sed 's/\r//g') + + #RSSI(信号强度指示) + # rssi_num=$(echo $response | awk -F',' '{print $1}') + # rssi=$(get_rssi $rssi_num) + #Ber(信道误码率) + # ber=$(echo $response | awk -F',' '{print $2}') + + #PER(信号强度) + # if [ -n "$csq" ]; then + # per=$((csq * 100/31))"%" + # fi + + class="Network Information" + add_plain_info_entry "Network Type" "$network_type" "Network Type" + add_plain_info_entry "CQI UL" "" "Channel Quality Indicator for Uplink" + add_plain_info_entry "CQI DL" "" "Channel Quality Indicator for Downlink" + add_plain_info_entry "AMBR UL" "" "Access Maximum Bit Rate for Uplink" + add_plain_info_entry "AMBR DL" "" "Access Maximum Bit Rate for Downlink" + add_plain_info_entry "Tx Rate" "" "Transmit Rate" + add_plain_info_entry "Rx Rate" "" "Receive Rate" +} + +#获取频段 +# $1:网络类型 +# $2:频段数字 +get_band() +{ + local band + band=$(echo $1 | sed 's/^0-9//g') + echo "$band" +} + +get_lockband_nr() +{ + local at_port="$1" + m_debug "Quectel sdx55 get lockband info" + get_wcdma_config_command='AT+CSYSSEL="w_band"' + get_lte_config_command='AT+CSYSSEL="lte_band"' + get_nsa_nr_config_command='AT+CSYSSEL="nsa_nr5g_band"' + get_sa_nr_config_command='AT+CSYSSEL="nr5g_band"' + wcdma_avalible_band="1,2,3,4,5,6,8,9,19" + lte_avalible_band="1,2,3,4,5,7,8,12,13,14,17,18,19,20,25,26,28,29,30,32,34,38,39,40,41,42,43,48,66,71" + nsa_nr_avalible_band="1,2,3,5,7,8,12,20,28,38,40,41,48,66,71,77,78,79" + sa_nr_avalible_band="1,2,3,5,7,8,12,20,28,38,40,41,48,66,71,77,78,79" + gw_band=$(at $at_port $get_wcdma_config_command |grep -e "+CSYSSEL: " ) + lte_band=$(at $at_port $get_lte_config_command|grep -e "+CSYSSEL: ") + nsa_nr_band=$(at $at_port $get_nsa_nr_config_command|grep -e "+CSYSSEL: ") + sa_nr_band=$(at $at_port $get_sa_nr_config_command|grep -e "+CSYSSEL: ") + json_add_object "UMTS" + json_add_array "available_band" + json_close_array + json_add_array "lock_band" + json_close_object + json_close_object + json_add_object "LTE" + json_add_array "available_band" + json_close_array + json_add_array "lock_band" + json_close_array + json_close_object + + json_add_object "NR" + json_add_array "available_band" + json_close_array + json_add_array "lock_band" + json_close_array + json_close_object + json_add_object "NR_NSA" + json_add_array "available_band" + json_close_array + json_add_array "lock_band" + json_close_array + json_close_object + for i in $(echo "$wcdma_avalible_band" | awk -F"," '{for(j=1; j<=NF; j++) print $j}'); do + json_select "UMTS" + json_select "available_band" + add_avalible_band_entry "$i" "UMTS_$i" + json_select .. + json_select .. + done + for i in $(echo "$lte_avalible_band" | awk -F"," '{for(j=1; j<=NF; j++) print $j}'); do + json_select "LTE" + json_select "available_band" + add_avalible_band_entry "$i" "LTE_B$i" + json_select .. + json_select .. + done + for i in $(echo "$nsa_nr_avalible_band" | awk -F"," '{for(j=1; j<=NF; j++) print $j}'); do + json_select "NR_NSA" + json_select "available_band" + add_avalible_band_entry "$i" "NSA_NR_N$i" + json_select .. + json_select .. + done + for i in $(echo "$sa_nr_avalible_band" | awk -F"," '{for(j=1; j<=NF; j++) print $j}'); do + json_select "NR" + json_select "available_band" + add_avalible_band_entry "$i" "SA_NR_N$i" + json_select .. + json_select .. + done + #+QNWPREFCFG: "nr5g_band",1:3:7:20:28:40:41:71:77:78:79 + for i in $(echo "$gw_band" | cut -d, -f2 |tr -d '\r' | awk -F":" '{for(j=1; j<=NF; j++) print $j}'); do + if [ -n "$i" ]; then + json_select "UMTS" + json_select "lock_band" + json_add_string "" "$i" + json_select .. + json_select .. + fi + done + for i in $(echo "$lte_band" | cut -d, -f2|tr -d '\r' | awk -F":" '{for(j=1; j<=NF; j++) print $j}'); do + if [ -n "$i" ]; then + json_select "LTE" + json_select "lock_band" + json_add_string "" "$i" + json_select .. + json_select .. + fi + done + for i in $(echo "$nsa_nr_band" | cut -d, -f2|tr -d '\r' | awk -F":" '{for(j=1; j<=NF; j++) print $j}'); do + if [ -n "$i" ]; then + json_select "NR_NSA" + json_select "lock_band" + json_add_string "" "$i" + json_select .. + json_select .. + fi + done + for i in $(echo "$sa_nr_band" | cut -d, -f2|tr -d '\r' | awk -F":" '{for(j=1; j<=NF; j++) print $j}'); do + if [ -n "$i" ]; then + json_select "NR" + json_select "lock_band" + json_add_string "" "$i" + json_select .. + json_select .. + fi + done + json_close_array +} + +get_lockband() +{ + json_add_object "lockband" + case "$platform" in + "qualcomm") + get_lockband_nr $at_port + ;; + *) + get_lockband_nr $at_port + ;; + esac + json_close_object +} + +set_lockband_nr(){ + lock_band=$(echo $lock_band | tr ',' ':') + case "$band_class" in + "UMTS") + at_command="AT+CSYSSEL=\"w_band\",$lock_band" + res=$(at $at_port $at_command) + ;; + "LTE") + at_command="AT+CSYSSEL=\"lte_band\",$lock_band" + res=$(at $at_port $at_command) + ;; + "NR_NSA") + at_command="AT+CSYSSEL=\"nsa_nr5g_band\",$lock_band" + res=$(at $at_port $at_command) + ;; + "NR") + at_command="AT+CSYSSEL=\"nr5g_band\",$lock_band" + res=$(at $at_port $at_command) + ;; + esac +} + +#设置锁频 +set_lockband() +{ + m_debug "quectel set lockband info" + config=$1 + #{"band_class":"NR","lock_band":"41,78,79"} + band_class=$(echo $config | jq -r '.band_class') + lock_band=$(echo $config | jq -r '.lock_band') + case "$platform" in + *) + set_lockband_nr + ;; + esac + json_select "result" + json_add_string "set_lockband" "$res" + json_add_string "config" "$config" + json_add_string "band_class" "$band_class" + json_add_string "lock_band" "$lock_band" + json_close_object +} + +get_neighborcell_qualcomm(){ + local at_command='AT+CPSI?' + nr_lock_check="AT+C5GCELLCFG?" + lte_lock_check="AT+CCELLCFG?" + lte_status=$(at $at_port $lte_lock_check | grep "+CCELLCFG:") + if [ "$lte_status" != "+CCELLCFG: 0,0" ]; then + lte_lock_status="locked" + else + lte_lock_status="" + fi + lte_lock_freq=$(echo $lte_status | awk -F',' '{print $2}' | sed 's/\r//g') + lte_lock_pci=$(echo $lte_status | awk -F',' '{print $1}' | sed 's/+CCELLCFG: //g' | sed 's/\r//g') + nr_status=$(at $at_port $nr_lock_check | grep "+C5GCELLCFG:") + nr_lock_status=$(echo $nr_status | awk -F': ' '{print $2}' | sed 's/\r//g') + nr_lock_pci=$(echo $nr_status | awk -F',' '{print $2}' | sed 's/\r//g') + nr_lock_freq=$(echo $nr_status | awk -F',' '{print $3}' | sed 's/\r//g') + nr_lock_scs=$(echo $nr_status | awk -F',' '{print $4}' | sed 's/\r//g') + nr_lock_band=$(echo $nr_status | awk -F',' '{print $5}' | sed 's/\r//g') + if [ "$nr_lock_status" != "0" ]; then + nr_lock_status="locked" + else + nr_lock_status="" + fi + + + at $at_port $at_command > /tmp/neighborcell + json_add_object "Feature" + json_add_string "Unlock" "2" + json_add_string "Lock PCI" "1" + json_add_string "Reboot Modem" "4" + json_add_string "Manually Search" "3" + json_close_object + json_add_array "NR" + json_close_array + json_add_array "LTE" + json_close_array + json_add_object "lockcell_status" + if [ -n "$lte_lock_status" ]; then + json_add_string "LTE" "$lte_lock_status" + json_add_string "LTE_Freq" "$lte_lock_freq" + json_add_string "LTE_PCI" "$lte_lock_pci" + else + json_add_string "LTE" "unlock" + fi + if [ -n "$nr_lock_status" ]; then + json_add_string "NR" "$nr_lock_status" + json_add_string "NR_Freq" "$nr_lock_freq" + json_add_string "NR_PCI" "$nr_lock_pci" + json_add_string "NR_SCS" "$nr_lock_scs" + json_add_string "NR_Band" "$nr_lock_band" + else + json_add_string "NR" "unlock" + fi + json_close_object + while read line; do + if [ -n "$(echo $line | grep "+CPSI:")" ]; then + # CPSI: NR5G_SA,Online,460-01,0x6F4700,29869309958,95,NR5G_BAND78,627264,-800,-110,14 + line=$(echo $line | sed 's/+CPSI: //g') + case $line in + *WCDMA*) + type="WCDMA" + + arfcn=$(echo $line | awk -F',' '{print $4}') + pci=$(echo $line | awk -F',' '{print $7}') + rscp=$(echo $line | awk -F',' '{print $11}') + ecno=$(echo $line | awk -F',' '{print $10}') + ;; + *LTE*) + type="LTE" + arfcn=$(echo $line | awk -F',' '{print $8}') + pci=$(echo $line | awk -F',' '{print $6}') + rsrp=$(echo $line | awk -F',' '{print $12}') + rsrq=$(echo $line | awk -F',' '{print $11}') + ;; + *NR5G_SA*) + type="NR5G_SA" + arfcn=$(echo $line | awk -F',' '{print $8}') + pci=$(echo $line | awk -F',' '{print $6}') + rsrp=$(echo $line | awk -F',' '{print $9}') + rsrq=$(echo $line | awk -F',' '{print $10}') + ;; + *NR5G_NSA*) + type="NR5G_NSA" + arfcn=$(echo $line | awk -F',' '{print $4}') + pci=$(echo $line | awk -F',' '{print $2}') + rsrp=$(echo $line | awk -F',' '{print $5}') + rsrq=$(echo $line | awk -F',' '{print $6}') + ;; + esac + json_select $type + json_add_object "" + json_add_string "neighbourcell" "neighbourcell" + json_add_string "arfcn" "$arfcn" + json_add_string "pci" "$pci" + json_add_string "rscp" "$rscp" + json_add_string "ecno" "$ecno" + json_add_string "rsrp" "$rsrp" + json_add_string "rsrq" "$rsrq" + json_close_object + json_select ".." + fi + done < /tmp/neighborcell +} + +get_neighborcell(){ + m_debug "quectel set lockband info" + json_add_object "neighborcell" + case "$platform" in + "qualcomm") + get_neighborcell_qualcomm + ;; + esac + json_close_object +} + +set_neighborcell(){ + #at_port,func,celltype,arfcn,pci,scs,nrband + # "lockpci" "1" + # "unlockcell" "2" + # "manually search" "3" + # "reboot modem" "4" + json_param=$1 +# {\"rat\":1,\"pci\":\"113\",\"arfcn\":\"627264\",\"band\":\"\",\"scs\":0}" + rat=$(echo $json_param | jq -r '.rat') + pci=$(echo $json_param | jq -r '.pci') + arfcn=$(echo $json_param | jq -r '.arfcn') + band=$(echo $json_param | jq -r '.band') + scs=$(echo $json_param | jq -r '.scs') + case $platform in + "qualcomm") + lockcell_qualcomm + ;; + esac + json_select "result" + json_add_string "setlockcell" "$res" + json_add_string "rat" "$rat" + json_add_string "pci" "$pci" + json_add_string "arfcn" "$arfcn" + json_add_string "band" "$band" + json_add_string "scs" "$scs" + json_close_object +} + +lockcell_qualcomm(){ + if [ -z "$pci" ] && [ -z "$arfcn" ]; then + unlock4g="AT+CCELLCFG=0" + unlocknr='AT+C5GCELLCFG="unlock"' + res1=$(at $at_port $unlocknr) + res2=$(at $at_port $unlock4g) + res=$res1,$res2 + else + lock4g="AT+CCELLCFG=1,$arfcn,$pci;+CNMP=38" + locknr="AT+C5GCELLCFG="pci",$pci,$arfcn,$(get_scs $scs),$band;+CNMP=71" + if [ $rat = "1" ]; then + res=$(at $at_port $locknr) + else + res=$(at $at_port $lock4g) + fi + fi + +} + +unlockcell(){ + unlock4g="AT+CCELLCFG=0" + unlocknr='AT+C5GCELLCFG="unlock"' + res2=$(at $1 $unlocknr) + res3=$(at $1 $unlock4g) +} +#UL_bandwidth +# $1:上行带宽数字 +get_bandwidth() +{ + local network_type="$1" + local bandwidth_num="$2" + + local bandwidth + case $network_type in + "LTE") + case $bandwidth_num in + "0") bandwidth="1.4" ;; + "1") bandwidth="3" ;; + "2"|"3"|"4"|"5") bandwidth=$((($bandwidth_num - 1) * 5)) ;; + esac + ;; + "NR") + case $bandwidth_num in + "0"|"1"|"2"|"3"|"4"|"5") bandwidth=$((($bandwidth_num + 1) * 5)) ;; + "6"|"7"|"8"|"9"|"10"|"11"|"12") bandwidth=$((($bandwidth_num - 2) * 10)) ;; + "13") bandwidth="200" ;; + "14") bandwidth="400" ;; + esac + ;; + esac + echo "$bandwidth" +} + +#获取NR子载波间隔 +# $1:NR子载波间隔数字 +get_scs() +{ + local scs + case $1 in + "0") scs="15" ;; + "1") scs="30" ;; + "2") scs="60" ;; + "3") scs="120" ;; + "4") scs="240" ;; + *) scs=$(awk "BEGIN{ print 2^$1 * 15 }") ;; + esac + echo "$scs" +} + +#获取物理信道 +# $1:物理信道数字 +get_phych() +{ + local phych + case $1 in + "0") phych="DPCH" ;; + "1") phych="FDPCH" ;; + esac + echo "$phych" +} + +#获取扩频因子 +# $1:扩频因子数字 +get_sf() +{ + local sf + case $1 in + "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7") sf=$(awk "BEGIN{ print 2^$(($1+2)) }") ;; + "8") sf="UNKNOWN" ;; + esac + echo "$sf" +} + +#获取插槽格式 +# $1:插槽格式数字 +get_slot() +{ + local slot=$1 + # case $1 in + # "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"|"10"|"11"|"12"|"13"|"14"|"15"|"16") slot=$1 ;; + # "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9") slot=$1 ;; + # esac + echo "$slot" +} + +process_signal_value() { + local value="$1" + echo "scale=1; $value / 10" | bc | awk '{printf("%g", $0)}' +} +#小区信息 +cell_info() +{ + m_debug "Quectel cell info" + + at_command1='AT+CPSI?' + at_command2='AT+CNWINFO?' + response1=$(at $at_port $at_command1) + response2=$(at $at_port $at_command2) + + local lte=$(echo "$response1" | grep "LTE") + local nr5g_nsa=$(echo "$response1" | grep "NR5G_NSA") + local CNWINFO=$(echo "$response2" | grep "+CNWINFO:") + if [ -n "$lte" ] && [ -n "$nr5g_nsa" ] ; then + #EN-DC模式 + network_mode="EN-DC Mode" + #LTE + # +CPSI: LTE,Online,460-01,0x7496,251941991,203,EUTRAN-BAND8,3740,3,3,-92,-672,-418,14 + # +CPSI: LTE,[,-,,,,,,,,,,,] + endc_lte_duplex_mode="" + endc_lte_mcc=$(echo "$lte" | awk -F',' '{print $3}' | awk -F'-' '{print $1}') + endc_lte_mnc=$(echo "$lte" | awk -F',' '{print $3}' | awk -F'-' '{print $2}') + endc_lte_cell_id=$(echo "$lte" | awk -F',' '{print $5}') + endc_lte_physical_cell_id=$(echo "$lte" | awk -F',' '{print $6}') + endc_lte_earfcn=$(echo "$lte" | awk -F',' '{print $8}') + endc_lte_freq_band_ind_num=$(echo "$lte" | awk -F',' '{print $7}') + endc_lte_freq_band_ind=$(get_band $endc_lte_freq_band_ind_num) + ul_bandwidth_num=$(echo "$lte" | awk -F',' '{print $10}') + endc_lte_ul_bandwidth=$(get_bandwidth "LTE" $ul_bandwidth_num) + dl_bandwidth_num=$(echo "$lte" | awk -F',' '{print $9}') + endc_lte_dl_bandwidth=$(get_bandwidth "LTE" $dl_bandwidth_num) + endc_lte_tac=$(echo "$lte" | awk -F',' '{print $4}') + endc_lte_rsrp=$(echo "$lte" | awk -F',' '{print $12}') + endc_lte_rsrp=$(process_signal_value $endc_lte_rsrp) + endc_lte_rsrq=$(echo "$lte" | awk -F',' '{print $11}') + endc_lte_rsrq=$(process_signal_value $endc_lte_rsrq) + endc_lte_rssi=$(echo "$lte" | awk -F',' '{print $13}') + endc_lte_rssi=$(process_signal_value $endc_lte_rssi) + endc_lte_sinr=$(echo "$lte" | awk -F',' '{print $14}') + endc_lte_cql=$(echo "$CNWINFO" | awk -F',' '{print $8}') + endc_lte_tx_power="" + endc_lte_srxlev="" + #NR5G-NSA + # +CPSI: NR5G_NSA,[,,,,,,,] + endc_nr_mcc="" + endc_nr_mnc="" + endc_nr_physical_cell_id=$(echo "$nr5g_nsa" | awk -F',' '{print $2}') + endc_nr_rsrp=$(echo "$nr5g_nsa" | awk -F',' '{print $5}') + endc_nr_rsrp=$(process_signal_value $endc_nr_rsrp) + endc_nr_sinr=$(echo "$nr5g_nsa" | awk -F',' '{print $7}') + endc_nr_sinr=$(process_signal_value $endc_nr_sinr) + endc_nr_rsrq=$(echo "$nr5g_nsa" | awk -F',' '{print $6}') + endc_nr_rsrq=$(process_signal_value $endc_nr_rsrq) + endc_nr_arfcn=$(echo "$nr5g_nsa" | awk -F',' '{print $4}') + endc_nr_band_num=$(echo "$nr5g_nsa" | awk -F',' '{print $3}') + endc_nr_band=$(get_band $endc_nr_band_num) + nr_dl_bandwidth_num=$(echo "$nr5g_nsa" | awk -F',' '{print $9}') + endc_nr_dl_bandwidth=$(get_bandwidth "NR" $nr_dl_bandwidth_num) + scs_num=$(echo "$nr5g_nsa" | awk -F',' '{print $8}' | sed 's/\r//g') + endc_nr_scs=$(get_scs $scs_num) + else + #SA,LTE,WCDMA模式 + #+CPSI: NR5G_SA,[,-,,,,,,,,] + response=$(echo "$response1" | grep "+CPSI:") + local rat=$(echo "$response" | awk -F',' '{print $1}' | sed 's/+CPSI: //g') + case $rat in + "NR5G_SA") + network_mode="NR5G-SA Mode" + nr_duplex_mode=$(echo "$response" | awk -F',' '{print $2}') + nr_mcc=$(echo "$response" | awk -F',' '{print $3}' | awk -F'-' '{print $1}') + nr_mnc=$(echo "$response" | awk -F',' '{print $3}' | awk -F'-' '{print $2}') + nr_cell_id=$(echo "$response" | awk -F',' '{print $5}') + nr_physical_cell_id=$(echo "$response" | awk -F',' '{print $6}') + nr_tac=$(echo "$response" | awk -F',' '{print $4}') + nr_arfcn=$(echo "$response" | awk -F',' '{print $8}') + nr_band_num=$(echo "$response" | awk -F',' '{print $7}') + nr_band=$(get_band $nr_band_num) + nr_dl_bandwidth=$(echo $CNWINFO | awk -F',' '{print $11}') + nr_rsrp=$(echo "$response" | awk -F',' '{print $9}') + nr_rsrp=$(process_signal_value $nr_rsrp) + nr_rsrq=$(echo "$response" | awk -F',' '{print $10}') + nr_rsrq=$(process_signal_value $nr_rsrq) + nr_sinr=$(echo "$response" | awk -F',' '{print $11}') + nr_scs_num="" + nr_scs=$(get_scs $nr_scs_num) + nr_rxlev=$(echo "$CNWINFO" | awk -F',' '{print $5}') + nr_cql=$(echo "$CNWINFO" | awk -F',' '{print $14}') + nr_dlmod=$(echo "$CNWINFO" | awk -F',' '{print $8}') + nr_ulmod=$(echo "$CNWINFO" | awk -F',' '{print $9}') + nr_tx_power=$(echo "$CNWINFO" | awk -F',' '{print $12}') + nr_rssi=$(echo "$CNWINFO" | awk -F',' '{print $13}') + nr_rssi=$(process_signal_value $nr_rssi) + ;; + "LTE") + # +CPSI: LTE,Online,460-01,0x7496,251941991,203,EUTRAN-BAND8,3740,3,3,-92,-672,-418,14 + # +CPSI: LTE,[,-,,,,,,,,,,,] + network_mode="LTE Mode" + lte_mcc=$(echo "$response" | awk -F',' '{print $3}' | awk -F'-' '{print $1}') + lte_mnc=$(echo "$response" | awk -F',' '{print $3}' | awk -F'-' '{print $2}') + lte_cell_id=$(echo "$response" | awk -F',' '{print $5}') + lte_physical_cell_id=$(echo "$response" | awk -F',' '{print $6}') + lte_earfcn=$(echo "$response" | awk -F',' '{print $8}') + lte_freq_band_ind_num=$(echo "$response" | awk -F',' '{print $7}') + lte_freq_band_ind=$(get_band $lte_freq_band_ind_num) + ul_bandwidth_num=$(echo "$response" | awk -F',' '{print $10}') + lte_ul_bandwidth=$(get_bandwidth "LTE" $ul_bandwidth_num) + dl_bandwidth_num=$(echo "$response" | awk -F',' '{print $9}') + lte_dl_bandwidth=$(get_bandwidth "LTE" $dl_bandwidth_num) + lte_tac=$(echo "$response" | awk -F',' '{print $4}') + lte_rsrp=$(echo "$response" | awk -F',' '{print $12}') + lte_rsrp=$(process_signal_value $lte_rsrp) + lte_rsrq=$(echo "$response" | awk -F',' '{print $11}') + lte_rsrq=$(process_signal_value $lte_rsrq) + lte_rssi=$(echo "$response" | awk -F',' '{print $13}') + lte_rssi=$(process_signal_value $lte_rssi) + lte_sinr=$(echo "$response" | awk -F',' '{print $14}') + lte_cql=$(echo "$CNWINFO" | awk -F',' '{print $8}') + lte_tx_power=$(echo "$CNWINFO" | awk -F',' '{print $9}') + lte_srxlev=$(echo "$CNWINFO" | awk -F',' '{print $4}') + ;; + "WCDMA") + # +CPSI: ,,-,,,,,,,,,,, + # +CPSI: WCDMA,Online,460-01,0xA809,11122855,WCDMAIMT2000,279,10663,0,1.5,62,33,52,500 + network_mode="WCDMA Mode" + wcdma_mcc=$(echo "$response" | awk -F',' '{print $3}' | awk -F'-' '{print $1}') + wcdma_mnc=$(echo "$response" | awk -F',' '{print $3}' | awk -F'-' '{print $2}') + wcdma_lac=$(echo "$response" | awk -F',' '{print $4}') + wcdma_cell_id=$(echo "$response" | awk -F',' '{print $5}') + wcdma_uarfcn=$(echo "$response" | awk -F',' '{print $8}') + wcdma_psc=$(echo "$response" | awk -F',' '{print $7}') + wcdma_rscp=$(echo "$response" | awk -F',' '{print $11}') + wcdma_rscp=$(process_signal_value $wcdma_rscp) + wcdma_ecio=$(echo "$response" | awk -F',' '{print $10}') + wcdma_tx_power=$(echo "$response" | awk -F',' '{print $14}') + wcdma_rxlev=$(echo "$CNWINFO" | awk -F',' '{print $13}') + ;; + esac + fi + class="Cell Information" + add_plain_info_entry "network_mode" "$network_mode" "Network Mode" + case $network_mode in + "NR5G-SA Mode") + add_plain_info_entry "MMC" "$nr_mcc" "Mobile Country Code" + add_plain_info_entry "MNC" "$nr_mnc" "Mobile Network Code" + add_plain_info_entry "Duplex Mode" "$nr_duplex_mode" "Duplex Mode" + add_plain_info_entry "Cell ID" "$nr_cell_id" "Cell ID" + add_plain_info_entry "Physical Cell ID" "$nr_physical_cell_id" "Physical Cell ID" + add_plain_info_entry "TAC" "$nr_tac" "Tracking area code of cell served by neighbor Enb" + add_plain_info_entry "ARFCN" "$nr_arfcn" "Absolute Radio-Frequency Channel Number" + add_plain_info_entry "Band" "$nr_band" "Band" + add_plain_info_entry "DL Bandwidth" "$nr_dl_bandwidth" "DL Bandwidth" + add_plain_info_entry "CQI" "$nr_cql" "Channel Quality Indicator" + add_plain_info_entry "TX Power" "$nr_tx_power" "TX Power" + add_plain_info_entry "DL/UL MOD" "$nr_dlmod / $nr_ulmod" "DL/UL MOD" + add_bar_info_entry "RSRP" "$nr_rsrp" "Reference Signal Received Power" -187 -29 dBm + add_bar_info_entry "RSRQ" "$nr_rsrq" "Reference Signal Received Quality" -43 20 dBm + add_bar_info_entry "RSSI" "$nr_rssi" "Received Signal Strength Indicator" -140 -44 dBm + add_bar_info_entry "SINR" "$nr_sinr" "Signal to Interference plus Noise Ratio Bandwidth" -23 40 dB + add_plain_info_entry "RxLev" "$nr_rxlev" "Received Signal Level" + add_plain_info_entry "SCS" "$nr_scs" "SCS" + add_plain_info_entry "Srxlev" "$nr_srxlev" "Serving Cell Receive Level" + ;; + "EN-DC Mode") + add_plain_info_entry "LTE" "LTE" "" + add_plain_info_entry "MCC" "$endc_lte_mcc" "Mobile Country Code" + add_plain_info_entry "MNC" "$endc_lte_mnc" "Mobile Network Code" + add_plain_info_entry "Duplex Mode" "$endc_lte_duplex_mode" "Duplex Mode" + add_plain_info_entry "Cell ID" "$endc_lte_cell_id" "Cell ID" + add_plain_info_entry "Physical Cell ID" "$endc_lte_physical_cell_id" "Physical Cell ID" + add_plain_info_entry "EARFCN" "$endc_lte_earfcn" "E-UTRA Absolute Radio Frequency Channel Number" + add_plain_info_entry "Freq band indicator" "$endc_lte_freq_band_ind" "Freq band indicator" + add_plain_info_entry "Band" "$endc_lte_band" "Band" + add_plain_info_entry "UL Bandwidth" "$endc_lte_ul_bandwidth" "UL Bandwidth" + add_plain_info_entry "DL Bandwidth" "$endc_lte_dl_bandwidth" "DL Bandwidth" + add_plain_info_entry "TAC" "$endc_lte_tac" "Tracking area code of cell served by neighbor Enb" + add_bar_info_entry "RSRP" "$endc_lte_rsrp" "Reference Signal Received Power" -140 -44 dBm + add_bar_info_entry "RSRQ" "$endc_lte_rsrq" "Reference Signal Received Quality" -20 20 dBm + add_bar_info_entry "RSSI" "$endc_lte_rssi" "Received Signal Strength Indicator" -140 -44 dBm + add_bar_info_entry "SINR" "$endc_lte_sinr" "Signal to Interference plus Noise Ratio Bandwidth" -23 40 dB + add_plain_info_entry "RxLev" "$endc_lte_rxlev" "Received Signal Level" + add_plain_info_entry "RSSNR" "$endc_lte_rssnr" "Radio Signal Strength Noise Ratio" + add_plain_info_entry "CQI" "$endc_lte_cql" "Channel Quality Indicator" + add_plain_info_entry "TX Power" "$endc_lte_tx_power" "TX Power" + add_plain_info_entry "Srxlev" "$endc_lte_srxlev" "Serving Cell Receive Level" + add_plain_info_entry NR5G-NSA "NR5G-NSA" "" + add_plain_info_entry "MCC" "$endc_nr_mcc" "Mobile Country Code" + add_plain_info_entry "MNC" "$endc_nr_mnc" "Mobile Network Code" + add_plain_info_entry "Physical Cell ID" "$endc_nr_physical_cell_id" "Physical Cell ID" + add_plain_info_entry "ARFCN" "$endc_nr_arfcn" "Absolute Radio-Frequency Channel Number" + add_plain_info_entry "Band" "$endc_nr_band" "Band" + add_plain_info_entry "DL Bandwidth" "$endc_nr_dl_bandwidth" "DL Bandwidth" + add_bar_info_entry "RSRP" "$endc_nr_rsrp" "Reference Signal Received Power" -187 -29 dBm + add_bar_info_entry "RSRQ" "$endc_nr_rsrq" "Reference Signal Received Quality" -43 20 dBm + add_bar_info_entry "SINR" "$endc_nr_sinr" "Signal to Interference plus Noise Ratio Bandwidth" -23 40 dB + add_plain_info_entry "SCS" "$endc_nr_scs" "SCS" + ;; + "LTE Mode") + add_plain_info_entry "MCC" "$lte_mcc" "Mobile Country Code" + add_plain_info_entry "MNC" "$lte_mnc" "Mobile Network Code" + add_plain_info_entry "Duplex Mode" "$lte_duplex_mode" "Duplex Mode" + add_plain_info_entry "Cell ID" "$lte_cell_id" "Cell ID" + add_plain_info_entry "Physical Cell ID" "$lte_physical_cell_id" "Physical Cell ID" + add_plain_info_entry "EARFCN" "$lte_earfcn" "E-UTRA Absolute Radio Frequency Channel Number" + add_plain_info_entry "Freq band indicator" "$lte_freq_band_ind" "Freq band indicator" + add_plain_info_entry "UL Bandwidth" "$lte_ul_bandwidth" "UL Bandwidth" + add_plain_info_entry "DL Bandwidth" "$lte_dl_bandwidth" "DL Bandwidth" + add_plain_info_entry "TAC" "$lte_tac" "Tracking area code of cell served by neighbor Enb" + add_bar_info_entry "RSRP" "$lte_rsrp" "Reference Signal Received Power" -140 -44 dBm + add_bar_info_entry "RSRQ" "$lte_rsrq" "Reference Signal Received Quality" -20 20 dBm + add_bar_info_entry "RSSI" "$lte_rssi" "Received Signal Strength Indicator" -140 -44 dBm + add_bar_info_entry "SINR" "$lte_sinr" "Signal to Interference plus Noise Ratio Bandwidth" -23 40 dB + add_plain_info_entry "CQI" "$lte_cql" "Channel Quality Indicator" + add_plain_info_entry "TX Power" "$lte_tx_power" "TX Power" + add_plain_info_entry "Srxlev" "$lte_srxlev" "Serving Cell Receive Level" + ;; + "WCDMA Mode") + add_plain_info_entry "MCC" "$wcdma_mcc" "Mobile Country Code" + add_plain_info_entry "MNC" "$wcdma_mnc" "Mobile Network Code" + add_plain_info_entry "LAC" "$wcdma_lac" "Location Area Code" + add_plain_info_entry "Cell ID" "$wcdma_cell_id" "Cell ID" + add_plain_info_entry "UARFCN" "$wcdma_uarfcn" "Uplink Absolute Radio Frequency Channel Number" + add_plain_info_entry "PSC" "$wcdma_psc" "Primary Scrambling Code" + add_bar_info_entry "RSCP" "$wcdma_rscp" "Received Signal Code Power" -120 -24 dBm + add_bar_info_entry "EC/IO" "$wcdma_ecio" "Ec/Io" -30 -5 dB + add_plain_info_entry "Tx Power" "$wcdma_tx_power" "Tx Power" + add_plain_info_entry "RxLev" "$wcdma_rxlev" "Received Signal Level" + ;; + esac +}