upgrade-run.sh 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  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. 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 ]; then
  23. echo "files OK"
  24. install_upgrade_script
  25. else
  26. echo "Failure: archive has corrupted files"
  27. echo "Delete failed upgrade dir"
  28. rm -rf /opt/Upgrade
  29. exit 1
  30. fi
  31. }
  32. install_upgrade_script() {
  33. echo "Installing latest upgrade-run from repo"
  34. cp /opt/Upgrade/wz_mini_hacks-master/SD_ROOT/wz_mini/bin/upgrade-run.sh /opt/wz_mini/bin/upgrade-run.sh
  35. sleep 5
  36. echo "Launching latest upgrade-script"
  37. /opt/wz_mini/bin/upgrade-run.sh backup_begin &
  38. echo "Exit old script"
  39. rm -f /dev/fd
  40. exit 0
  41. }
  42. backup_begin() {
  43. echo "Resume upgrade-run, latest version"
  44. sleep 5
  45. echo "Backup user config"
  46. cp /opt/wz_mini/wz_mini.conf /opt/Upgrade/preserve/
  47. cp -r /opt/wz_mini/etc/configs /opt/Upgrade/preserve/
  48. cp -r /opt/wz_mini/etc/ssh /opt/Upgrade/preserve/
  49. cp -r /opt/wz_mini/etc/wireguard /opt/Upgrade/preserve/
  50. sync
  51. echo "Rebooting into UPGRADE MODE"
  52. reboot
  53. }
  54. upgrade_mode_start() {
  55. export WZMINI_CFG=/opt/wz_mini/wz_mini.conf
  56. [ -f $WZMINI_CFG ] && source $WZMINI_CFG
  57. set -x
  58. #Set the correct GPIO for the audio driver (T31 only)
  59. if [ -f /opt/wz_mini/tmp/.HL_PAN2 ]; then
  60. GPIO=7
  61. elif [ -f /opt/wz_mini/tmp/.WYZE_CAKP2JFUS ]; then
  62. GPIO=63
  63. fi
  64. if [ -f /opt/wz_mini/tmp/.T20 ]; then
  65. insmod /opt/Upgrade/wz_mini_hacks-master/SD_ROOT/wz_mini/lib/modules/3.10.14/extra/audio.ko
  66. 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
  67. rmmod audio
  68. else
  69. 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
  70. /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
  71. rmmod audio
  72. fi
  73. echo "UPGRADE MODE"
  74. if [ -f /opt/wz_mini/tmp/.T20 ]; then
  75. echo "Upgrading kernel"
  76. flashcp -v /opt/Upgrade/wz_mini_hacks-master/v2_install/v2_kernel.bin /dev/mtd1
  77. fi
  78. umount -l /opt/wz_mini/tmp
  79. ls -l /opt/wz_mini/
  80. rm -rf /opt/wz_mini/*
  81. sync
  82. mv /opt/Upgrade/wz_mini_hacks-master/SD_ROOT/wz_mini/* /opt/wz_mini/
  83. rm -f /opt/factory_t31_ZMC6tiIDQN
  84. mv /opt/Upgrade/wz_mini_hacks-master/SD_ROOT/factory_t31_ZMC6tiIDQN /opt/factory_t31_ZMC6tiIDQN
  85. diff /opt/wz_mini/wz_mini.conf /opt/Upgrade/preserve/wz_mini.conf
  86. if [ $(cat /opt/Upgrade/preserve/wz_mini.conf | wc -l) != $(cat /opt/wz_mini/wz_mini.conf | wc -l) ]; then
  87. echo "doesn't match, keep old config"
  88. mv /opt/wz_mini/wz_mini.conf /opt/wz_mini/wz_mini.conf.dist
  89. cp /opt/Upgrade/preserve/wz_mini.conf /opt/wz_mini/
  90. else
  91. echo "configs match"
  92. cp /opt/Upgrade/preserve/wz_mini.conf /opt/wz_mini/
  93. fi
  94. cp /opt/Upgrade/preserve/ssh/* /opt/wz_mini/etc/ssh/
  95. cp /opt/Upgrade/preserve/configs/* /opt/wz_mini/etc/configs
  96. cp -r /opt/Upgrade/preserve/wireguard /opt/wz_mini/etc/
  97. rm -rf /opt/Upgrade
  98. sync
  99. reboot
  100. }
  101. if [[ "$1" == "unattended" ]]; then
  102. echo "Unattended upgrade!"
  103. rm -rf /opt/Upgrade
  104. sync
  105. setup
  106. else
  107. if [[ -e /tmp/dbgflag ]]; then
  108. upgrade_mode_start
  109. else
  110. if [ "$1" == "backup_begin" ]; then
  111. backup_begin
  112. else
  113. read -r -p "${1:-wz_mini, this will download the latest version from github and upgrade your system. Are you sure? [y/N]} " response
  114. case "$response" in
  115. [yY][eE][sS]|[yY])
  116. if [[ -d /opt/Upgrade ]]; then
  117. echo "WARNING: Old Upgrade directory exists"
  118. read -r -p "${1:-Unable to proceed, must DELETE old Upgrade directory, are you sure? [y/N]} " response
  119. case "$response" in
  120. [yY][eE][sS]|[yY])
  121. rm -rf /opt/Upgrade
  122. sync
  123. setup
  124. ;;
  125. *)
  126. echo "User denied directory removal, exit"
  127. ;;
  128. esac
  129. else
  130. setup
  131. fi
  132. ;;
  133. *)
  134. echo "User declined system update, exit"
  135. ;;
  136. esac
  137. fi
  138. fi
  139. fi