setup.sh 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #!/bin/bash
  2. LATEST_ROOTFS="4.36.3.19"
  3. LATEST_FW="4.36.8.32"
  4. clean() {
  5. rm -f *.tar*
  6. rm -rf ./*_ext
  7. rm -rf SD_ROOT
  8. }
  9. setup() {
  10. echo "Create SD Card root directory"
  11. mkdir SD_ROOT
  12. echo "Download utilities to SD_ROOT"
  13. wget https://www.busybox.net/downloads/binaries/1.21.1/busybox-mipsel -O SD_ROOT/busybox
  14. echo "Copy locla utilities to SD_ROOT"
  15. cp dropbearmulti SD_ROOT
  16. echo "Download latest rootfs firmware $LATEST_ROOTFS"
  17. wget https://s3-us-west-2.amazonaws.com/wuv2/upgrade/WYZE_CAKP2JFUS/firmware/$LATEST_ROOTFS.tar
  18. mkdir "$LATEST_ROOTFS"_ext
  19. tar -xf $LATEST_ROOTFS.tar -C ./"$LATEST_ROOTFS"_ext
  20. echo "Download latest stable firmware $LATEST_FW"
  21. mkdir "$LATEST_FW"_ext
  22. wget https://s3-us-west-2.amazonaws.com/wuv2/upgrade/WYZE_CAKP2JFUS/firmware/$LATEST_FW.tar
  23. tar -xf $LATEST_FW.tar -C ./"$LATEST_FW"_ext
  24. echo "Extract rootfs, prepare for modification"
  25. unsquashfs -d ./"$LATEST_ROOTFS"_ext/Upgrade/rootfs_dir ./"$LATEST_ROOTFS"_ext/Upgrade/rootfs
  26. echo "Change unknown stock password to WYom2020 in /etc/shadow"
  27. rm -rf ./"$LATEST_ROOTFS"_ext/Upgrade/rootfs_dir/etc/shadow
  28. echo "root:aVG8.5PMEOfnQ:0:0:99999:7:::" > ./"$LATEST_ROOTFS"_ext/Upgrade/rootfs_dir/etc/shadow
  29. chmod 400 ./"$LATEST_ROOTFS"_ext/Upgrade/rootfs_dir/etc/shadow
  30. echo "Add run_mmc.sh to rootfs rcS init.d script"
  31. sed -i '/\-f\ \/system\/init\/app_init.sh/a { sleep 30; /media/mmc/run_mmc.sh > /media/mmc/wz_mini_hacks.log; } &' ./"$LATEST_ROOTFS"_ext/Upgrade/rootfs_dir/etc/init.d/rcS
  32. echo "repack rootfs for flashing"
  33. mksquashfs ./"$LATEST_ROOTFS"_ext/Upgrade/rootfs_dir SD_ROOT/rootfs2.bin -noappend -all-root -comp xz
  34. echo "copy latest appfs and kernel to SD_ROOT"
  35. cp ./"$LATEST_FW"_ext/Upgrade/app SD_ROOT/appfs.bin
  36. cp ./"$LATEST_FW"_ext/Upgrade/kernel SD_ROOT/kernel.bin
  37. echo "extract run_mmc.sh script to SD_ROOT"
  38. echo "#!/bin/sh
  39. echo "Store dmesg logs"
  40. dmesg > /media/mmc/dmesg.log
  41. #echo "Run telnetd"
  42. #/media/mmc/busybox telnetd &
  43. echo "Run dropbear ssh server"
  44. /media/mmc/dropbearmulti dropbear -R -m
  45. #echo "Disable remote firmware upgrade, uncomment lines below to enable"
  46. #mkdir /tmp/Upgrade
  47. #mount -t tmpfs -o size=1,nr_inodes=1 none /tmp/Upgrade
  48. #echo -e "127.0.0.1 localhost \n127.0.0.1 wyze-upgrade-service.wyzecam.com" > /tmp/hosts_wz
  49. #mount --bind /tmp/hosts_wz /etc/hosts
  50. sleep 3
  51. #Place commands here to run 30 seconds after boot
  52. #such as mount nfs, ping, etc
  53. #mount -t nfs -o nolock,rw,noatime,nodiratime 192.168.1.1:/volume1 /media/mmc/record
  54. " > SD_ROOT/run_mmc.sh
  55. chmod 755 SD_ROOT/run_mmc.sh
  56. echo "extract wz_mini_installer.sh to SD_ROOT"
  57. echo "#!/bin/sh
  58. echo this must be run ON the camera itself
  59. #add check to make sure this is only run on camera, use appver file -z
  60. #check that bin files exist first before flashing, and compare SHA512
  61. echo "create /configs/.ssh dir for dropbear ssh server"
  62. mkdir /configs/.ssh
  63. echo flash kernel to mtd1
  64. flashcp -v /media/mmc/kernel.bin /dev/mtd1
  65. echo flash apps to mtd3
  66. flashcp -v /media/mmc/appfs.bin /dev/mtd3
  67. echo flash modified rootfs to mtd2
  68. flashcp -v /media/mmc/rootfs2.bin /dev/mtd2
  69. echo done, rebooting.
  70. echo WARN: IF REBOOT FAILS, OR SEGMENTATION FAULT ERROR OCCURS, PLEASE POWER CYCLE THE wyze v3 CAMERA MANUALLY BY REOMVING THE POWER CORD.
  71. sync
  72. sync
  73. reboot
  74. " > SD_ROOT/wz_mini_installer.sh
  75. chmod 755 SD_ROOT/wz_mini_installer.sh
  76. #echo "Extract appfsfs"
  77. #unsquashfs -d ./436832_ext/Upgrade/ rootfs
  78. }
  79. if [ "$1" == "clean" ]; then
  80. clean
  81. elif [ "$1" == "compile" ]; then
  82. setup
  83. else
  84. echo "wz_mini_hacks setup script"
  85. echo "Usage:"
  86. echo "./setup.sh compile to download and patch firmware"
  87. echo "./setup.sh clean to delete all downloaded files and clean directory"
  88. fi