upgrade-run.sh 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. #!/bin/sh
  2. if [ -L /dev/fd ]; then
  3. echo fd exists
  4. else
  5. echo fd does not exist, link
  6. ln -s /proc/self/fd /dev/fd
  7. fi
  8. LOG_FILE=/opt/upgrade_wz_mini.log
  9. exec > >(busybox tee -a ${LOG_FILE}) 2>&1
  10. setup() {
  11. echo "Create Upgrade directory"
  12. mkdir /opt/Upgrade
  13. echo "Create backup files directory"
  14. mkdir /opt/Upgrade/preserve
  15. echo "Download latest master"
  16. wget --no-check-certificate https://github.com/gtxaspec/wz_mini_hacks/archive/refs/heads/master.zip -O /opt/Upgrade/wz_mini.zip; sync
  17. echo "Extract archive"
  18. unzip /opt/Upgrade/wz_mini.zip -d /opt/Upgrade/
  19. echo "Verify file integrity"
  20. cd /opt/Upgrade/wz_mini_hacks-master
  21. md5sum -c file.chk
  22. if [ $? -eq 0 ]
  23. then
  24. echo "files OK"
  25. install_upgrade_script
  26. else
  27. echo "Failure: archive has corrupted files"
  28. echo "Delete failed upgrade dir"
  29. rm -rf /opt/Upgrade
  30. exit 1
  31. fi
  32. }
  33. install_upgrade_script() {
  34. echo "Installing latest upgrade-script"
  35. cp /opt/Upgrade/wz_mini_hacks-master/SD_ROOT/wz_mini/bin/upgrade-run.sh /opt/wz_mini/bin/upgrade-run.sh
  36. #copy to old path for compatability
  37. cp /opt/Upgrade/wz_mini_hacks-master/SD_ROOT/wz_mini/bin/upgrade-run.sh /opt/wz_mini/usr/bin/upgrade-run.sh
  38. /opt/wz_mini/bin/upgrade-run.sh backup_begin
  39. }
  40. backup_begin() {
  41. echo "Backup user config"
  42. cp /opt/wz_mini/wz_mini.conf /opt/Upgrade/preserve/
  43. cp -r /opt/wz_mini/etc/configs /opt/Upgrade/preserve/
  44. cp -r /opt/wz_mini/etc/ssh /opt/Upgrade/preserve/
  45. cp -r /opt/wz_mini/etc/wireguard /opt/Upgrade/preserve/
  46. sync
  47. echo "Rebooting into UPGRADE MODE"
  48. reboot
  49. }
  50. upgrade_mode_start() {
  51. export WZMINI_CFG=/opt/wz_mini/wz_mini.conf
  52. [ -f $WZMINI_CFG ] && source $WZMINI_CFG
  53. set -x
  54. #WCV3 AUDIO GPIO
  55. GPIO=63
  56. V2="false"
  57. #Check model, change GPIO is HL_PAN2
  58. if [[ "$V2" == "false" ]]; then
  59. mount -t jffs2 /dev/mtdblock6 /configs
  60. if [[ $(cat /configs/.product_config | grep PRODUCT_MODEL) == "PRODUCT_MODEL=HL_PAN2" ]]; then
  61. umount /configs
  62. GPIO=7
  63. fi
  64. else
  65. echo "not HL_PAN2"
  66. fi
  67. #test for v2
  68. if [ -b /dev/mtdblock9 ]; then
  69. mount -t jffs2 /dev/mtdblock9 /params
  70. if cat /params/config/.product_config | grep WYZEC1-JZ; then
  71. V2="true"
  72. fi
  73. fi
  74. if [[ "$V2" == "true" ]]; then
  75. insmod /opt/Upgrade/wz_mini_hacks-master/SD_ROOT/wz_mini/lib/modules/3.10.14/extra/audio.ko
  76. LD_LIBRARY_PATH='/opt/wz_mini/lib' /opt/wz_mini/bin/audioplay_t20 /opt/Upgrade/wz_mini_hacks-master/SD_ROOT/wz_mini/usr/share/audio/upgrade_mode_v2.wav $AUDIO_PROMPT_VOLUME
  77. rmmod audio
  78. else
  79. insmod /opt/Upgrade/wz_mini_hacks-master/SD_ROOT/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/extra/audio.ko spk_gpio=$GPIO alc_mode=0 mic_gain=0
  80. /opt/wz_mini/bin/audioplay_t31 /opt/Upgrade/wz_mini_hacks-master/SD_ROOT/wz_mini/usr/share/audio/upgrade_mode.wav $AUDIO_PROMPT_VOLUME
  81. rmmod audio
  82. fi
  83. echo UPGRADE MODE
  84. if [[ "$V2" == "true" ]]; then
  85. echo "Upgrading kernel"
  86. flashcp -v /opt/Upgrade/wz_mini_hacks-master/v2_install/v2_kernel.bin /dev/mtd1
  87. fi
  88. umount -l /opt/wz_mini/tmp
  89. ls -l /opt/wz_mini/
  90. rm -rf /opt/wz_mini/*
  91. sync
  92. mv /opt/Upgrade/wz_mini_hacks-master/SD_ROOT/wz_mini/* /opt/wz_mini/
  93. rm -f /opt/factory_t31_ZMC6tiIDQN
  94. mv /opt/Upgrade/wz_mini_hacks-master/SD_ROOT/factory_t31_ZMC6tiIDQN /opt/factory_t31_ZMC6tiIDQN
  95. diff /opt/wz_mini/wz_mini.conf /opt/Upgrade/preserve/wz_mini.conf
  96. if [ $(cat /opt/Upgrade/preserve/wz_mini.conf | wc -l) != $(cat /opt/wz_mini/wz_mini.conf | wc -l) ]; then
  97. echo "doesn't match, keep old config"
  98. mv /opt/wz_mini/wz_mini.conf /opt/wz_mini/wz_mini.conf.dist
  99. cp /opt/Upgrade/preserve/wz_mini.conf /opt/wz_mini/
  100. else
  101. echo "configs match"
  102. cp /opt/Upgrade/preserve/wz_mini.conf /opt/wz_mini/
  103. fi
  104. cp /opt/Upgrade/preserve/ssh/* /opt/wz_mini/etc/ssh/
  105. cp /opt/Upgrade/preserve/configs/* /opt/wz_mini/etc/configs
  106. cp -r /opt/Upgrade/preserve/wireguard /opt/wz_mini/etc/
  107. rm -rf /opt/Upgrade
  108. sync
  109. reboot
  110. }
  111. if [[ -e /tmp/dbgflag ]]; then
  112. upgrade_mode_start
  113. else
  114. if [ "$1" == "backup_begin" ]; then
  115. backup_begin
  116. else
  117. read -r -p "${1:-wz_mini, this will download the latest version from github and upgrade your system. Are you sure? [y/N]} " response
  118. case "$response" in
  119. [yY][eE][sS]|[yY])
  120. if [[ -d /opt/Upgrade ]]; then
  121. echo "WARNING: Old Upgrade directory exists"
  122. read -r -p "${1:-Unable to proceed, must DELETE old Upgrade directory, are you sure? [y/N]} " response
  123. case "$response" in
  124. [yY][eE][sS]|[yY])
  125. rm -rf /opt/Upgrade
  126. sync
  127. setup
  128. ;;
  129. *)
  130. echo "User denied directory removal, exit"
  131. ;;
  132. esac
  133. else
  134. setup
  135. fi
  136. ;;
  137. *)
  138. echo "User declined system update, exit"
  139. ;;
  140. esac
  141. fi
  142. fi