snowgum

quecteldata.sh

Dec 2nd, 2020 (edited)
338
93 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/sh
  2.  
  3. # /usr/lib/rooter/common/quecteldata.sh
  4.  
  5. ROOTER=/usr/lib/rooter
  6.  
  7. CURRMODEM=$1
  8. COMMPORT=$2
  9.  
  10. lte_bw() {
  11.     BW=$(echo $BW | grep -o "[0-5]\{1\}")
  12.     case $BW in
  13.         "0")
  14.             BW="1.4" ;;
  15.         "1")
  16.             BW="3" ;;
  17.         "2"|"3"|"4"|"5")
  18.             BW=$((($(echo $BW) - 1) * 5)) ;;
  19.     esac
  20. }
  21.  
  22. nr_bw() {
  23.     BW=$(echo $BW | grep -o "[0-9]\{1,2\}")
  24.     case $BW in
  25.         "0"|"1"|"2"|"3"|"4"|"5")
  26.             BW=$((($(echo $BW) + 1) * 5)) ;;
  27.         "6"|"7"|"8")
  28.             BW=$((($(echo $BW) - 2) * 10)) ;;
  29.         "9"|"10"|"11")
  30.             BW=$((($(echo $BW) - 1) * 10)) ;;
  31.         "12")
  32.             BW="200" ;;
  33.         "13")
  34.             BW="400" ;;
  35.     esac
  36. }
  37.  
  38. OX=$($ROOTER/gcom/gcom-locked "$COMMPORT" "quectelinfo.gcom" "$CURRMODEM")
  39.  
  40. OX=$(echo $OX | tr 'a-z' 'A-Z')
  41.  
  42. RSRP=""
  43. RSRQ=""
  44. CHANNEL="-"
  45. ECIO="-"
  46. RSCP="-"
  47. ECIO1=" "
  48. RSCP1=" "
  49. MODE="-"
  50. MODTYPE="-"
  51. NETMODE="-"
  52. LBAND="-"
  53. PCI="-"
  54. CTEMP="-"
  55. SINR="-"
  56. CSQ=$(echo $OX | grep -o "+CSQ: [0-9]\{1,2\}" | grep -o "[0-9]\{1,2\}")
  57. if [ "$CSQ" = "99" ]; then
  58.     CSQ=""
  59. fi
  60. if [ -n "$CSQ" ]; then
  61.     CSQ_PER=$(($CSQ * 100/31))"%"
  62.     CSQ_RSSI=$((2 * CSQ - 113))" dBm"
  63. else
  64.     CSQ="-"
  65.     CSQ_PER="-"
  66.     CSQ_RSSI="-"
  67. fi
  68. NR_NSA=$(echo $OX | grep -o "+QENG:[ ]\?\"NR5G-NSA\",")
  69. NR_SA=$(echo $OX | grep -o "+QENG: \"SERVINGCELL\",[^,]\+,\"NR5G-SA\",\"[DFT]\{3\}\",")
  70. if [ -n "$NR_NSA" ]; then
  71.     QENG=",,"$(echo $OX" " | grep -o "+QENG: \"LTE\".\+\"NR5G-NSA\"," | tr " " ",")
  72.     QENG5=$(echo $OX | grep -o "+QENG:[ ]\?\"NR5G-NSA\",[0-9]\{3\},[0-9]\{2,3\},[0-9]\{1,5\},-[0-9]\{2,5\},[-0-9]\{1,3\},-[0-9]\{2,3\},[0-9]\{6,7\},[0-9]\{1,3\}")
  73.     if [ -z "$QENG5" ]; then
  74.         QENG5=$(echo $OX | grep -o "+QENG:[ ]\?\"NR5G-NSA\",[0-9]\{3\},[0-9]\{2,3\},[0-9]\{1,5\},-[0-9]\{2,5\},[-0-9]\{1,3\},-[0-9]\{2,3\}")
  75.         if [ -n "$QENG5" ]; then
  76.             QENG5=$QENG5",,"
  77.         fi
  78.     fi
  79. elif [ -n "$NR_SA" ]; then
  80.     QENG=$(echo $NR_SA | tr " " ",")
  81.     QENG5=$(echo $OX | grep -o "+QENG: \"SERVINGCELL\",[^,]\+,\"NR5G-SA\",\"[DFT]\{3\}\",[ 0-9]\{3,4\},[0-9]\{2,3\},[0-9A-F]\{1,10\},[0-9]\{1,5\},[0-9A-F]\{2,6\},[0-9]\{6,7\},[0-9]\{1,3\},[0-9]\{1,2\},-[0-9]\{2,5\},-[0-9]\{2,3\},[-0-9]\{1,3\}")
  82. else
  83.     QENG=$(echo $OX" " | grep -o "+QENG: [^ ]\+ " | tr " " ",")
  84. fi
  85. QCA=$(echo $OX" " | grep -o "+QCAINFO: \"S[CS]\{2\}\".\+NWSCANMODE" | tr " " ",")
  86. QNSM=$(echo $OX | grep -o "+QCFG: \"NWSCANMODE\",[0-9]")
  87. QNWP=$(echo $OX | grep -o "+QNWPREFCFG: \"MODE_PREF\",[A-Z5:]\+" | cut -d, -f2)
  88. QTEMP=$(echo $OX | grep -o "+QTEMP: [0-9]\{1,3\}")
  89. if [ -z "$QTEMP" ]; then
  90.     QTEMP=$(echo $OX | grep -o "+QTEMP:[ ]\?\"XO[_-]THERM[_-].\+[0-9]\{1,3\}\"" | cut -d\" -f 4)
  91. fi
  92. if [ -z "$QTEMP" ]; then
  93.     QTEMP=$(echo $OX | grep -o "+QTEMP:[ ]\?\"MDM-CORE-USR.\+[0-9]\{1,3\}\"" | cut -d\" -f 4)
  94. fi
  95. if [ -n "$QTEMP" ]; then
  96.     CTEMP=$(echo $QTEMP | grep -o "[0-9]\{1,3\}")$(printf "\xc2\xb0")"C"
  97. fi
  98. RAT=$(echo $QENG | cut -d, -f4 | grep -o "[-A-Z5]\{3,7\}")
  99. case $RAT in
  100.     "GSM")
  101.         MODE="GSM"
  102.         ;;
  103.     "WCDMA")
  104.         MODE="WCDMA"
  105.         CHANNEL=$(echo $QENG | cut -d, -f9)
  106.         RSCP=$(echo $QENG | cut -d, -f12)
  107.         RSCP="-"$(echo $RSCP | grep -o "[0-9]\{1,3\}")
  108.         ECIO=$(echo $QENG | cut -d, -f13)
  109.         ECIO="-"$(echo $ECIO | grep -o "[0-9]\{1,3\}")
  110.         ;;
  111.     "LTE"|"CAT-M"|"CAT-NB")
  112.         MODE=$(echo $QENG | cut -d, -f5 | grep -o "[DFT]\{3\}")
  113.         if [ -n "$MODE" ]; then
  114.             MODE="$RAT $MODE"
  115.         else
  116.             MODE="$RAT"
  117.         fi
  118.         PCI=$(echo $QENG | cut -d, -f9)
  119.         CHANNEL=$(echo $QENG | cut -d, -f10)
  120.         LBAND=$(echo $QENG | cut -d, -f11 | grep -o "[0-9]\{1,3\}")
  121.         BW=$(echo $QENG | cut -d, -f12)
  122.         lte_bw
  123.         BWU=$BW
  124.         BW=$(echo $QENG | cut -d, -f13)
  125.         lte_bw
  126.         BWD=$BW
  127.         if [ -z "$BWD" ]; then
  128.             BWD="unknown"
  129.         fi
  130.         if [ -z "$BWU" ]; then
  131.             BWU="unknown"
  132.         fi
  133.         if [ -n "$LBAND" ]; then
  134.             LBAND="B"$LBAND" (Bandwidth $BWD MHz Down | $BWU MHz Up)"
  135.         fi
  136.         RSRP=$(echo $QENG | cut -d, -f15 | grep -o "[0-9]\{1,3\}")
  137.         if [ -n "$RSRP" ]; then
  138.             RSCP="-"$RSRP
  139.         fi
  140.         RSRQ=$(echo $QENG | cut -d, -f16 | grep -o "[0-9]\{1,3\}")
  141.         if [ -n $RSRQ ]; then
  142.             ECIO="-"$RSRQ
  143.         fi
  144.         SINRR=$(echo $QENG | cut -d, -f18 | grep -o "[0-9]\{1,3\}")
  145.         if [ -n "$SINRR" ]; then
  146.             if [ $SINRR -le 25 ]; then
  147.                 SINR=$((($(echo $SINRR) * 2) -20))" dB"
  148.             fi
  149.         fi
  150.  
  151.         if [ -n "$NR_NSA" ]; then
  152.             MODE="LTE/NR EN-DC"
  153.             if [ -n "$QENG5" ]  && [ -n "$LBAND" ] && [ "$RSCP" != "-" ] && [ "$ECIO" != "-" ]; then
  154.                 PCI="$PCI, "$(echo $QENG5 | cut -d, -f4)
  155.                 SCHV=$(echo $QENG5 | cut -d, -f8)
  156.                 SLBV=$(echo $QENG5 | cut -d, -f9)
  157.                 if [ -n "$SLBV" ]; then
  158.                     LBAND=$LBAND"<br />n"$SLBV
  159.                     CHANNEL=$CHANNEL", "$SCHV
  160.                 else
  161.                     LBAND=$LBAND"<br />nxx (unknown NR5G band)"
  162.                     CHANNEL=$CHANNEL", -"
  163.                 fi
  164.                 RSCP=$RSCP" dBm<br />"$(echo $QENG5 | cut -d, -f5)
  165.                 SINRR=$(echo $QENG5 | cut -d, -f6 | grep -o "[0-9]\{1,3\}")
  166.                 if [ -n "$SINRR" ]; then
  167.                     if [ $SINRR -le 30 ]; then
  168.                         SINR=$SINR" dB<br />"$((($(echo $SINRR) * 2) -20))" dB"
  169.                     fi
  170.                 fi
  171.                 ECIO=$ECIO" dB<br />"$(echo $QENG5 | cut -d, -f7)
  172.             fi
  173.         fi
  174.         if [ -z "$LBAND" ]; then
  175.             LBAND="-"
  176.         else
  177.             if [ -n "$QCA" ]; then
  178.                 QCA=$(echo $QCA | grep -o "\"S[CS]\{2\}\"[-0-9A-Z,\"]\+")
  179.                 for QCAL in $(echo "$QCA"); do
  180.                     if [ $(echo "$QCAL" | cut -d, -f7) = "2" ]; then
  181.                         SCHV=$(echo $QCAL | cut -d, -f2 | grep -o "[0-9]\+")
  182.                         SRATP="B"
  183.                         if [ -n "$SCHV" ]; then
  184.                             CHANNEL="$CHANNEL, $SCHV"
  185.                             if [ "$SCHV" -gt 123400 ]; then
  186.                                 SRATP="n"
  187.                             fi
  188.                         fi
  189.                         SLBV=$(echo $QCAL | cut -d, -f6 | grep -o "[0-9]\{1,2\}")
  190.                         if [ -n "$SLBV" ]; then
  191.                             LBAND=$LBAND"<br />"$SRATP$SLBV
  192.                             BWD=$(echo $QCAL | cut -d, -f3 | grep -o "[0-9]\{1,3\}")
  193.                             if [ -n "$BWD" ]; then
  194.                                 UPDOWN=$(echo $QCAL | cut -d, -f13)
  195.                                 case "$UPDOWN" in
  196.                                     "UL" )
  197.                                         CATYPE="CA"$(printf "\xe2\x86\x91") ;;
  198.                                     "DL" )
  199.                                         CATYPE="CA"$(printf "\xe2\x86\x93") ;;
  200.                                     * )
  201.                                         CATYPE="CA" ;;
  202.                                 esac
  203.                                 if [ $BWD -gt 14 ]; then
  204.                                     LBAND=$LBAND" ("$CATYPE", Bandwidth "$(($(echo $BWD) / 5))" MHz)"
  205.                                 else
  206.                                     LBAND=$LBAND" ("$CATYPE", Bandwidth 1.4 MHz)"
  207.                                 fi
  208.                             fi
  209.                             LBAND=$LBAND
  210.                         fi
  211.                         PCI="$PCI, "$(echo $QCAL | cut -d, -f8)
  212.                     fi
  213.                 done
  214.             fi
  215.         fi
  216.         if [ $RAT = "CAT-M" ] || [ $RAT = "CAT-NB" ]; then
  217.             LBAND="B$(echo $QENG | cut -d, -f11) ($RAT)"
  218.         fi
  219.         ;;
  220.     "NR5G-SA")
  221.         MODE="NR5G-SA"
  222.         if [ -n "$QENG5" ]; then
  223.             MODE="$RAT $(echo $QENG5 | cut -d, -f4)"
  224.             PCI=$(echo $QENG5 | cut -d, -f8)
  225.             CHANNEL=$(echo $QENG5 | cut -d, -f10)
  226.             LBAND=$(echo $QENG5 | cut -d, -f11)
  227.             BW=$(echo $QENG5 | cut -d, -f12)
  228.             nr_bw
  229.             LBAND="n"$LBAND" (Bandwidth $BW MHz)"
  230.             RSCP=$(echo $QENG5 | cut -d, -f13)
  231.             ECIO=$(echo $QENG5 | cut -d, -f14)
  232.             if [ "$CSQ_PER" = "-" ]; then
  233.                 CSQ_PER=$((100 - (($RSCP + 31) * 100/-125)))"%"
  234.             fi
  235.             SINRR=$(echo $QENG5 | cut -d, -f15 | grep -o "[0-9]\{1,3\}")
  236.             if [ -n "$SINRR" ]; then
  237.                 if [ $SINRR -le 30 ]; then
  238.                     SINR=$((($(echo $SINRR) * 2) -20))" dB"
  239.                 fi
  240.             fi
  241.         fi
  242.         ;;
  243. esac
  244.  
  245. QRSRP=$(echo "$OX" | grep -o "+QRSRP:[^,]\+,-[0-9]\{1,3\},-[0-9]\{1,3\},-[0-9]\{1,3\}")
  246. if [ -n "$QRSRP" ] && [ "$RAT" != "WCDMA" ]; then
  247.     RSCP=$(echo $QRSRP | cut -d, -f1 | grep -o "[-0-9]\+")
  248.     RSRP2=$(echo $QRSRP | cut -d, -f2)
  249.     RSRP3=$(echo $QRSRP | cut -d, -f3)
  250.     RSRP4=$(echo $QRSRP | cut -d, -f4)
  251.     if [ "$RSRP2$RSRP3$RSRP4" != "-44-44-44" ]; then
  252.         if [ "$RSRP3$RSRP4" == "-140-140" -o "$RSRP3$RSRP4" == "-44-44" ]; then
  253.             RSCP1="RxD "$(echo $QRSRP | cut -d, -f2)
  254.         else
  255.             RSCP=$RSCP" dBm (RxD "$RSRP2" dBm)<br />"$RSRP3
  256.             RSCP1="RxD "$RSRP4
  257.         fi
  258.     fi
  259.  
  260. fi
  261.  
  262. QNSM=$(echo "$QNSM" | grep -o "[0-9]")
  263. if [ -n "$QNSM" ]; then
  264.     MODTYPE="6"
  265.     case $QNSM in
  266.     "0" )
  267.         NETMODE="1" ;;
  268.     "1" )
  269.         NETMODE="3" ;;
  270.     "2"|"5" )
  271.         NETMODE="5" ;;
  272.     "3" )
  273.         NETMODE="7" ;;
  274.     esac
  275. fi
  276. if [ -n "$QNWP" ]; then
  277.     MODTYPE="6"
  278.     case $QNWP in
  279.     "AUTO" )
  280.         NETMODE="1" ;;
  281.     "WCDMA" )
  282.         NETMODE="5" ;;
  283.     "LTE" )
  284.         NETMODE="7" ;;
  285.     "LTE:NR5G" )
  286.         NETMODE="8" ;;
  287.     "NR5G" )
  288.         NETMODE="9" ;;
  289.     esac
  290. fi
  291.  
  292. CMODE=$(uci -q get modem.modem$CURRMODEM.cmode)
  293. if [ "$CMODE" = 0 ]; then
  294.     NETMODE="10"
  295. fi
  296.  
  297. {
  298.     echo 'CSQ="'"$CSQ"'"'
  299.     echo 'CSQ_PER="'"$CSQ_PER"'"'
  300.     echo 'CSQ_RSSI="'"$CSQ_RSSI"'"'
  301.     echo 'ECIO="'"$ECIO"'"'
  302.     echo 'RSCP="'"$RSCP"'"'
  303.     echo 'ECIO1="'"$ECIO1"'"'
  304.     echo 'RSCP1="'"$RSCP1"'"'
  305.     echo 'MODE="'"$MODE"'"'
  306.     echo 'MODTYPE="'"$MODTYPE"'"'
  307.     echo 'NETMODE="'"$NETMODE"'"'
  308.     echo 'CHANNEL="'"$CHANNEL"'"'
  309.     echo 'LBAND="'"$LBAND"'"'
  310.     echo 'PCI="'"$PCI"'"'
  311.     echo 'TEMP="'"$CTEMP"'"'
  312.     echo 'SINR="'"$SINR"'"'
  313. }  > /tmp/signal$CURRMODEM.file
  314.  
  315. WWANX=$(uci get modem.modem$CURRMODEM.interface)
  316. OPER=$(cat /sys/class/net/$WWANX/operstate 2>/dev/null)
  317.  
  318. if [ ! $OPER ]; then
  319.     exit 0
  320. fi
  321. if echo $OPER | grep -q "unknown"; then
  322.     exit 0
  323. fi
  324.  
  325. if echo $OPER | grep -q "down"; then
  326.     echo "1" > "/tmp/connstat"$CURRMODEM
  327. fi
  328.  
RAW Paste Data