upgrade-run.sh 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. #!/bin/sh
  2. if [ -L /dev/fd ]; then
  3. echo "fd exists" > /dev/null
  4. else
  5. echo "fd does not exist, link" > /dev/null
  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. BRANCH="master"
  11. setup() {
  12. echo "Create Upgrade staging directory"
  13. mkdir /opt/.Upgrade
  14. echo "Create backup files directory"
  15. mkdir /opt/.Upgrade/preserve
  16. echo "Download latest $BRANCH"
  17. wget --no-check-certificate https://github.com/gtxaspec/wz_mini_hacks/archive/refs/heads/$BRANCH.tar.gz -O /opt/.Upgrade/wz_mini.tar.gz; sync
  18. echo "Extract $BRANCH archive"
  19. mkdir /opt/.Upgrade/wz_mini_hacks
  20. tar -xvf /opt/.Upgrade/wz_mini.tar.gz -C /opt/.Upgrade/wz_mini_hacks --strip-components 1
  21. echo "Verify extracted file integrity"
  22. cd /opt/.Upgrade/wz_mini_hacks
  23. md5sum -c file.chk
  24. if [ $? -eq 0 ]; then
  25. echo "File verification successful!"
  26. echo "Move staging directory to perform upgrade"
  27. mv /opt/.Upgrade/ /opt/Upgrade/
  28. install_upgrade_script
  29. else
  30. echo "Failure: Extracted files may be corrupt. Aborting upgrade."
  31. echo "Delete failed upgrade staging directory"
  32. rm -rf /opt/.Upgrade
  33. exit 1
  34. fi
  35. }
  36. install_upgrade_script() {
  37. echo "Installing latest upgrade-run from repo"
  38. cp /opt/Upgrade/wz_mini_hacks/SD_ROOT/wz_mini/bin/upgrade-run.sh /opt/wz_mini/bin/upgrade-run.sh
  39. sleep 5
  40. echo "Launching latest upgrade-script"
  41. /opt/wz_mini/bin/upgrade-run.sh backup_begin &
  42. echo "Exit old script"
  43. rm -f /dev/fd
  44. exit 0
  45. }
  46. backup_begin() {
  47. echo "Resume upgrade-run, latest version"
  48. echo "check for old directory path"
  49. if [ -d /opt/Upgrade/wz_mini_hacks-master ]; then
  50. echo "old path found, moving"
  51. mv /opt/Upgrade/wz_mini_hacks-master /opt/Upgrade/wz_mini_hacks
  52. fi
  53. echo "enable wifi drivers if disabled in config"
  54. sed -i 's/ENABLE_RTL8189FS_DRIVER="false"/ENABLE_RTL8189FS_DRIVER="true"/g' /opt/wz_mini/wz_mini.conf
  55. sed -i 's/ENABLE_ATBM603X_DRIVER="false"/ENABLE_ATBM603X_DRIVER="true"/g' /opt/wz_mini/wz_mini.conf
  56. sleep 5
  57. echo "Backup user config"
  58. cp /opt/wz_mini/wz_mini.conf /opt/Upgrade/preserve/
  59. cp -r /opt/wz_mini/etc/configs /opt/Upgrade/preserve/
  60. cp -r /opt/wz_mini/etc/ssh /opt/Upgrade/preserve/
  61. cp -r /opt/wz_mini/etc/wireguard /opt/Upgrade/preserve/
  62. cp -r /opt/wz_mini/etc/rc.local.d /opt/Upgrade/preserve/
  63. cp -r /opt/wz_mini/etc/cron /opt/Upgrade/preserve/
  64. cp -r /opt/wz_mini/etc/resolv.dnsmasq /opt/Upgrade/preserve/
  65. sync
  66. echo "Rebooting into UPGRADE MODE"
  67. reboot
  68. }
  69. upgrade_mode_start() {
  70. export WZMINI_CFG=/opt/wz_mini/wz_mini.conf
  71. [ -f $WZMINI_CFG ] && source $WZMINI_CFG
  72. set -x
  73. #Set the correct GPIO for the audio driver (T31 only)
  74. if [ -f /opt/wz_mini/tmp/.HL_PAN2 ]; then
  75. GPIO=7
  76. elif [ -f /opt/wz_mini/tmp/.WYZE_CAKP2JFUS ]; then
  77. GPIO=63
  78. fi
  79. if [ -f /opt/wz_mini/tmp/.T20 ]; then
  80. insmod /opt/Upgrade/wz_mini_hacks/SD_ROOT/wz_mini/lib/modules/3.10.14/extra/audio.ko
  81. LD_LIBRARY_PATH='/opt/wz_mini/lib' /opt/wz_mini/bin/audioplay_t20 /opt/Upgrade/wz_mini_hacks/SD_ROOT/wz_mini/usr/share/audio/upgrade_mode_v2.wav $AUDIO_PROMPT_VOLUME
  82. rmmod audio
  83. else
  84. insmod /opt/Upgrade/wz_mini_hacks/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
  85. /opt/wz_mini/bin/audioplay_t31 /opt/Upgrade/wz_mini_hacks/SD_ROOT/wz_mini/usr/share/audio/upgrade_mode.wav $AUDIO_PROMPT_VOLUME
  86. rmmod audio
  87. fi
  88. echo "UPGRADE MODE"
  89. echo "Verify extracted file integrity"
  90. cd /opt/Upgrade/wz_mini_hacks
  91. md5sum -c file.chk
  92. if [ $? -eq 0 ]; then
  93. echo "File verification successful!"
  94. else
  95. echo "Failure: Extracted files may be corrupt. Aborting upgrade."
  96. echo "Delete failed upgrade directory"
  97. rm -rf /opt/Upgrade
  98. reboot &
  99. exit 1
  100. fi
  101. if [ -f /opt/wz_mini/tmp/.T20 ]; then
  102. echo "Upgrading kernel"
  103. flashcp -v /opt/Upgrade/wz_mini_hacks/v2_install/v2_kernel.bin /dev/mtd1
  104. fi
  105. umount -l /opt/wz_mini/tmp
  106. ls -l /opt/wz_mini/
  107. rm -rf /opt/wz_mini/*
  108. sync
  109. mv /opt/Upgrade/wz_mini_hacks/SD_ROOT/wz_mini/* /opt/wz_mini/
  110. rm -f /opt/factory_t31_ZMC6tiIDQN
  111. mv /opt/Upgrade/wz_mini_hacks/SD_ROOT/factory_t31_ZMC6tiIDQN /opt/factory_t31_ZMC6tiIDQN
  112. diff /opt/wz_mini/wz_mini.conf /opt/Upgrade/preserve/wz_mini.conf
  113. if [ $(cat /opt/Upgrade/preserve/wz_mini.conf | wc -l) != $(cat /opt/wz_mini/wz_mini.conf | wc -l) ]; then
  114. echo "doesn't match, keep old config"
  115. mv /opt/wz_mini/wz_mini.conf /opt/wz_mini/wz_mini.conf.dist
  116. cp /opt/Upgrade/preserve/wz_mini.conf /opt/wz_mini/
  117. else
  118. echo "configs match"
  119. cp /opt/Upgrade/preserve/wz_mini.conf /opt/wz_mini/
  120. fi
  121. cp /opt/Upgrade/preserve/ssh/* /opt/wz_mini/etc/ssh/
  122. cp /opt/Upgrade/preserve/configs/* /opt/wz_mini/etc/configs
  123. cp -r /opt/Upgrade/preserve/wireguard /opt/wz_mini/etc/
  124. cp -r /opt/Upgrade/preserve/rc.local.d /opt/wz_mini/etc/
  125. cp -r /opt/Upgrade/preserve/cron /opt/wz_mini/etc/cron
  126. cp -r /opt/Upgrade/preserve/resolv.dnsmasq /opt/wz_mini/etc/resolv.dnsmasq
  127. rm -rf /opt/Upgrade
  128. sync
  129. reboot
  130. }
  131. if [[ "$1" == "unattended" ]]; then
  132. echo "Unattended upgrade!"
  133. rm -rf /opt/.Upgrade
  134. rm -rf /opt/Upgrade
  135. sync
  136. setup
  137. else
  138. if [[ -e /tmp/dbgflag ]]; then
  139. upgrade_mode_start
  140. else
  141. if [ "$1" == "backup_begin" ]; then
  142. backup_begin
  143. else
  144. read -r -p "${1:-wz_mini, this will download the latest version from github and upgrade your system. Are you sure? [y/N]} " response
  145. case "$response" in
  146. [yY][eE][sS]|[yY])
  147. if [[ -d /opt/.Upgrade ]]; then
  148. echo "WARNING: Old Upgrade directory exists"
  149. read -r -p "${1:-Unable to proceed, must DELETE old Upgrade directory, are you sure? [y/N]} " response
  150. case "$response" in
  151. [yY][eE][sS]|[yY])
  152. rm -rf /opt/.Upgrade
  153. rm -rf /opt/Upgrade
  154. sync
  155. setup
  156. ;;
  157. *)
  158. echo "User denied directory removal, exit"
  159. ;;
  160. esac
  161. else
  162. setup
  163. fi
  164. ;;
  165. *)
  166. echo "User declined system update, exit"
  167. ;;
  168. esac
  169. fi
  170. fi
  171. fi