123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- Um Unifi Lite oder Mesh Geräte Automatisch Downzugraden und mit Freifunk Image zu versehen, wurde dieses Script erstellt.
- Der PC und das Unifi Gerät müssen im gleichen Netzwerk sein.
- 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.
- Das Programm "dnsmasq" installieren, TFTP aktivieren und die zu bearbeitenden Dateien in den TPTP Ordner ablegen.
- Für das Flashen ist das Kommando 'mtd' notwendig, dass in aktuellen unifi Firmware fehlt.
- Daher muss (in der Regel) die Original Firmware durch eine ältere Variante ersetzt werden.
- In meinem Fall:
- Die Datei zum UP/Downgrade der Stock Firmware:
- BZ.qca956x.v3.7.58.6385.170508.0957.bin
- und die aktuellen Freifunk Images (hier ein Beispiel für ein AC Lite für die Domain 5 des FF Do)
- gluon-ffdo-d05-2.2.6-ubiquiti-unifi-ac-lite-sysupgrade.bin
- Das Skript wird aktiviert mit den Parametern:
- expect ubnt-upgrade.exp [ip] [fwupdate] [firmware]
- 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
- Führe die Datei "ubnt-upgrade.exp" aus.
- der Unifi AC hört auf IP Adresse "192.168.1.20"
- Mache eine Stock Firmware UP/Downgrade auf "BZ.qca956x.v3.7.58.6385.170508.0957.bin"
- danach installiere folgende Freifunk Firmware:
- "gluon-ffdo-d05-2.2.6-ubiquiti-unifi-ac-lite-sysupgrade.bin".
- Nach erfolgreicher Installation startet der AP neu und ist unter der IP Adresse 192.168.1.1 erreichbar.
- Die Anleitung wird noch verfeinert, bis dahin alles gute Marcel
- Das Script in "ubnt-upgrade.exp" abspeichern:
- #!/usr/bin/expect -f
- #
-
- set force_conservative 1 ;# set to 1 to force conservative mode even if
- ;# script wasn't run conservatively originally
- if {$force_conservative} {
- set send_slow {1 .1}
- proc send {ignore arg} {
- sleep .1
- exp_send -s -- $arg
- }
- }
-
- set ip [lindex $argv 0]
- set fwupdate [lindex $argv 1]
- set firmware [lindex $argv 2]
-
- set timeout -1
- spawn $env(SHELL)
- match_max 100000
- expect "\$ "
- send -- "ping $ip\r"
- expect "64 Bytes von $ip: icmp_seq"
- send -- ""
- expect "\$ "
- send -- "scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $fwupdate ubnt@$ip:/tmp/fwupdate.bin\r"
- expect "password: "
- send -- "ubnt\r"
- expect "\$ "
- send -- "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ubnt@$ip\r"
- expect "password: "
- send -- "ubnt\r"
- expect "# "
- send -- "syswrapper.sh upgrade2 &\r"
- expect "\$ "
- sleep 3
- send -- "ping $ip\r"
- expect "64 Bytes von $ip: icmp_seq"
- send -- ""
- expect "\$ "
- send -- "scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $firmware ubnt@$ip:/tmp/firmware.bin\r"
- expect "password: "
- send -- "ubnt\r"
- expect "\$ "
- send -- "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ubnt@$ip\r"
- expect "password: "
- send -- "ubnt\r"
- expect "# "
- send -- "cd /tmp/\r"
- expect "# "
- send -- "MTD=\$(cat /proc/mtd | grep bs | awk '{FS=\":\";print \$1}')\r"
- expect "# "
- send -- "mtd write /tmp/firmware.bin kernel0\r"
- expect "# "
- send -- "mtd write /tmp/firmware.bin kernel1\r"
- expect "# "
- send -- "dd if=/dev/zero bs=1 count=1 of=/dev/\$MTD\r"
- expect "# "
- send -- "reboot\r"
- sleep 3
- send -- "ping 192.168.1.1\r"
- expect "64 Bytes von 192.168.1.1: icmp_seq"
- send -- ""
- expect "\$ "
- send -- "spd-say Finish sag mal was was länger dauert\r"
-
- ############
- send -- "exit\r"
- expect eof
|