autoflash.sh 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #!/bin/bash
  2. base_fw_name="gluon-ffpb-0.4~beta2-"
  3. function quit() {
  4. if [ x"${BASH_SOURCE[0]}" == x"$0" ]; then
  5. exit $*
  6. else
  7. return $*
  8. fi
  9. }
  10. # download missing firmware images
  11. for model in tp-link-tl-wr841n-nd-v8 tp-link-tl-wr841n-nd-v9; do
  12. if [ ! -r "images/${base_fw_name}${model}.bin" ]; then
  13. echo -en "Downloading image for '$model' ... "
  14. wget -q "http://firmware.paderborn.freifunk.net/stable/${base_fw_name}${model}.bin" -O "images/${base_fw_name}${model}.bin"
  15. if [ $? -eq 0 ]; then
  16. echo "OK"
  17. else
  18. echo "ERROR"
  19. rm "images/${base_fw_name}${model}.bin" 2>/dev/null
  20. echo "Failed to download firmware. Please ensure the firmware for '${base_fw_name}${model}' is present in images/ directory."
  21. quit 3
  22. fi
  23. fi
  24. done
  25. ping -n -c 1 -W 1 192.168.0.1 > /dev/null
  26. if [ $? -ne 0 ]; then
  27. echo "ROUTER OFFLINE? cannot ping 192.168.0.1 :("
  28. quit 1
  29. fi
  30. model=$(curl --basic -su admin:admin http://192.168.0.1/ | grep -oE "WR[0-9]+N")
  31. echo "found model: $model"
  32. hwver_page="http://192.168.0.1/userRpm/SoftwareUpgradeRpm.htm"
  33. hwver=$(curl --basic -su admin:admin -e http://192.168.0.1/userRpm/MenuRpm.htm $hwver_page | grep -oE "$model v[0-9]+")
  34. echo "hw version: $hwver"
  35. uploadurl="http://192.168.0.1/incoming/Firmware.htm"
  36. image=""
  37. if [ "$hwver" = "WR841N v9" ]; then
  38. image="${base_fw_name}tp-link-tl-wr841n-nd-v9.bin"
  39. elif [ "$hwver" = "WR841N v8" ]; then
  40. image="${base_fw_name}tp-link-tl-wr841n-nd-v8.bin"
  41. else
  42. echo "UNKNOWN MODEL ($hwver), SORRY :("
  43. quit 2
  44. fi
  45. # prepend images/ subdirectory to filename
  46. image="images/$image"
  47. echo -en "flashing image: $image ... "
  48. curl --basic -su admin:admin -e $hwver_page -F Filename=@$image $uploadurl > /dev/null
  49. curl --basic -su admin:admin -e $uploadurl http://192.168.0.1/userRpm/FirmwareUpdateTemp.htm > /dev/null
  50. echo "done :)"
  51. echo -en "waiting for router to come up again "
  52. while ! ping -n -c 1 -W 3 192.168.1.1 > /dev/null; do
  53. echo -en "."
  54. done
  55. echo " \o/"
  56. echo