From 706c4df15756fe1385616cc2580ad8dd076349b4 Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Thu, 15 May 2025 19:57:24 +0800 Subject: [PATCH] luci-app-qmodem: add cell info for TD Tech MT5700M-CN --- .../root/usr/share/qmodem/vendor/huawei.sh | 219 ++++++++++++++++++ 1 file changed, 219 insertions(+) diff --git a/luci/luci-app-qmodem/root/usr/share/qmodem/vendor/huawei.sh b/luci/luci-app-qmodem/root/usr/share/qmodem/vendor/huawei.sh index 70b2c1e..23e45c4 100755 --- a/luci/luci-app-qmodem/root/usr/share/qmodem/vendor/huawei.sh +++ b/luci/luci-app-qmodem/root/usr/share/qmodem/vendor/huawei.sh @@ -6,6 +6,11 @@ _Maintainer="Lean " source /usr/share/qmodem/generic.sh debug_subject="quectel_ctrl" +vendor_get_disabled_features(){ + json_add_string "" "NeighborCell" + json_add_string "" "LockBand" +} + function get_imei(){ imei=$(at $at_port "AT+CGSN" | grep -o '[0-9]\{15\}') json_add_string imei $imei @@ -63,6 +68,20 @@ function set_mode(){ at $at_port "AT^SETMODE=${mode_num}" } +function 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" +} + function get_network_prefer(){ res=$(at $at_port "AT^SYSCFGEX?"| grep "\^SYSCFGEX:" | sed 's/\^SYSCFGEX://g') # (RAT index): @@ -224,6 +243,206 @@ function base_info(){ _get_temperature } +cell_info() +{ + + + at_command="AT^MONSC" + response=$(at $at_port $at_command | grep "\^MONSC:" | sed 's/\^MONSC: //') + + local rat=$(echo "$response" | awk -F',' '{print $1}') + + case $rat in + "NR") + network_mode="NR5G-SA Mode" + nr_mcc=$(echo "$response" | awk -F',' '{print $2}') + nr_mnc=$(echo "$response" | awk -F',' '{print $3}') + nr_arfcn=$(echo "$response" | awk -F',' '{print $4}') + nr_scs_num=$(echo "$response" | awk -F',' '{print $5}') + nr_scs=$(get_scs ${nr_scs_num}) + nr_cell_id_hex=$(echo "$response" | awk -F',' '{print $6}') + nr_cell_id=$(echo "ibase=16; $nr_cell_id_hex" | bc) + nr_physical_cell_id_hex=$(echo "$response" | awk -F',' '{print $7}') + nr_physical_cell_id=$(echo "ibase=16; $nr_physical_cell_id_hex" | bc) + nr_tac=$(echo "$response" | awk -F',' '{print $8}') + nr_rsrp=$(echo "$response" | awk -F',' '{print $9}') + nr_rsrq=$(echo "$response" | awk -F',' '{print $10}') + nr_sinr=$(echo "$response" | awk -F',' '{print $11}' | sed 's/\r//g') + ;; + "LTE-NR") + network_mode="EN-DC Mode" + #LTE + endc_lte_mcc=$(echo "$response" | awk -F',' '{print $2}') + endc_lte_mnc=$(echo "$response" | awk -F',' '{print $3}') + endc_lte_earfcn=$(echo "$response" | awk -F',' '{print $4}') + endc_lte_cell_id_hex=$(echo "$response" | awk -F',' '{print $5}') + endc_lte_cell_id=$(echo "ibase=16; $endc_lte_cell_id_hex" | bc) + endc_lte_physical_cell_id_hex=$(echo "$response" | awk -F',' '{print $6}') + endc_lte_physical_cell_id=$(echo "ibase=16; $endc_lte_physical_cell_id_hex" | bc) + endc_lte_tac=$(echo "$response" | awk -F',' '{print $7}') + endc_lte_rsrp=$(echo "$response" | awk -F',' '{print $8}') + endc_lte_rsrq=$(echo "$response" | awk -F',' '{print $9}') + endc_lte_rxlev=$(echo "$response" | awk -F',' '{print $10}' | sed 's/\r//g') + #NR5G-NSA + endc_nr_mcc=$(echo "$response" | awk -F',' '{print $2}') + endc_nr_mnc=$(echo "$response" | awk -F',' '{print $3}') + endc_nr_arfcn=$(echo "$response" | awk -F',' '{print $4}') + endc_nr_scs_num=$(echo "$response" | awk -F',' '{print $5}') + nr_scs=$(get_scs ${nr_scs_num}) + endc_nr_cell_id_hex=$(echo "$response" | awk -F',' '{print $6}') + endc_nr_cell_id=$(echo "ibase=16; $endc_nr_cell_id_hex" | bc) + endc_nr_physical_cell_id_hex=$(echo "$response" | awk -F',' '{print $7}') + endc_nr_physical_cell_id=$(echo "ibase=16; $endc_nr_physical_cell_id_hex" | bc) + endc_nr_tac=$(echo "$response" | awk -F',' '{print $8}') + endc_nr_rsrp=$(echo "$response" | awk -F',' '{print $9}') + endc_nr_rsrq=$(echo "$response" | awk -F',' '{print $10}') + endc_nr_sinr=$(echo "$response" | awk -F',' '{print $11}' | sed 's/\r//g') + ;; + "LTE"|"eMTC"|"NB-IoT") + network_mode="LTE Mode" + lte_mcc=$(echo "$response" | awk -F',' '{print $2}') + lte_mnc=$(echo "$response" | awk -F',' '{print $3}') + lte_earfcn=$(echo "$response" | awk -F',' '{print $4}') + lte_cell_id_hex=$(echo "$response" | awk -F',' '{print $5}') + lte_cell_id=$(echo "ibase=16; $lte_cell_id_hex" | bc) + lte_physical_cell_id_hex=$(echo "$response" | awk -F',' '{print $6}') + lte_physical_cell_id=$(echo "ibase=16; $lte_physical_cell_id_hex" | bc) + lte_tac=$(echo "$response" | awk -F',' '{print $7}') + lte_rsrp=$(echo "$response" | awk -F',' '{print $8}') + lte_rsrq=$(echo "$response" | awk -F',' '{print $9}') + lte_rxlev=$(echo "$response" | awk -F',' '{print $10}' | sed 's/\r//g') + ;; + "WCDMA"|"TD-SCDMA"|"UMTS") + network_mode="WCDMA Mode" + wcdma_mcc=$(echo "$response" | awk -F',' '{print $2}') + wcdma_mnc=$(echo "$response" | awk -F',' '{print $3}') + wcdma_arfcn=$(echo "$response" | awk -F',' '{print $4}') + wcdma_psc=$(echo "$response" | awk -F',' '{print $5}') + wcdma_cell_id_hex=$(echo "$response" | awk -F',' '{print $6}') + wcdma_cell_id=$(echo "ibase=16; $wcdma_cell_id_hex" | bc) + wcdma_lac=$(echo "$response" | awk -F',' '{print $7}') + wcdma_rscp=$(echo "$response" | awk -F',' '{print $8}') + wcdma_rxlev=$(echo "$response" | awk -F',' '{print $9}') + wcdma_ecn0=$(echo "$response" | awk -F',' '{print $10}') + wcdma_drx=$(echo "$response" | awk -F',' '{print $11}') + wcdma_ura=$(echo "$response" | awk -F',' '{print $12}' | sed 's/\r//g') + ;; + "GSM") + network_mode="GSM Mode" + gsm_mcc=$(echo "$response" | awk -F',' '{print $2}') + gsm_mnc=$(echo "$response" | awk -F',' '{print $3}') + gsm_band_num=$(echo "$response" | awk -F',' '{print $4}') + gsm_band=$(tdtech_get_band "GSM" ${gsm_band_num}) + gsm_arfcn=$(echo "$response" | awk -F',' '{print $5}') + gsm_bsic=$(echo "$response" | awk -F',' '{print $6}') + gsm_cell_id_hex=$(echo "$response" | awk -F',' '{print $7}') + gsm_cell_id=$(echo "ibase=16; $gsm_cell_id_hex" | bc) + gsm_lac=$(echo "$response" | awk -F',' '{print $8}') + gsm_rxlev=$(echo "$response" | awk -F',' '{print $9}') + gsm_rx_quality=$(echo "$response" | awk -F',' '{print $10}') + gsm_ta=$(echo "$response" | awk -F',' '{print $11}' | sed 's/\r//g') + ;; + esac + + 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_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 "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 "Band" "$lte_band" "Band" + 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 "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 "RxLev" "$lte_rxlev" "Received Signal Level" + add_plain_info_entry "RSSNR" "$lte_rssnr" "Radio Signal Strength Noise Ratio" + 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" "UTRA Absolute Radio Frequency Channel Number" + add_plain_info_entry "PSC" "$wcdma_psc" "Primary Scrambling Code" + add_plain_info_entry "RAC" "$wcdma_rac" "Routing Area Code" + add_plain_info_entry "Band" "$wcdma_band" "Band" + add_bar_info_entry "RSCP" "$wcdma_rscp" "Received Signal Code Power" -120 -25 dBm + add_plain_info_entry "Ec/Io" "$wcdma_ecio" "Ec/Io" + add_plain_info_entry "Ec/No" "$wcdma_ecno" "Ec/No" + add_plain_info_entry "Physical Channel" "$wcdma_phych" "Physical Channel" + add_plain_info_entry "Spreading Factor" "$wcdma_sf" "Spreading Factor" + add_plain_info_entry "Slot" "$wcdma_slot" "Slot" + add_plain_info_entry "Speech Code" "$wcdma_speech_code" "Speech Code" + add_plain_info_entry "Compression Mode" "$wcdma_com_mod" "Compression Mode" + add_plain_info_entry "RxLev" "$wcdma_rxlev" "RxLev" + + ;; + esac +} + function network_info() { class="Network Information" at_command="AT^SYSINFOEX"