unifi_autoinstall.page 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. Um Unifi Lite oder Mesh Geräte Automatisch Downzugraden und mit Freifunk Image zu versehen, wurde dieses Script erstellt.
  2. Der PC und das Unifi Gerät müssen im gleichen Netzwerk sein.
  3. In meinem Fall den PC mit einer Festen ip 192.168.1.10 (alles außer 192.168.1.20) versehen, am besten mit einem Switch oder Hub verbinden.
  4. Das Program "dnsmasq" installieren, TFTP aktivieren und die zu bearbeitenden Dateien in den TPTP Ordner ablegen.
  5. in meinem Fall:
  6. Die Datei zum UP/Downgrade der Stock Firmware:
  7. BZ.qca956x.v3.7.58.6385.170508.0957.bin
  8. und die aktuellen Freifunk Images (hier ein Beispiel für ein AC Lite für die Domain 5 des FF Do)
  9. gluon-ffdo-d05-2.2.6-ubiquiti-unifi-ac-lite-sysupgrade.bin
  10. Das Skript wird aktiviert mit den Parametern:
  11. expect ubnt-upgrade.exp [ip] [fwupdate] [firmware]
  12. in meinem Fall: expect ubnt-upgrade.exp 192.168.1.20 BZ.qca956x.v3.7.58.6385.170508.0957.bin gluon-ffdo-d05-2.2.6-ubiquiti-unifi-ac-lite-sysupgrade.bin
  13. Führe die Datei "ubnt-upgrade.exp" aus.
  14. der Unifi AC hört auf IP Adresse "192.168.1.20"
  15. Mache eine Stock Firmware UP/Downgrade auf "BZ.qca956x.v3.7.58.6385.170508.0957.bin"
  16. danach installiere folgende Freifunk firmware:
  17. "gluon-ffdo-d05-2.2.6-ubiquiti-unifi-ac-lite-sysupgrade.bin".
  18. Nach erfolgreicher Installation startet der AP neu und ist unter der IP Adresse 192.168.1.1 erreichbar.
  19. Die Anleitung wird noch verfeinert, bis dahin alles gute Marcel
  20. Das Script in "upgrade.exp" abspeichern
  21. #!/usr/bin/expect -f
  22. #
  23. set force_conservative 1 ;# set to 1 to force conservative mode even if
  24. ;# script wasn't run conservatively originally
  25. if {$force_conservative} {
  26. set send_slow {1 .1}
  27. proc send {ignore arg} {
  28. sleep .1
  29. exp_send -s -- $arg
  30. }
  31. }
  32. set ip [lindex $argv 0]
  33. set fwupdate [lindex $argv 1]
  34. set firmware [lindex $argv 2]
  35. set timeout -1
  36. spawn $env(SHELL)
  37. match_max 100000
  38. expect "\$ "
  39. send -- "ping $ip\r"
  40. expect "64 Bytes von $ip: icmp_seq"
  41. send -- ""
  42. expect "\$ "
  43. send -- "scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $fwupdate ubnt@$ip:/tmp/fwupdate.bin\r"
  44. expect "password: "
  45. send -- "ubnt\r"
  46. expect "\$ "
  47. send -- "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ubnt@$ip\r"
  48. expect "password: "
  49. send -- "ubnt\r"
  50. expect "# "
  51. send -- "syswrapper.sh upgrade2 &\r"
  52. expect "\$ "
  53. sleep 3
  54. send -- "ping $ip\r"
  55. expect "64 Bytes von $ip: icmp_seq"
  56. send -- ""
  57. expect "\$ "
  58. send -- "scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $firmware ubnt@$ip:/tmp/firmware.bin\r"
  59. expect "password: "
  60. send -- "ubnt\r"
  61. expect "\$ "
  62. send -- "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ubnt@$ip\r"
  63. expect "password: "
  64. send -- "ubnt\r"
  65. expect "# "
  66. send -- "cd /tmp/\r"
  67. expect "# "
  68. send -- "MTD=\$(cat /proc/mtd | grep bs | awk '{FS=\":\";print \$1}')\r"
  69. expect "# "
  70. send -- "mtd write /tmp/firmware.bin kernel0\r"
  71. expect "# "
  72. send -- "mtd write /tmp/firmware.bin kernel1\r"
  73. expect "# "
  74. send -- "dd if=/dev/zero bs=1 count=1 of=/dev/\$MTD\r"
  75. expect "# "
  76. send -- "reboot\r"
  77. sleep 3
  78. send -- "ping 192.168.1.1\r"
  79. expect "64 Bytes von 192.168.1.1: icmp_seq"
  80. send -- ""
  81. expect "\$ "
  82. send -- "spd-say Finish sag mal was was länger dauert\r"
  83. ############
  84. send -- "exit\r"
  85. expect eof