404 lines
14 KiB
Bash
Executable File
404 lines
14 KiB
Bash
Executable File
#!/bin/sh
|
||
# Copyright (C) 2023 Siriling <siriling@qq.com>
|
||
|
||
#脚本目录
|
||
SCRIPT_DIR="/usr/share/modem"
|
||
source "${SCRIPT_DIR}/modem_debug.sh"
|
||
# source "${SCRIPT_DIR}/quectel.sh"
|
||
# source "${SCRIPT_DIR}/fibocom.sh"
|
||
# source "${SCRIPT_DIR}/simcom.sh"
|
||
|
||
#初值化数据结构
|
||
init_modem_info()
|
||
{
|
||
#基本信息
|
||
name='unknown' #名称
|
||
manufacturer='unknown' #制造商
|
||
revision='-' #固件版本
|
||
at_port='-' #AT串口
|
||
mode='unknown' #拨号模式
|
||
temperature="NaN $(printf "\xc2\xb0")C" #温度
|
||
update_time='-' #更新时间
|
||
|
||
#SIM卡信息
|
||
sim_status="unknown" #SIM卡状态
|
||
sim_slot="-" #SIM卡卡槽
|
||
isp="-" #运营商(互联网服务提供商)
|
||
sim_number='-' #SIM卡号码(手机号)
|
||
imei='-' #IMEI
|
||
imsi='-' #IMSI
|
||
iccid='-' #ICCID
|
||
|
||
#网络信息
|
||
connect_status="disconnect" #SIM卡状态
|
||
network_type="-" #蜂窝网络类型
|
||
cqi_ul="-" #上行信道质量指示
|
||
cqi_dl="-" #下行信道质量指示
|
||
ambr_ul="-" #上行签约速率
|
||
ambr_dl="-" #下行签约速率
|
||
tx_rate="-" #上传速率
|
||
rx_rate="-" #下载速率
|
||
|
||
#小区信息
|
||
network_mode="-" #网络模式
|
||
#NR5G-SA模式
|
||
nr_mcc=''
|
||
nr_mnc=''
|
||
nr_duplex_mode=''
|
||
nr_cell_id=''
|
||
nr_physical_cell_id=''
|
||
nr_tac=''
|
||
nr_arfcn=''
|
||
nr_band=''
|
||
nr_dl_bandwidth=''
|
||
nr_rsrp=''
|
||
nr_rsrq=''
|
||
nr_sinr=''
|
||
nr_scs=''
|
||
nr_rxlev=''
|
||
#EN-DC模式(LTE)
|
||
endc_lte_mcc=''
|
||
endc_lte_mnc=''
|
||
endc_lte_duplex_mode=''
|
||
endc_lte_cell_id=''
|
||
endc_lte_physical_cell_id=''
|
||
endc_lte_earfcn=''
|
||
endc_lte_freq_band_ind=''
|
||
endc_lte_ul_bandwidth=''
|
||
endc_lte_dl_bandwidth=''
|
||
endc_lte_tac=''
|
||
endc_lte_rsrp=''
|
||
endc_lte_rsrq=''
|
||
endc_lte_rssi=''
|
||
endc_lte_sinr=''
|
||
endc_lte_cql=''
|
||
endc_lte_tx_power=''
|
||
endc_lte_rxlev=''
|
||
#EN-DC模式(NR5G-NSA)
|
||
endc_nr_mcc=''
|
||
endc_nr_mnc=''
|
||
endc_nr_physical_cell_id=''
|
||
endc_nr_arfcn=''
|
||
endc_nr_band=''
|
||
endc_nr_dl_bandwidth=''
|
||
endc_nr_rsrp=''
|
||
endc_nr_rsrq=''
|
||
endc_nr_sinr=''
|
||
endc_nr_scs=''
|
||
#LTE模式
|
||
lte_mcc=''
|
||
lte_mnc=''
|
||
lte_duplex_mode=''
|
||
lte_cell_id=''
|
||
lte_physical_cell_id=''
|
||
lte_earfcn=''
|
||
lte_freq_band_ind=''
|
||
lte_ul_bandwidth=''
|
||
lte_dl_bandwidth=''
|
||
lte_tac=''
|
||
lte_rsrp=''
|
||
lte_rsrq=''
|
||
lte_rssi=''
|
||
lte_sinr=''
|
||
lte_cql=''
|
||
lte_tx_power=''
|
||
lte_rxlev=''
|
||
#WCDMA模式
|
||
wcdma_mcc=''
|
||
wcdma_mnc=''
|
||
wcdma_lac=''
|
||
wcdma_cell_id=''
|
||
wcdma_uarfcn=''
|
||
wcdma_psc=''
|
||
wcdma_rac=''
|
||
wcdma_rscp=''
|
||
wcdma_ecio=''
|
||
wcdma_phych=''
|
||
wcdma_sf=''
|
||
wcdma_slot=''
|
||
wcdma_speech_code=''
|
||
wcdma_com_mod=''
|
||
}
|
||
|
||
#设置基本信息
|
||
set_base_info()
|
||
{
|
||
base_info="\"base_info\":{
|
||
\"manufacturer\":\"$manufacturer\",
|
||
\"revision\":\"$revision\",
|
||
\"at_port\":\"$at_port\",
|
||
\"mode\":\"$mode\",
|
||
\"temperature\":\"$temperature\",
|
||
\"update_time\":\"$update_time\"
|
||
},"
|
||
}
|
||
|
||
#设置SIM卡信息
|
||
set_sim_info()
|
||
{
|
||
if [ "$sim_status" = "ready" ]; then
|
||
sim_info="\"sim_info\":[
|
||
{\"SIM Status\":\"$sim_status\", \"full_name\":\"SIM Status\"},
|
||
{\"ISP\":\"$isp\", \"full_name\":\"Internet Service Provider\"},
|
||
{\"SIM Slot\":\"$sim_slot\", \"full_name\":\"SIM Slot\"},
|
||
{\"SIM Number\":\"$sim_number\", \"full_name\":\"SIM Number\"},
|
||
{\"IMEI\":\"$imei\", \"full_name\":\"International Mobile Equipment Identity\"},
|
||
{\"IMSI\":\"$imsi\", \"full_name\":\"International Mobile Subscriber Identity\"},
|
||
{\"ICCID\":\"$iccid\", \"full_name\":\"Integrate Circuit Card Identity\"}
|
||
],"
|
||
elif [ "$sim_status" = "miss" ]; then
|
||
sim_info="\"sim_info\":[
|
||
{\"SIM Status\":\"$sim_status\", \"full_name\":\"SIM Status\"},
|
||
{\"IMEI\":\"$imei\", \"full_name\":\"International Mobile Equipment Identity\"}
|
||
],"
|
||
elif [ "$sim_status" = "unknown" ]; then
|
||
sim_info="\"sim_info\":[
|
||
{\"SIM Status\":\"$sim_status\", \"full_name\":\"SIM Status\"}
|
||
],"
|
||
else
|
||
sim_info="\"sim_info\":[
|
||
{\"SIM Status\":\"$sim_status\", \"full_name\":\"SIM Status\"},
|
||
{\"SIM Slot\":\"$sim_slot\", \"full_name\":\"SIM Slot\"},
|
||
{\"IMEI\":\"$imei\", \"full_name\":\"International Mobile Equipment Identity\"},
|
||
{\"IMSI\":\"$imsi\", \"full_name\":\"International Mobile Subscriber Identity\"},
|
||
{\"ICCID\":\"$iccid\", \"full_name\":\"Integrate Circuit Card Identity\"}
|
||
],"
|
||
fi
|
||
}
|
||
|
||
#设置网络信息
|
||
set_network_info()
|
||
{
|
||
network_info="\"network_info\":[
|
||
{\"Network Type\":\"$network_type\", \"full_name\":\"Network Type\"},
|
||
{\"CQI UL\":\"$cqi_ul\", \"full_name\":\"Channel Quality Indicator for Uplink\"},
|
||
{\"CQI DL\":\"$cqi_dl\", \"full_name\":\"Channel Quality Indicator for Downlink\"},
|
||
{\"AMBR UL\":\"$ambr_ul\", \"full_name\":\"Access Maximum Bit Rate for Uplink\"},
|
||
{\"AMBR DL\":\"$ambr_dl\", \"full_name\":\"Access Maximum Bit Rate for Downlink\"},
|
||
{\"Tx Rate\":\"$tx_rate\", \"full_name\":\"Transmit Rate\"},
|
||
{\"Rx Rate\":\"$rx_rate\", \"full_name\":\"Receive Rate\"}
|
||
],"
|
||
}
|
||
|
||
#设置信号信息
|
||
set_cell_info()
|
||
{
|
||
if [ "$network_mode" = "NR5G-SA Mode" ]; then
|
||
cell_info="\"cell_info\":{
|
||
\"NR5G-SA Mode\":[
|
||
{\"MCC\":\"$nr_mcc\", \"full_name\":\"Mobile Country Code\"},
|
||
{\"MNC\":\"$nr_mnc\", \"full_name\":\"Mobile Network Code\"},
|
||
{\"Duplex Mode\":\"$nr_duplex_mode\", \"full_name\":\"Duplex Mode\"},
|
||
{\"Cell ID\":\"$nr_cell_id\", \"full_name\":\"Cell ID\"},
|
||
{\"Physical Cell ID\":\"$nr_physical_cell_id\", \"full_name\":\"Physical Cell ID\"},
|
||
{\"TAC\":\"$nr_tac\", \"full_name\":\"Tracking area code of cell servedby neighbor Enb\"},
|
||
{\"ARFCN\":\"$nr_arfcn\", \"full_name\":\"Absolute Radio-Frequency Channel Number\"},
|
||
{\"Band\":\"$nr_band\", \"full_name\":\"Band\"},
|
||
{\"DL Bandwidth\":\"$nr_dl_bandwidth\", \"full_name\":\"DL Bandwidth\"},
|
||
{\"RSRP\":\"$nr_rsrp\", \"full_name\":\"Reference Signal Received Power\"},
|
||
{\"RSRQ\":\"$nr_rsrq\", \"full_name\":\"Reference Signal Received Quality\"},
|
||
{\"SINR\":\"$nr_sinr\", \"full_name\":\"Signal to Interference plus Noise Ratio Bandwidth\"},
|
||
{\"SCS\":\"$nr_scs\", \"full_name\":\"SCS\"},
|
||
{\"RxLev\":\"$nr_rxlev\", \"full_name\":\"Received Signal Level\"}
|
||
]
|
||
}"
|
||
elif [ "$network_mode" = "EN-DC Mode" ]; then
|
||
cell_info="\"cell_info\":{
|
||
\"EN-DC Mode\":[
|
||
{\"LTE\":[
|
||
{\"MCC\":\"$endc_lte_mcc\", \"full_name\":\"Mobile Country Code\"},
|
||
{\"MNC\":\"$endc_lte_mnc\", \"full_name\":\"Mobile Network Code\"},
|
||
{\"Duplex Mode\":\"$endc_lte_duplex_mode\", \"full_name\":\"Duplex Mode\"},
|
||
{\"Cell ID\":\"$endc_lte_cell_id\", \"full_name\":\"Cell ID\"},
|
||
{\"Physical Cell ID\":\"$endc_lte_physical_cell_id\", \"full_name\":\"Physical Cell ID\"},
|
||
{\"EARFCN\":\"$endc_lte_earfcn\", \"full_name\":\"E-UTRA Absolute Radio Frequency Channel Number\"},
|
||
{\"Freq band indicator\":\"$endc_lte_freq_band_ind\", \"full_name\":\"Freq band indicator\"},
|
||
{\"Band\":\"$endc_lte_band\", \"full_name\":\"Band\"},
|
||
{\"UL Bandwidth\":\"$endc_lte_ul_bandwidth\", \"full_name\":\"UL Bandwidth\"},
|
||
{\"DL Bandwidth\":\"$endc_lte_dl_bandwidth\", \"full_name\":\"DL Bandwidth\"},
|
||
{\"TAC\":\"$endc_lte_tac\", \"full_name\":\"Tracking area code of cell servedby neighbor Enb\"},
|
||
{\"RSRP\":\"$endc_lte_rsrp\", \"full_name\":\"Reference Signal Received Power\"},
|
||
{\"RSRQ\":\"$endc_lte_rsrq\", \"full_name\":\"Reference Signal Received Quality\"},
|
||
{\"RSSI\":\"$endc_lte_rssi\", \"full_name\":\"Received Signal Strength Indicator\"},
|
||
{\"SINR\":\"$endc_lte_sinr\", \"full_name\":\"Signal to Interference plus Noise Ratio Bandwidth\"},
|
||
{\"RSSNR\":\"$endc_lte_rssnr\", \"full_name\":\"Radio Signal Strength Noise Ratio\"},
|
||
{\"CQI\":\"$endc_lte_cql\", \"full_name\":\"Channel Quality Indicator\"},
|
||
{\"TX Power\":\"$endc_lte_tx_power\", \"full_name\":\"TX Power\"},
|
||
{\"RxLev\":\"$endc_lte_rxlev\", \"full_name\":\"Received Signal Level\"}
|
||
]
|
||
},
|
||
|
||
{\"NR5G-NSA\":[
|
||
{\"MCC\":\"$endc_nr_mcc\", \"full_name\":\"Mobile Country Code\"},
|
||
{\"MNC\":\"$endc_nr_mnc\", \"full_name\":\"Mobile Network Code\"},
|
||
{\"Physical Cell ID\":\"$endc_nr_physical_cell_id\", \"full_name\":\"Physical Cell ID\"},
|
||
{\"ARFCN\":\"$endc_nr_arfcn\", \"full_name\":\"Absolute Radio-Frequency Channel Number\"},
|
||
{\"Band\":\"$endc_nr_band\", \"full_name\":\"Band\"},
|
||
{\"DL Bandwidth\":\"$endc_nr_dl_bandwidth\", \"full_name\":\"DL Bandwidth\"},
|
||
{\"RSRP\":\"$endc_nr_rsrp\", \"full_name\":\"Reference Signal Received Power\"},
|
||
{\"RSRQ\":\"$endc_nr_rsrq\", \"full_name\":\"Reference Signal Received Quality\"},
|
||
{\"SINR\":\"$endc_nr_sinr\", \"full_name\":\"Signal to Interference plus Noise Ratio Bandwidth\"},
|
||
{\"SCS\":\"$endc_nr_scs\", \"full_name\":\"SCS\"}
|
||
]
|
||
}
|
||
]
|
||
}"
|
||
elif [ "$network_mode" = "LTE Mode" ]; then
|
||
cell_info="\"cell_info\":{
|
||
\"LTE Mode\":[
|
||
{\"MCC\":\"$lte_mcc\", \"full_name\":\"Mobile Country Code\"},
|
||
{\"MNC\":\"$lte_mnc\", \"full_name\":\"Mobile Network Code\"},
|
||
{\"Duplex Mode\":\"$lte_duplex_mode\", \"full_name\":\"Duplex Mode\"},
|
||
{\"Cell ID\":\"$lte_cell_id\", \"full_name\":\"Cell ID\"},
|
||
{\"Physical Cell ID\":\"$lte_physical_cell_id\", \"full_name\":\"Physical Cell ID\"},
|
||
{\"EARFCN\":\"$lte_earfcn\", \"full_name\":\"E-UTRA Absolute Radio Frequency Channel Number\"},
|
||
{\"Freq band indicator\":\"$lte_freq_band_ind\", \"full_name\":\"Freq band indicator\"},
|
||
{\"Band\":\"$lte_band\", \"full_name\":\"Band\"},
|
||
{\"UL Bandwidth\":\"$lte_ul_bandwidth\", \"full_name\":\"UL Bandwidth\"},
|
||
{\"DL Bandwidth\":\"$lte_dl_bandwidth\", \"full_name\":\"DL Bandwidth\"},
|
||
{\"TAC\":\"$lte_tac\", \"full_name\":\"Tracking area code of cell servedby neighbor Enb\"},
|
||
{\"RSRP\":\"$lte_rsrp\", \"full_name\":\"Reference Signal Received Power\"},
|
||
{\"RSRQ\":\"$lte_rsrq\", \"full_name\":\"Reference Signal Received Quality\"},
|
||
{\"RSSI\":\"$lte_rssi\", \"full_name\":\"Received Signal Strength Indicator\"},
|
||
{\"SINR\":\"$lte_sinr\", \"full_name\":\"Signal to Interference plus Noise Ratio Bandwidth\"},
|
||
{\"RSSNR\":\"$lte_rssnr\", \"full_name\":\"Radio Signal Strength Noise Ratio\"},
|
||
{\"CQI\":\"$lte_cql\", \"full_name\":\"Channel Quality Indicator\"},
|
||
{\"TX Power\":\"$lte_tx_power\", \"full_name\":\"TX Power\"},
|
||
{\"RxLev\":\"$lte_rxlev\", \"full_name\":\"RxLev\"}
|
||
]
|
||
}"
|
||
elif [ "$network_mode" = "WCDMA Mode" ]; then
|
||
cell_info="\"cell_info\":{
|
||
\"WCDMA Mode\":[
|
||
{\"MCC\":\"$wcdma_mcc\", \"full_name\":\"Mobile Country Code\"},
|
||
{\"MNC\":\"$wcdma_mnc\", \"full_name\":\"Mobile Network Code\"},
|
||
{\"LAC\":\"$wcdma_lac\", \"full_name\":\"Location Area Code\"},
|
||
{\"Cell ID\":\"$wcdma_cell_id\", \"full_name\":\"Cell ID\"},
|
||
{\"UARFCN\":\"$wcdma_uarfcn\", \"full_name\":\"UTRA Absolute Radio Frequency Channel Number\"},
|
||
{\"PSC\":\"$wcdma_psc\", \"full_name\":\"Primary Scrambling Code\"},
|
||
{\"RAC\":\"$wcdma_rac\", \"full_name\":\"Routing Area Code\"},
|
||
{\"Band\":\"$wcdma_band\", \"full_name\":\"Band\"},
|
||
{\"RSCP\":\"$wcdma_rscp\", \"full_name\":\"Received Signal Code Power\"},
|
||
{\"Ec/Io\":\"$wcdma_ecio\", \"full_name\":\"Ec/Io\"},
|
||
{\"Ec/No\":\"$wcdma_ecno\", \"full_name\":\"Ec/No\"},
|
||
{\"Physical Channel\":\"$wcdma_phych\", \"full_name\":\"Physical Channel\"},
|
||
{\"Spreading Factor\":\"$wcdma_sf\", \"full_name\":\"Spreading Factor\"},
|
||
{\"Slot\":\"$wcdma_slot\", \"full_name\":\"Slot\"},
|
||
{\"Speech Code\":\"$wcdma_speech_code\", \"full_name\":\"Speech Code\"},
|
||
{\"Compression Mode\":\"$wcdma_com_mod\", \"full_name\":\"Compression Mode\"},
|
||
{\"RxLev\":\"$wcdma_rxlev\", \"full_name\":\"RxLev\"}
|
||
]
|
||
}"
|
||
fi
|
||
}
|
||
|
||
#以Json格式保存模组信息
|
||
info_to_json()
|
||
{
|
||
base_info="\"base_info\":{},"
|
||
sim_info="\"sim_info\":{},"
|
||
network_info="\"network_info\":{},"
|
||
cell_info="\"cell_info\":{}"
|
||
|
||
#设置基本信息
|
||
set_base_info
|
||
|
||
#判断是否适配
|
||
if [ "$manufacturer" != "unknown" ]; then
|
||
#设置SIM卡信息
|
||
set_sim_info
|
||
fi
|
||
|
||
#判断插卡和连接状态
|
||
if [ "$sim_status" = "ready" ] && [ "$connect_status" = "connect" ]; then
|
||
#设置网络信息
|
||
set_network_info
|
||
#设置小区信息
|
||
set_cell_info
|
||
fi
|
||
|
||
#拼接所有信息(不要漏掉最后一个})
|
||
modem_info="{$base_info$modem_info$sim_info$network_info$cell_info}"
|
||
}
|
||
# echo $ECIO #参考信号接收质量 RSRQ ecio
|
||
# echo $ECIO1 #参考信号接收质量 RSRQ ecio1
|
||
# echo $RSCP #参考信号接收功率 RSRP rscp0
|
||
# echo $RSCP1 #参考信号接收功率 RSRP rscp1
|
||
# echo $SINR #信噪比 SINR rv["sinr"]
|
||
|
||
# #基站信息
|
||
# echo $COPS_MCC #MCC
|
||
# echo $$COPS_MNC #MNC
|
||
# echo $LAC #eNB ID
|
||
# echo '' #LAC_NUM
|
||
# echo $RNC #TAC
|
||
# echo '' #RNC_NUM
|
||
# echo $CID
|
||
# echo '' #CID_NUM
|
||
# echo $LBAND
|
||
# echo $channel
|
||
# echo $PCI
|
||
# echo $MODTYPE
|
||
# echo $QTEMP
|
||
|
||
#获取模组信息
|
||
get_modem_info()
|
||
{
|
||
update_time=$(date +"%Y-%m-%d %H:%M:%S")
|
||
|
||
debug "检查模组的AT串口"
|
||
#获取模块AT串口
|
||
if [ -z "$at_port" ]; then
|
||
debug "模组没有AT串口"
|
||
return
|
||
fi
|
||
|
||
#检查模块状态(是否处于重启,重置,串口异常状态)
|
||
local at_command="ATI"
|
||
local response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command)
|
||
if [[ "$response" = *"failed"* ]] || [[ "$response" = *"$at_port"* ]]; then
|
||
debug "模组AT串口未就绪"
|
||
return
|
||
fi
|
||
|
||
debug "根据模组的制造商获取信息"
|
||
#更多信息获取
|
||
case $manufacturer in
|
||
"quectel") get_quectel_info "${at_port}" "${define_connect}" ;;
|
||
"fibocom") get_fibocom_info "${at_port}" "${define_connect}" ;;
|
||
"simcom") get_simcom_info "${at_port}" "${define_connect}" ;;
|
||
*) debug "未适配该模组" ;;
|
||
esac
|
||
|
||
#获取更新时间
|
||
update_time=$(date +"%Y-%m-%d %H:%M:%S")
|
||
}
|
||
|
||
#获取模组数据信息
|
||
# $1:AT串口
|
||
# $2:制造商
|
||
# $3:连接定义
|
||
modem_info()
|
||
{
|
||
#初值化模组信息
|
||
debug "初值化模组信息"
|
||
init_modem_info
|
||
debug "初值化模组信息完成"
|
||
|
||
#获取模组信息
|
||
at_port="$1"
|
||
manufacturer="$2"
|
||
define_connect="$3"
|
||
|
||
debug "获取模组信息"
|
||
get_modem_info
|
||
|
||
#整合模块信息
|
||
info_to_json
|
||
echo $modem_info
|
||
|
||
#移动网络联网检查
|
||
# checkMobileNetwork
|
||
}
|
||
|
||
modem_info "$1" "$2" "$3" |