snowgum

modechge.sh

Sep 21st, 2021
962
147 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/sh
  2.  
  3. ROOTER=/usr/lib/rooter
  4.  
  5. MODEMTYPE=$1
  6. NETMODE=$2
  7.  
  8. # log() {
  9.     logger -t "ModeChange" "$@"
  10. # }
  11.  
  12. CURRMODEM=$(uci get modem.general.modemnum)
  13. uci set modem.modem$CURRMODEM.cmode="0"
  14. uci set modem.modem$CURRMODEM.netmode="10"
  15. uci commit modem
  16.  
  17. MODEMTYPE=$(uci get modem.modem$CURRMODEM.modemtype)
  18. COMMPORT="/dev/ttyUSB"$(uci get modem.modem$CURRMODEM.commport)
  19.  
  20. # ZTE
  21. if [ $MODEMTYPE -eq 1 ]; then
  22.     case $NETMODE in
  23.         1*)
  24.             ATC="AT+ZSNT=0,0,0" ;;
  25.         2*)
  26.             ATC="AT+ZSNT=0,0,1" ;;
  27.         3*)
  28.             ATC="AT+ZSNT=1,0,0" ;;
  29.         4*)
  30.             ATC="AT+ZSNT=0,0,2" ;;
  31.         5*)
  32.             ATC="AT+ZSNT=2,0,0" ;;
  33.         6*)
  34.             ATC="AT+ZSNT=0,0,6" ;;
  35.         7*)
  36.             ATC="AT+ZSNT=6,0,0" ;;
  37.     esac
  38.     ATC=$ATC";+ZBANDI=0"
  39. fi
  40.  
  41. # Sierra
  42. if [ $MODEMTYPE -eq 2 ]; then
  43.     case $NETMODE in
  44.         "3" )
  45.             ATC="AT!SELRAT=2" ;;
  46.         "5" )
  47.             ATC="AT!SELRAT=1" ;;
  48.         "7" )
  49.             ATC="AT!SELRAT=6" ;;
  50.         * )
  51.             ATC="AT!SELRAT=0" ;;
  52.     esac
  53. fi
  54.  
  55. # Huawei LTE
  56. if [ $MODEMTYPE -eq 3 ]; then
  57.     case $NETMODE in
  58.                 1*)
  59.                         ATC="AT^SYSCFGEX=\"00\",40000000,2,4,40000000,," ;;
  60.                 2*)
  61.                         ATC="AT^SYSCFGEX=\"010203\",40000000,2,4,40000000,," ;;
  62.                 3*)
  63.                         ATC="AT^SYSCFGEX=\"01\",40000000,2,4,40000000,," ;;
  64.                 4*)
  65.                         ATC="AT^SYSCFGEX=\"020301\",40000000,2,4,40000000,," ;;
  66.                 5*)
  67.                         ATC="AT^SYSCFGEX=\"02\",40000000,2,4,40000000,," ;;
  68.                 6*)
  69.                         ATC="AT^SYSCFGEX=\"030201\",40000000,2,4,40000000,," ;;
  70.                 7*)
  71.                         ATC="AT^SYSCFGEX=\"03\",40000000,2,4,40000000,," ;;
  72.         esac
  73. fi
  74.  
  75. # Huawei legacy
  76. if [ $MODEMTYPE -eq 4 ]; then
  77.     case $NETMODE in
  78.         1*)
  79.             ATC="AT^SYSCFG=2,0,40000000,2,4" ;;
  80.         2*)
  81.             ATC="AT^SYSCFG=2,1,40000000,2,4" ;;
  82.         3*)
  83.             ATC="AT^SYSCFG=13,1,40000000,2,4" ;;
  84.         4*)
  85.             ATC="AT^SYSCFG=2,2,40000000,2,4" ;;
  86.         5*)
  87.             ATC="AT^SYSCFG=14,2,40000000,2,4" ;;
  88.     esac
  89. fi
  90.  
  91. # ublox
  92. if [ $MODEMTYPE -eq 5 ]; then
  93.     case $NETMODE in
  94.         1*)
  95.             ATC="AT+CFUN=4;+URAT=4,3;+CFUN=1,1" ;;
  96.         2*)
  97.             ATC="AT+CFUN=4;+URAT=4,0;+CFUN=1,1" ;;
  98.         3*)
  99.             ATC="AT+CFUN=4;+URAT=0;+CFUN=1,1" ;;
  100.         4*)
  101.             ATC="AT+CFUN=4;+URAT=4,2;+CFUN=1,1" ;;
  102.         5*)
  103.             ATC="AT+CFUN=4;+URAT=2;+CFUN=1,1" ;;
  104.         6*)
  105.             ATC="AT+CFUN=4;+URAT=4,3;+CFUN=1,1" ;;
  106.         7*)
  107.             ATC="AT+CFUN=4;+URAT=4,3;+CFUN=1,1" ;;
  108.     esac
  109. fi
  110.  
  111. # Quectel
  112. if [ $MODEMTYPE -eq 6 ]; then
  113.     CURRMODEM=$(uci -q get modem.general.modemnum)
  114.     VID=$(uci -q get modem.modem$CURRMODEM.idV)
  115.     PID=$(uci -q get modem.modem$CURRMODEM.idP)
  116.     ATCMDD="AT+CGMM"
  117.     model=$($ROOTER/gcom/gcom-locked "$COMMPORT" "run-at.gcom" "$CURRMODEM" "$ATCMDD")
  118.     EM20=$(echo "$model" | grep "EM20")
  119.     if [ $EM20 ]; then
  120.         PID="0"
  121.     fi
  122.     NEWFMT=false
  123.     if [ "$VID" = "2c7c" ]; then
  124.         if [ "$PID" = "0800" ] || [ "$PID" = "0620" ]; then
  125.             NEWFMT=true
  126.         fi
  127.     fi
  128.     case $NETMODE in
  129.         "3")
  130.             ATC="AT+QCFG=\"nwscanmode\",1" ;;
  131.         "5")
  132.             if $NEWFMT; then
  133.                 ATC="AT+QNWPREFCFG=\"mode_pref\",WCDMA"
  134.             else
  135.                 ATC="AT+QCFG=\"nwscanmode\",2"
  136.             fi
  137.             ;;
  138.         "7")
  139.             if $NEWFMT; then
  140.                 ATC="AT+QNWPREFCFG=\"mode_pref\",LTE"
  141.             else
  142.                 ATC="AT+QCFG=\"nwscanmode\",3"
  143.             fi
  144.             ;;
  145.         "8")
  146.             ATC="AT+QNWPREFCFG=\"mode_pref\",LTE:NR5G" ;;
  147.         "9")
  148.             ATC="AT+QNWPREFCFG=\"mode_pref\",NR5G" ;;
  149.         *)
  150.             if $NEWFMT; then
  151.                 ATC="AT+QNWPREFCFG=\"mode_pref\",AUTO"
  152.             else
  153.                 ATC="AT+QCFG=\"nwscanmode\",0"
  154.             fi
  155.             ;;
  156.     esac
  157. fi
  158.  
  159. # MEIG
  160. if [ $MODEMTYPE -eq 7 ]; then
  161.     case $NETMODE in
  162.         "3")
  163.             ATC="AT+MODODR=3" ;;
  164.         "5")
  165.             ATC="AT+MODODR=1" ;;
  166.         "7")
  167.             ATC="AT+MODODR=5" ;;
  168.         *)
  169.             ATC="AT+MODODR=2" ;;
  170.     esac
  171. fi
  172.  
  173. # Foxconn, Telit, etc.
  174. if [ $MODEMTYPE -eq 8 ]; then
  175.     case $NETMODE in
  176.         "2")
  177.             ATC="AT^SYSCONFIG=2,1,2,4" ;;
  178.         "3")
  179.             ATC="AT^SYSCONFIG=13,3,2,4" ;;
  180.         "4")
  181.             ATC="AT^SYSCONFIG=2,2,2,4" ;;
  182.         "5")
  183.             ATC="AT^SLMODE=1,14" ;;
  184.         "7")
  185.             ATC="AT^SLMODE=1,30" ;;
  186.         *)
  187.             ATC="AT^SLMODE=1,4" ;;
  188.     esac
  189. fi
  190.  
  191. # Fibocom
  192. if [ $MODEMTYPE -eq 9 ]; then
  193.     CURRMODEM=$(uci -q get modem.general.modemnum)
  194.     idP=$(uci -q get modem.modem$CURRMODEM.idP)
  195.     idPP=${idP:1:1}
  196.     if [ "$idPP" = "1" ]; then
  197.         case $NETMODE in
  198.             "7")
  199.                 ATC="AT+GTRAT=3" ;;
  200.             "8")
  201.                 ATC="AT+GTRAT=17" ;;
  202.             "9")
  203.                 ATC="AT+GTRAT=14" ;;
  204.             *)
  205.                 ATC="AT+GTRAT=10" ;;
  206.         esac
  207.     else
  208.         case $NETMODE in
  209.             "4")
  210.                 ATC="AT+XACT=4,1" ;;
  211.             "5")
  212.                 ATC="AT+XACT=1" ;;
  213.             "7")
  214.                 ATC="AT+XACT=2" ;;
  215.             *)
  216.                 ATC="AT+XACT=4,2" ;;
  217.         esac
  218.     fi
  219.  
  220. fi
  221.  
  222. # SIMCom
  223. if [ $MODEMTYPE -eq 10 ]; then
  224.     case $NETMODE in
  225.         "3")
  226.             ATC="AT+CNMP=13" ;;
  227.         "5")
  228.             ATC="AT+CNMP=14" ;;
  229.         "7")
  230.             ATC="AT+CNMP=38" ;;
  231.         "8")
  232.             ATC="AT+CNMP=109" ;;
  233.         "9")
  234.             ATC="AT+CNMP=71" ;;
  235.         *)
  236.             ATC="AT+CNMP=1" ;;
  237.     esac
  238. fi
  239.  
  240. ATCMDD="$ATC"
  241. OX=$($ROOTER/gcom/gcom-locked "$COMMPORT" "run-at.gcom" "$CURRMODEM" "$ATCMDD")
  242.  
  243. $ROOTER/luci/celltype.sh $CURRMODEM
  244. uci set modem.modem$CURRMODEM.cmode="1"
  245. uci commit modem
  246.  
  247. $ROOTER/luci/mask.sh
  248.  
RAW Paste Data