#!/bin/sh # Copyright (C) 2023 Siriling #脚本目录 SCRIPT_DIR="/usr/share/modem" #预设 meig_presets() { #关闭自动上报系统模式变化 at_command='AT^MODE=0' sh "${SCRIPT_DIR}/modem_at.sh" "$at_port" "$at_command" #关闭自动上报DS流量 at_command='AT^DSFLOWRPT=0,0,1' sh "${SCRIPT_DIR}/modem_at.sh" "$at_port" "$at_command" } #获取DNS # $1:AT串口 # $2:连接定义 meig_get_dns() { local at_port="$1" local define_connect="$2" [ -z "$define_connect" ] && { define_connect="1" } local public_dns1_ipv4="223.5.5.5" local public_dns2_ipv4="119.29.29.29" local public_dns1_ipv6="2400:3200::1" #下一代互联网北京研究中心:240C::6666,阿里:2400:3200::1,腾讯:2402:4e00:: local public_dns2_ipv6="2402:4e00::" #获取DNS地址 at_command="AT+CGCONTRDP=${define_connect}" local response=$(at ${at_port} ${at_command} | grep "+CGCONTRDP: " | grep -E '[0-9]+.[0-9]+.[0-9]+.[0-9]+' | sed -n '1p') local ipv4_dns1=$(echo "${response}" | awk -F',' '{print $7}' | awk -F' ' '{print $1}') [ -z "$ipv4_dns1" ] && { ipv4_dns1="${public_dns1_ipv4}" } local ipv4_dns2=$(echo "${response}" | awk -F',' '{print $8}' | awk -F' ' '{print $1}') [ -z "$ipv4_dns2" ] && { ipv4_dns2="${public_dns2_ipv4}" } local ipv6_dns1=$(echo "${response}" | awk -F',' '{print $7}' | awk -F' ' '{print $2}') [ -z "$ipv6_dns1" ] && { ipv6_dns1="${public_dns1_ipv6}" } local ipv6_dns2=$(echo "${response}" | awk -F',' '{print $8}' | awk -F' ' '{print $2}' | sed 's/\r//g') [ -z "$ipv6_dns2" ] && { ipv6_dns2="${public_dns2_ipv6}" } dns="{ \"dns\":{ \"ipv4_dns1\":\"$ipv4_dns1\", \"ipv4_dns2\":\"$ipv4_dns2\", \"ipv6_dns1\":\"$ipv6_dns1\", \"ipv6_dns2\":\"$ipv6_dns2\" } }" echo "$dns" } #获取拨号模式 # $1:AT串口 # $2:平台 meig_get_mode() { local at_port="$1" local platform="$2" at_command="AT+SER?" local mode_num=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+SER:" | sed 's/+SER: //g' | sed 's/\r//g') if [ -z "$mode_num" ]; then echo "unknown" return fi #获取芯片平台 if [ -z "$platform" ]; then local modem_number=$(uci -q get modem.@global[0].modem_number) for i in $(seq 0 $((modem_number-1))); do local at_port_tmp=$(uci -q get modem.modem$i.at_port) if [ "$at_port" = "$at_port_tmp" ]; then platform=$(uci -q get modem.modem$i.platform) break fi done fi local mode case "$platform" in "qualcomm") case "$mode_num" in "1") mode="qmi" ;; #- # "1") mode="gobinet" ;; "2") mode="ecm" ;; "7") mode="mbim" ;; "3") mode="rndis" ;; "2") mode="ncm" ;; *) mode="$mode_num" ;; esac ;; *) mode="$mode_num" ;; esac echo "${mode}" } #设置拨号模式 # $1:AT串口 # $2:拨号模式配置 meig_set_mode() { local at_port="$1" local mode_config="$2" #获取芯片平台 local platform local modem_number=$(uci -q get modem.@global[0].modem_number) for i in $(seq 0 $((modem_number-1))); do local at_port_tmp=$(uci -q get modem.modem$i.at_port) if [ "$at_port" = "$at_port_tmp" ]; then platform=$(uci -q get modem.modem$i.platform) break fi done #获取拨号模式配置 local mode_num case "$platform" in "qualcomm") case "$mode_config" in "qmi") mode_num="1" ;; # "gobinet") mode_num="1" ;; "ecm") mode_num="2" ;; "mbim") mode_num="7" ;; "rndis") mode_num="3" ;; "ncm") mode_num="2" ;; *) mode_num="1" ;; esac ;; *) mode_num="1" ;; esac #设置模组 at_command="AT+SER=${mode_num},1" sh ${SCRIPT_DIR}/modem_at.sh ${at_port} "${at_command}" } #获取网络偏好 # $1:AT串口 meig_get_network_prefer() { local at_port="$1" at_command="AT^SYSCFGEX?" local response=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "\^SYSCFGEX:" | awk -F'"' '{print $2}') local network_prefer_3g="0"; local network_prefer_4g="0"; local network_prefer_5g="0"; #匹配不同的网络类型 local auto=$(echo "${response}" | grep "00") if [ -n "$auto" ]; then network_prefer_3g="1" network_prefer_4g="1" network_prefer_5g="1" else local wcdma=$(echo "${response}" | grep "02") local lte=$(echo "${response}" | grep "03") local nr=$(echo "${response}" | grep "04") if [ -n "$wcdma" ]; then network_prefer_3g="1" fi if [ -n "$lte" ]; then network_prefer_4g="1" fi if [ -n "$nr" ]; then network_prefer_5g="1" fi fi local network_prefer="{ \"network_prefer\":{ \"3G\":$network_prefer_3g, \"4G\":$network_prefer_4g, \"5G\":$network_prefer_5g } }" echo "$network_prefer" } #设置网络偏好 # $1:AT串口 # $2:网络偏好配置 meig_set_network_prefer() { local at_port="$1" local network_prefer="$2" #获取网络偏好配置 local network_prefer_config #获取选中的数量 local count=$(echo "$network_prefer" | grep -o "1" | wc -l) #获取每个偏好的值 local network_prefer_3g=$(echo "$network_prefer" | jq -r '.["3G"]') local network_prefer_4g=$(echo "$network_prefer" | jq -r '.["4G"]') local network_prefer_5g=$(echo "$network_prefer" | jq -r '.["5G"]') case "$count" in "1") if [ "$network_prefer_3g" = "1" ]; then network_prefer_config="02" elif [ "$network_prefer_4g" = "1" ]; then network_prefer_config="03" elif [ "$network_prefer_5g" = "1" ]; then network_prefer_config="04" fi ;; "2") if [ "$network_prefer_3g" = "1" ] && [ "$network_prefer_4g" = "1" ]; then network_prefer_config="0302" elif [ "$network_prefer_3g" = "1" ] && [ "$network_prefer_5g" = "1" ]; then network_prefer_config="0402" elif [ "$network_prefer_4g" = "1" ] && [ "$network_prefer_5g" = "1" ]; then network_prefer_config="0403" fi ;; "3") network_prefer_config="00" ;; *) network_prefer_config="00" ;; esac #设置模组 at_command='AT^SYSCFGEX="'${network_prefer_config}'",all,0,2,all,all,all,all,1' sh ${SCRIPT_DIR}/modem_at.sh "${at_port}" "${at_command}" } #获取电压 # $1:AT串口 meig_get_voltage() { local at_port="$1" # #Voltage(电压) # at_command="AT+ADCREAD=0" # local voltage=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "+ADCREAD:" | awk -F' ' '{print $2}' | sed 's/\r//g') # voltage=$(awk "BEGIN{ printf \"%.2f\", $voltage / 1000000 }" | sed 's/\.*0*$//') # echo "${voltage}" } #获取温度 # $1:AT串口 meig_get_temperature() { local at_port="$1" #Temperature(温度) at_command="AT+TEMP" response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep 'TEMP: "cpu0-0-usr"' | awk -F'"' '{print $4}') local temperature if [ -n "$response" ]; then temperature="${response}$(printf "\xc2\xb0")C" fi echo "${temperature}" } #获取连接状态 # $1:AT串口 # $2:连接定义 meig_get_connect_status() { local at_port="$1" local define_connect="$2" #默认值为1 [ -z "$define_connect" ] && { define_connect="1" } at_command="AT+CGPADDR=${define_connect}" local ipv4=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+CGPADDR: " | awk -F',' '{print $2}') local not_ip="0.0.0.0" #设置连接状态 local connect_status if [ -z "$ipv4" ] || [[ "$ipv4" = *"$not_ip"* ]]; then connect_status="disconnect" else connect_status="connect" fi echo "${connect_status}" } #基本信息 meig_base_info() { debug "meig base info" #Name(名称) at_command="AT+CGMM" name=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "+CGMM: " | awk -F': ' '{print $2}' | sed 's/\r//g') #Manufacturer(制造商) at_command="AT+CGMI" manufacturer=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "+CGMI: " | awk -F': ' '{print $2}' | sed 's/\r//g') #Revision(固件版本) at_command="AT+CGMR" revision=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "+CGMR: " | awk -F': ' '{print $2}' | sed 's/\r//g') #Mode(拨号模式) mode=$(meig_get_mode ${at_port} ${platform} | tr 'a-z' 'A-Z') #Temperature(温度) temperature=$(meig_get_temperature ${at_port}) } #获取SIM卡状态 # $1:SIM卡状态标志 meig_get_sim_status() { local sim_status case $1 in "") sim_status="miss" ;; *"ERROR"*) sim_status="miss" ;; *"READY"*) sim_status="ready" ;; *"SIM PIN"*) sim_status="MT is waiting SIM PIN to be given" ;; *"SIM PUK"*) sim_status="MT is waiting SIM PUK to be given" ;; *"PH-FSIM PIN"*) sim_status="MT is waiting phone-to-SIM card password to be given" ;; *"PH-FSIM PIN"*) sim_status="MT is waiting phone-to-very first SIM card password to be given" ;; *"PH-FSIM PUK"*) sim_status="MT is waiting phone-to-very first SIM card unblocking password to be given" ;; *"SIM PIN2"*) sim_status="MT is waiting SIM PIN2 to be given" ;; *"SIM PUK2"*) sim_status="MT is waiting SIM PUK2 to be given" ;; *"PH-NET PIN"*) sim_status="MT is waiting network personalization password to be given" ;; *"PH-NET PUK"*) sim_status="MT is waiting network personalization unblocking password to be given" ;; *"PH-NETSUB PIN"*) sim_status="MT is waiting network subset personalization password to be given" ;; *"PH-NETSUB PUK"*) sim_status="MT is waiting network subset personalization unblocking password to be given" ;; *"PH-SP PIN"*) sim_status="MT is waiting service provider personalization password to be given" ;; *"PH-SP PUK"*) sim_status="MT is waiting service provider personalization unblocking password to be given" ;; *"PH-CORP PIN"*) sim_status="MT is waiting corporate personalization password to be given" ;; *"PH-CORP PUK"*) sim_status="MT is waiting corporate personalization unblocking password to be given" ;; *) sim_status="unknown" ;; esac echo "${sim_status}" } #SIM卡信息 meig_sim_info() { debug "meig sim info" #SIM Slot(SIM卡卡槽) at_command="AT^SIMSLOT?" response=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "\^SIMSLOT:" | awk -F': ' '{print $2}' | awk -F',' '{print $2}') if [ "$response" != "0" ]; then sim_slot="1" else sim_slot="2" fi #IMEI(国际移动设备识别码) at_command="AT+CGSN" imei=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | sed -n '2p' | sed 's/\r//g') #SIM Status(SIM状态) at_command="AT+CPIN?" sim_status_flag=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+CPIN: ") sim_status=$(meig_get_sim_status "$sim_status_flag") if [ "$sim_status" != "ready" ]; then return fi #ISP(互联网服务提供商) at_command="AT+COPS?" isp=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+COPS" | awk -F'"' '{print $2}') # if [ "$isp" = "CHN-CMCC" ] || [ "$isp" = "CMCC" ]|| [ "$isp" = "46000" ]; then # isp="中国移动" # elif [ "$isp" = "CHN-UNICOM" ] || [ "$isp" = "UNICOM" ] || [ "$isp" = "46001" ]; then # isp="中国联通" # elif [ "$isp" = "CHN-CT" ] || [ "$isp" = "CT" ] || [ "$isp" = "46011" ]; then # isp="中国电信" # fi #SIM Number(SIM卡号码,手机号) at_command="AT+CNUM" sim_number=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+CNUM: " | awk -F'"' '{print $2}') [ -z "$sim_number" ] && { sim_number=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+CNUM: " | awk -F'"' '{print $4}') } #IMSI(国际移动用户识别码) at_command="AT+CIMI" imsi=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | sed -n '2p' | sed 's/\r//g') #ICCID(集成电路卡识别码) at_command="AT+ICCID" iccid=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep -o "+ICCID:[ ]*[-0-9]\+" | grep -o "[-0-9]\{1,4\}") } #获取网络类型 # $1:网络类型数字 meig_get_rat() { local rat case $1 in "0"|"1"|"3"|"8") rat="GSM" ;; "2"|"4"|"5"|"6"|"9"|"10") rat="WCDMA" ;; "7") rat="LTE" ;; "11"|"12") rat="NR" ;; esac echo "${rat}" } #获取信号强度指示(4G) # $1:信号强度指示数字 meig_get_rssi() { local rssi case $1 in "99") rssi="unknown" ;; * ) rssi=$((2 * $1 - 113)) ;; esac echo "$rssi" } #获取4G签约速率 # $1:AT响应 # $2:上行或下行标志 meig_get_lte_ambr() { local response="$1" local flag="$2" local ambr case $flag in "ul") #使用awk拆分字符串 ambr=$(echo "$response" | awk -F',' '{ #使用split()函数将字符串拆分为数组 n = split($0, arr, ",") #循环遍历每个值 for (i = 1; i <= n-2; i=i+2) { if (arr[i] != "0") { tmp = arr[i] } else { break } } print tmp }') ;; "dl") #使用awk拆分字符串 ambr=$(echo "$response" | awk -F',' '{ #使用split()函数将字符串拆分为数组 n = split($0, arr, ",") #循环遍历每个值 for (i = 2; i <= n-2; i=i+2) { if (arr[i] != "0") { tmp = arr[i] } else { break } } print tmp }') ;; * ) #使用awk拆分字符串 ambr=$(echo "$response" | awk -F',' '{ #使用split()函数将字符串拆分为数组 n = split($0, arr, ",") #循环遍历每个值 for (i = 2; i <= n-2; i=i+2) { if (arr[i] != "0") { tmp = arr[i] } else { break } } print tmp }') ;; esac echo "$ambr" } #网络信息 meig_network_info() { debug "meig network info" #Connect Status(连接状态) connect_status=$(meig_get_connect_status ${at_port} ${define_connect}) if [ "$connect_status" != "connect" ]; then return fi #Network Type(网络类型) at_command="AT^SYSINFOEX" network_type=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "\^SYSINFOEX:" | awk -F'"' '{print $4}') [ -z "$network_type" ] && { at_command='AT+COPS?' local rat_num=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+COPS:" | awk -F',' '{print $4}' | sed 's/\r//g') network_type=$(meig_get_rat ${rat_num}) } #设置网络类型为5G时,信号强度指示用RSRP代替 # at_command="AT+GTCSQNREN=1" # sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command #CSQ(信号强度) at_command="AT+CSQ" response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "+CSQ:" | sed 's/+CSQ: //g' | sed 's/\r//g') #RSSI(4G信号强度指示) # rssi_num=$(echo $response | awk -F',' '{print $1}') # rssi=$(meig_get_rssi $rssi_num) #BER(4G信道误码率) # ber=$(echo $response | awk -F',' '{print $2}') # #PER(信号强度) # if [ -n "$csq" ]; then # per=$(($csq * 100/31))"%" # fi #最大比特率,信道质量指示 at_command="AT^DSAMBR=${define_connect}" response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "\^DSAMBR:" | awk -F': ' '{print $2}') at_command='AT+COPS?' local rat_num=$(sh ${SCRIPT_DIR}/modem_at.sh ${at_port} ${at_command} | grep "+COPS:" | awk -F',' '{print $4}' | sed 's/\r//g') local network_type_tmp=$(meig_get_rat ${rat_num}) case $network_type_tmp in "LTE") ambr_ul_tmp=$(meig_get_lte_ambr ${response} "ul") ambr_dl_tmp=$(meig_get_lte_ambr ${response} "dl") ;; "NR") ambr_ul_tmp=$(echo "$response" | awk -F',' '{print $9}') ambr_dl_tmp=$(echo "$response" | awk -F',' '{print $10}' | sed 's/\r//g') ;; *) ambr_ul_tmp=$(meig_get_lte_ambr ${response} "ul") ambr_dl_tmp=$(meig_get_lte_ambr ${response} "dl") ;; esac #AMBR UL(上行签约速率,单位,Mbps) ambr_ul=$(awk "BEGIN{ printf \"%.2f\", $ambr_ul_tmp / 1024 }" | sed 's/\.*0*$//') #AMBR DL(下行签约速率,单位,Mbps) ambr_dl=$(awk "BEGIN{ printf \"%.2f\", $ambr_dl_tmp / 1024 }" | sed 's/\.*0*$//') # #速率统计 # at_command='AT^DSFLOWQRY' # response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "\^DSFLOWRPT:" | sed 's/\^DSFLOWRPT: //g' | sed 's/\r//g') # #当前上传速率(单位,Byte/s) # tx_rate=$(echo $response | awk -F',' '{print $1}') # #当前下载速率(单位,Byte/s) # rx_rate=$(echo $response | awk -F',' '{print $2}') } #获取频段 # $1:网络类型 # $2:频段数字 meig_get_band() { local band case $1 in "WCDMA") band="$2" ;; "LTE") band="$2" ;; "NR") band="$2" ;; esac echo "$band" } #获取带宽 # $1:网络类型 # $2:带宽数字 meig_get_bandwidth() { local network_type="$1" local bandwidth_num="$2" local bandwidth case $network_type in "LTE") bandwidth=$(( $bandwidth_num / 5 )) ;; "NR") bandwidth="$bandwidth_num" ;; esac echo "$bandwidth" } #获取参考信号接收功率 # $1:网络类型 # $2:参考信号接收功率数字 meig_get_rsrp() { local rsrp case $1 in "LTE") rsrp=$(($2-141)) ;; "NR") rsrp=$(($2-157)) ;; esac echo "$rsrp" } #获取参考信号接收质量 # $1:网络类型 # $2:参考信号接收质量数字 meig_get_rsrq() { local rsrq case $1 in "LTE") rsrq=$(awk "BEGIN{ printf \"%.2f\", $2 * 0.5 - 20 }" | sed 's/\.*0*$//') ;; "NR") rsrq=$(awk -v num="$2" "BEGIN{ printf \"%.2f\", (num+1) * 0.5 - 44 }" | sed 's/\.*0*$//') ;; esac echo "$rsrq" } #获取信噪比 # $1:信噪比数字 meig_get_sinr() { local sinr=$(awk "BEGIN{ printf \"%.2f\", $1 / 10 }" | sed 's/\.*0*$//') echo "$sinr" } #小区信息 meig_cell_info() { debug "Meig cell info" at_command="AT^CELLINFO=${define_connect}" response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command | grep "\^CELLINFO:" | sed 's/\^CELLINFO://') local rat=$(echo "$response" | awk -F',' '{print $1}') case $rat in "5G") network_mode="NR5G-SA Mode" nr_duplex_mode=$(echo "$response" | awk -F',' '{print $2}') nr_mcc=$(echo "$response" | awk -F',' '{print $3}') nr_mnc=$(echo "$response" | awk -F',' '{print $4}') 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 $7}') nr_band_num=$(echo "$response" | awk -F',' '{print $8}') nr_band=$(meig_get_band "NR" ${nr_band_num}) nr_dl_bandwidth_num=$(echo "$response" | awk -F',' '{print $9}') nr_dl_bandwidth=$(meig_get_bandwidth "NR" ${nr_dl_bandwidth_num}) nr_scs=$(echo "$response" | awk -F',' '{print $10}') nr_fr_type=$(echo "$response" | awk -F',' '{print $11}') nr_dl_channel=$(echo "$response" | awk -F',' '{print $12}') nr_ul_channel=$(echo "$response" | awk -F',' '{print $13}') nr_rssi=$(echo "$response" | awk -F',' '{print $14}') nr_rsrp=$(echo "$response" | awk -F',' '{print $15}') nr_rsrq=$(echo "$response" | awk -F',' '{print $16}') nr_sinr_num=$(echo "$response" | awk -F',' '{print $17}') nr_sinr=$(meig_get_sinr ${nr_sinr_num}) nr_vonr=$(echo "$response" | awk -F',' '{print $18}' | sed 's/\r//g') ;; "LTE-NR") network_mode="EN-DC Mode" #LTE endc_lte_duplex_mode=$(echo "$response" | awk -F',' '{print $2}') endc_lte_mcc=$(echo "$response" | awk -F',' '{print $3}') endc_lte_mnc=$(echo "$response" | awk -F',' '{print $4}') endc_lte_global_cell_id=$(echo "$response" | awk -F',' '{print $5}') endc_lte_physical_cell_id=$(echo "$response" | awk -F',' '{print $6}') # endc_lte_eNBID=$(echo "$response" | awk -F',' '{print $7}') endc_lte_cell_id=$(echo "$response" | awk -F',' '{print $8}') endc_lte_tac=$(echo "$response" | awk -F',' '{print $9}') endc_lte_band_num=$(echo "$response" | awk -F',' '{print $10}') endc_lte_band=$(meig_get_band "LTE" ${endc_lte_band_num}) ul_bandwidth_num=$(echo "$response" | awk -F',' '{print $11}') endc_lte_ul_bandwidth=$(meig_get_bandwidth "LTE" ${ul_bandwidth_num}) endc_lte_dl_bandwidth="$endc_lte_ul_bandwidth" endc_lte_dl_channel=$(echo "$response" | awk -F',' '{print $12}') endc_lte_ul_channel=$(echo "$response" | awk -F',' '{print $13}') endc_lte_rssi=$(echo "$response" | awk -F',' '{print $14}') endc_lte_rsrp=$(echo "$response" | awk -F',' '{print $15}') endc_lte_rsrq=$(echo "$response" | awk -F',' '{print $16}') endc_lte_sinr_num=$(echo "$response" | awk -F',' '{print $17}') endc_lte_sinr=$(meig_get_sinr ${endc_lte_sinr_num}) endc_lte_rssnr=$(echo "$response" | awk -F',' '{print $18}') # endc_lte_ue_category=$(echo "$response" | awk -F',' '{print $19}') # endc_lte_pathloss=$(echo "$response" | awk -F',' '{print $20}') # endc_lte_cqi=$(echo "$response" | awk -F',' '{print $21}') endc_lte_tx_power=$(echo "$response" | awk -F',' '{print $22}') # endc_lte_tm=$(echo "$response" | awk -F',' '{print $23}') # endc_lte_qci=$(echo "$response" | awk -F',' '{print $24}') # endc_lte_volte=$(echo "$response" | awk -F',' '{print $25}') # endc_lte_ims_sms=$(echo "$response" | awk -F',' '{print $26}') # endc_lte_sib2_plmn_r15_info_present=$(echo "$response" | awk -F',' '{print $27}') # endc_lte_sib2_upr_layer_ind=$(echo "$response" | awk -F',' '{print $28}') # endc_lte_restrict_dcnr=$(echo "$response" | awk -F',' '{print $29}') #NR5G-NSA endc_nr_mcc=$(echo "$response" | awk -F',' '{print $3}') endc_nr_mnc=$(echo "$response" | awk -F',' '{print $4}') endc_nr_global_cell_id=$(echo "$response" | awk -F',' '{print $5}') endc_nr_physical_cell_id=$(echo "$response" | awk -F',' '{print $6}') endc_nr_cell_id=$(echo "$response" | awk -F',' '{print $8}') endc_nr_tac=$(echo "$response" | awk -F',' '{print $9}') endc_nr_rsrp=$(echo "$response" | awk -F',' '{print $30}') endc_nr_rsrq=$(echo "$response" | awk -F',' '{print $31}') endc_nr_sinr_num=$(echo "$response" | awk -F',' '{print $32}') endc_nr_sinr=$(meig_get_sinr ${endc_nr_sinr_num}) endc_nr_band_num=$(echo "$response" | awk -F',' '{print $33}') endc_nr_band=$(meig_get_band "NR" ${endc_nr_band_num}) endc_nr_freq=$(echo "$response" | awk -F',' '{print $34}') nr_dl_bandwidth_num=$(echo "$response" | awk -F',' '{print $35}') endc_nr_dl_bandwidth=$(meig_get_bandwidth "NR" ${nr_dl_bandwidth_num}) # endc_nr_pci=$(echo "$response" | awk -F',' '{print $36}') endc_nr_scs=$(echo "$response" | awk -F',' '{print $37}' | sed 's/\r//g') ;; "LTE"|"eMTC"|"NB-IoT") network_mode="LTE Mode" lte_duplex_mode=$(echo "$response" | awk -F',' '{print $2}') lte_mcc=$(echo "$response" | awk -F',' '{print $3}') lte_mnc=$(echo "$response" | awk -F',' '{print $4}') lte_global_cell_id=$(echo "$response" | awk -F',' '{print $5}') lte_physical_cell_id=$(echo "$response" | awk -F',' '{print $6}') lte_eNBID=$(echo "$response" | awk -F',' '{print $7}') lte_cell_id=$(echo "$response" | awk -F',' '{print $8}') let_tac=$(echo "$response" | awk -F',' '{print $9}') # lte_earfcn=$(echo "$response" | awk -F',' '{print $7}') lte_band_num=$(echo "$response" | awk -F',' '{print $10}') lte_band=$(meig_get_band "LTE" ${lte_band_num}) ul_bandwidth_num=$(echo "$response" | awk -F',' '{print $11}') lte_ul_bandwidth=$(meig_get_bandwidth "LTE" ${ul_bandwidth_num}) lte_dl_bandwidth="$lte_ul_bandwidth" lte_dl_channel=$(echo "$response" | awk -F',' '{print $12}') lte_ul_channel=$(echo "$response" | awk -F',' '{print $13}') lte_rssi=$(echo "$response" | awk -F',' '{print $14}') lte_rsrp=$(echo "$response" | awk -F',' '{print $15}') lte_rsrq=$(echo "$response" | awk -F',' '{print $16}') lte_sinr_num=$(echo "$response" | awk -F',' '{print $17}') lte_sinr=$(meig_get_sinr ${lte_sinr_num}) lte_rssnr=$(echo "$response" | awk -F',' '{print $18}') # lte_ue_category=$(echo "$response" | awk -F',' '{print $19}') # lte_pathloss=$(echo "$response" | awk -F',' '{print $20}') # lte_cqi=$(echo "$response" | awk -F',' '{print $21}') lte_tx_power=$(echo "$response" | awk -F',' '{print $22}') # lte_tm=$(echo "$response" | awk -F',' '{print $23}') # lte_qci=$(echo "$response" | awk -F',' '{print $24}') # lte_volte=$(echo "$response" | awk -F',' '{print $25}') # lte_ims_sms=$(echo "$response" | awk -F',' '{print $26}') # lte_sib2_plmn_r15_info_present=$(echo "$response" | awk -F',' '{print $27}') # lte_sib2_upr_layer_ind=$(echo "$response" | awk -F',' '{print $28}') # lte_restrict_dcnr=$(echo "$response" | awk -F',' '{print $29}' | sed 's/\r//g') ;; "WCDMA"|"UMTS") network_mode="WCDMA Mode" wcdma_mcc=$(echo "$response" | awk -F',' '{print $2}') wcdma_mnc=$(echo "$response" | awk -F',' '{print $3}') wcdma_global_cell_id=$(echo "$response" | awk -F',' '{print $4}') wcdma_psc=$(echo "$response" | awk -F',' '{print $5}') wcdma_NodeB=$(echo "$response" | awk -F',' '{print $6}') wcdma_cell_id=$(echo "$response" | awk -F',' '{print $7}') wcdma_lac=$(echo "$response" | awk -F',' '{print $8}') wcdma_band_num=$(echo "$response" | awk -F',' '{print $9}') wcdma_band=$(meig_get_band "WCDMA" ${wcdma_band_num}) wcdma_dl_channel=$(echo "$response" | awk -F',' '{print $10}') wcdma_ul_channel=$(echo "$response" | awk -F',' '{print $11}') wcdma_rssi=$(echo "$response" | awk -F',' '{print $12}') wcdma_ecio=$(echo "$response" | awk -F',' '{print $13}') # wcdma_sir=$(echo "$response" | awk -F',' '{print $14}') wcdma_rscp=$(echo "$response" | awk -F',' '{print $15}' | sed 's/\r//g') ;; "GSM") network_mode="GSM Mode" gsm_mcc=$(echo "$response" | awk -F',' '{print $3}') gsm_mnc=$(echo "$response" | awk -F',' '{print $4}') ;; esac } #获取美格模组信息 # $1:AT串口 # $2:平台 # $3:连接定义 get_meig_info() { debug "get meig info" #设置AT串口 at_port="$1" platform="$2" define_connect="$3" #基本信息 meig_base_info #SIM卡信息 meig_sim_info if [ "$sim_status" != "ready" ]; then return fi #网络信息 meig_network_info if [ "$connect_status" != "connect" ]; then return fi #小区信息 meig_cell_info }