compile_image.sh 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #!/bin/bash
  2. UA_STRING="Mozilla/5.0 (Macintosh; Intel Mac OS X 12_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15"
  3. DL_URL=$(wget --header="Accept: text/html" --user-agent="$UA_STRING" -qO- https://support.wyze.com/hc/en-us/articles/360024852172-Release-Notes-Firmware | grep -Eo "(http|https)://[a-zA-Z0-9./?=_-]*" | grep /v2/ | sort -t . -k2r,5 | grep demo | head -1)
  4. PAN_DL_URL=$(wget --header="Accept: text/html" --user-agent="$UA_STRING" -qO- https://support.wyze.com/hc/en-us/articles/360024852172-Release-Notes-Firmware | grep -Eo "(http|https)://[a-zA-Z0-9./?=_-]*" | grep /pan/ | sort -t . -k2r,5 | grep demo | head -1)
  5. tools() {
  6. echo "checking for tools"
  7. command -v wget >/dev/null 2>&1 || { echo >&2 "wget is not installed. Aborting."; exit 1; }
  8. command -v mkimage >/dev/null 2>&1 || { echo >&2 "mkimage is not installed. Aborting."; exit 1; }
  9. command -v unzip >/dev/null 2>&1 || { echo >&2 "unzip is not installed. Aborting."; exit 1; }
  10. echo "tools OK"
  11. }
  12. download(){
  13. rm -f demo.bin
  14. echo "create temporary work directory"
  15. mkdir v2_ro
  16. echo "check for local zip"
  17. if [ -f demo.zip ]; then
  18. echo "local archive found"
  19. mv demo.zip ./v2_ro/
  20. else
  21. echo "local archive not found"
  22. echo "downloading latest firmware"
  23. if [[ "$1" == "pan" ]]; then
  24. echo "build for pan"
  25. wget $PAN_DL_URL -O ./v2_ro/demo.zip
  26. else
  27. echo "build for v2"
  28. wget $DL_URL -O ./v2_ro/demo.zip
  29. fi
  30. if [[ $(md5sum ./v2_ro/demo.zip) == *"a69b6d5ffdbce89463fa83f7f06ec10b"* ]]; then
  31. echo "v2 4.9.8.1002"
  32. elif [[ $(md5sum ./v2_ro/demo.zip) == *"91793d32fd797a10df572f4f5d72bc55"* ]]; then
  33. echo "pan v1 4.10.8.1002"
  34. else
  35. echo "md5sum failed check, please manually supply file"
  36. rm -rf v2_ro
  37. exit 1
  38. fi
  39. fi
  40. echo "extracting firmware to temporary work directory"
  41. unzip v2_ro/demo*.zip -d ./v2_ro/
  42. echo "create firmware directory"
  43. mkdir v2_ro/fw_dir
  44. echo "unpack stock firmware image"
  45. ./fw_tool.sh unpack v2_ro/demo*.bin v2_ro/fw_dir
  46. echo "replace factory kernel"
  47. cp v2_kernel.bin v2_ro/fw_dir/kernel.bin
  48. echo "pack firmware image with new kernel"
  49. ./fw_tool.sh pack v2_ro/fw_dir demo.bin
  50. echo "remove temporary work directory"
  51. rm -rf v2_ro
  52. echo "demo.bin ready. Please copy demo.bin to your memory card"
  53. }
  54. read -r -p "wz_mini: this will download the latest firmware version from the vendor and compile a modified demo.bin. Are you sure? [y/N]" response
  55. case "$response" in
  56. [yY][eE][sS]|[yY])
  57. tools
  58. download $1
  59. ;;
  60. *)
  61. echo "User declined, exit"
  62. ;;
  63. esac