Recovery: Unterschied zwischen den Versionen

Aus Freifunk Dresden - Anwender-Wiki
Zur Navigation springen Zur Suche springen
K (kleinere korregturen)
(UBNT Loco M2 Recovery)
Zeile 2: Zeile 2:
 
== Ubiquiti Nanostation M Loco M2 ==
 
== Ubiquiti Nanostation M Loco M2 ==
 
=== Recovery via Serial Port ===
 
=== Recovery via Serial Port ===
Durch aktuellere original Firmware Versionen, kann neben dem Update der Firmware auch der Bootloader aktualisiert werden.
+
Durch aktuellere original Firmware Versionen, kann neben dem Update der Firmware auch der Bootloader aktualisiert werden. Ein Fehler bei openwrt bei der Generierung
 +
der Firmware machte die Router erstmal unbrauchbar.
 +
Dieses können aber mit folgenden Schritten gerettet werden:
  
Die bisher lang verwendete Firmware Version für diesen Router war zum Beispiel '''XM.v5.5.11.28002.150723.1344.bin''' ([https://www.ubnt.com/download/airmax-m/nanostationm/locom2 www.ubnt.com]).
+
1. Gerät öffnen und serielles Terminal an den seriellen Port des Routers anschliessen. Die Verbindungsparameter sind 115200-8-N-1
In dieser Firmware ist der u-boot '''U-Boot 1.1.4.2-s594 (Dec  5 2012 - 15:23:07)''' enthalten.
 
Original Partitionstabelle für airOS Version 5.5.xxx
 
device nor0 <ar7240-nor0>, # parts = 6
 
#: name                        size            offset          mask_flags
 
0: u-boot                      0x00040000      0x00000000      0
 
1: u-boot-env                  0x00010000      0x00040000      0
 
2: kernel                      0x00100000      0x00050000      0
 
3: rootfs                      0x00660000      0x00150000      0
 
4: cfg                        0x00040000      0x007b0000      0
 
5: EEPROM                      0x00010000      0x007f0000      0
 
  
Bei einem Update auf die neuere Firmware '''airOS for XM board firmware v5.6.4''' wird auch der Bootloader '''U-Boot 1.1.4.2-s956 (Jun 10 2015 - 10:54:50)''' aktualisiert und irgendwas
+
vcc * *vcc
am Flashlayout (Partionstabelle) geändert.
+
rx  * *
Das Aufspielen einer Firmware, basierend auf openwrt, kann den Router vorerst unbrauchbar machen.
+
    * *
 +
tx  * *
 +
gnd * *gnd
  
Openwrt generierte Partitionstabelle:
 
device nor0 <ar7240-nor0>, # parts = 6
 
#: name                        size            offset          mask_flags
 
0: u-boot                      0x00040000      0x00000000      0
 
1: u-boot-env                  0x00010000      0x00040000      0
 
2: kernel                      0x00100000      0x00050000      0
 
3: rootfs                      0x005a0000      0x00150000      0
 
4: cfg                        0x00040000      0x006f0000      0
 
5: EEPROM                      0x00010000      0x00730000      0
 
  
Soweit ich erkennen konnte, stimmt die Partitionstabelle im Flash '''nicht''' mit dem in der U-Boot Environment gespeicherten Tabelle überein.
+
'''WICHTIG ist, dass hier die Alte firmware verwendet wird, da die mtd partition immer wieder falsch
Dadurch kann der Bootloader das Image nicht mehr laden.
+
gesetzt wird fuer die neue firmware, so dass diese nicht bootet.'''
U-Boot Environment
 
mtdparts: mtdparts=ar7240-nor0:256k(u-boot),64k(u-boot-env),1024k(kernel),6528k(rootfs),256k(cfg),64k(EEPROM)
 
  
Die Partionstabelle sollte eigentlich wie die originale Tabelle aussehen.
+
# '''cp [http://download.freifunk-dresden.de/rescue/ubnt/XM.v5.5.11.28002.150723.1344.bin XM.v5.5.11.28002.150723.1344.bin] firmware.bin'''
 +
# '''echo -e "binary\nrexmt 1\ntimeout 600\ntrace\nput firmware.bin flash_upgrade\n" | tftp 192.168.1.20'''
 +
# Via serial port verbinden, Router mit Stromversorgung verbinden und Taste drücken, um die U-Boot Console zu aktivieren.
 +
# '''urescue -f -e'''  # damit wird nur der u-boot aus dem image geflasht
 +
# '''urescue'''        # gleiche image nochmal via tftp uebetragen. jetzt wird die eigentliche FW geflasht
 +
# Jetzt läuft wieder die Version 5.5 und kann auf Version 6 oder auf Freifunk via Weboberfläche aktualisert werden.
  
Es war zwar möglich, die aktuellste Firmware zu flaschen aber der Bootloader startete diese nur wenn man in der seriellen Console
+
Ich habe nun auf AirOs 6 aktualisiert, dadurch wird U-boot aktualisiert und mtdparts korregiert.
die Partitionstabelle auf die Default-Werte setzte. Leider wurden diese aber nicht permanent gespeichert, schienen aber aktiv zu bleiben.
+
  '''Nur zur Info''' mtdparts=mtdparts=ar7240-nor0:256k(u-boot),64k(u-boot-env),1024k(kernel),6528k(rootfs),256k(cfg),64k(EEPROM)
mtdparts default
 
boot
 
Das airOS bootet, aber es wurden keine neue Firmwareimages angenommen.
 
Nach einem Ausschalten und erneuten Einschalten des Routers, wurde wieder die falsche Partitionstabelle verwendet und der Router bootete nicht.
 
 
 
Die einzige Lösung die ich gefunden habe ist, auf den alten U-Boot zu wechseln und dann anschliessend die Freifunk Firmware via U-Boot zu flashen.
 
U-Boot besitzt einen Rescue-Mode, welcher durch Drücken und Halten des Resetschalters und anschliessenden Power-On und weiter gedrücktem
 
Resetschalter für mehr als 10s, aktiviert werden kann. Allerdings erlaubt dieser Mode nicht das ersetzten des Bootloaders (U-Boot).
 
Dazu muss über eine Serielle Console der Rescue-Mode mit dem Parameter "-f" gestartet werden.
 
U-Boot 1.1.4.2-s956 (Jun 10 2015 - 10:54:50)
 
 
DRAM:  32 MB
 
Flash:  8 MB
 
PCIe WLAN Module found (#1).
 
Net:  eth0, eth1
 
Board: Ubiquiti Networks XM board (rev 1.2 e0a2)
 
Hit any key to stop autoboot:  0
 
ar7240>
 
ar7240> urescue -f
 
Boot loader overwrite mode
 
Setting default IP 192.168.1.20
 
Starting TFTP server...
 
Using eth0 (192.168.1.20), address: 0x81000000
 
Waiting for connection: |
 
 
 
Auf dem PC wird mit tftp die ältere originale Firmware (XM.v5.5.11.28002.150723.1344.bin) an den Router geschickt.
 
$ tftp 192.168.1.20
 
tftp> bin
 
tftp> put XM.v5.5.11.28002.150723.1344.bin
 
tftp> quit
 
 
 
Auf der Seriellen Console erscheinen folgende Ausgaben:
 
 
 
Receiving file from 192.168.1.31:39613
 
Received 6896662 bytes
 
Firmware Version: XM.ar7240.v5.5.11.28002.150723.1344
 
Setting U-Boot environment variables
 
Un-Protected 1 sectors
 
Erasing Flash.... done
 
Erased 1 sectors
 
Writing to Flash... done
 
Protected 1 sectors
 
  Copying partition 'u-boot' to flash memory:
 
 
First 0x0 last 0x3 sector size 0x10000
 
.... done
 
write addr: 9f000000
 
Copying partition 'kernel' to flash memory:
 
 
First 0x5 last 0x14 sector size 0x10000
 
................ done
 
write addr: 9f050000
 
Copying partition 'rootfs' to flash memory:
 
 
First 0x15 last 0x7a sector size 0x10000
 
...................................................................................................... done
 
write addr: 9f150000
 
 
Firmware update complete.
 
 
Resetting...
 
 
U-Boot 1.1.4.2-s594 (Dec  5 2012 - 15:23:07)
 
 
 
Der alte U-Boot ist somit wieder vorhanden. Da die originale Firmware aber trotzdem nicht startete, habe ich die nun die Freifunk-Firmware aufgespielt.
 
Dieses mal wurde '''urescue''' ohne den Parameter -f aufgerufen um sicher zu sein, dass der U-Boot nicht zerstört wird.
 
 
 
U-Boot 1.1.4.2-s594 (Dec  5 2012 - 15:23:07)
 
 
Board: Ubiquiti Networks XM board (rev 1.2 e0a2)
 
DRAM:  32 MB
 
Flash:  8 MB
 
PCIe WLAN Module found (#1).
 
Net:  eth0, eth1
 
Hit any key to stop autoboot:  0
 
ar7240> urescue
 
Setting default IP 192.168.1.20
 
Starting TFTP server...
 
Using eth0 (192.168.1.20), address: 0x81000000
 
Waiting for connection: \
 
 
 
Auf PC dann folgendes eingegeben:
 
$ tftp 192.168.1.20
 
tftp> bin
 
tftp> put openwrt-ar71xx-generic-ubnt-nano-m-squashfs-factory.bin
 
tftp>
 
 
 
Der Bootloader zeigt folgende Ausschriften:
 
Receiving file from 192.168.1.31:43110
 
Received 3604892 bytes
 
Firmware Version: XM.ar7240.v6.0.0-OpenWrt-r48246
 
Setting U-Boot environment variables
 
Un-Protected 1 sectors
 
Erasing Flash.... done
 
Erased 1 sectors
 
Writing to Flash... done
 
Protected 1 sectors
 
Copying partition 'kernel' to flash memory:
 
erasing range 0x9F050000..0x9F14FFFF: ................ done
 
Erased 16 sectors
 
writing to address 0x9f050000, length 0x00100000 ...
 
Copying partition 'rootfs' to flash memory:
 
erasing range 0x9F150000..0x9F3CFFFF: ........................................ done
 
Erased 40 sectors
 
writing to address 0x9f150000, length 0x00280000 ...
 
 
Firmware update complete.
 
 
Resetting...
 
 
 
Danach startete die Freifunk Firmware.
 

Version vom 15. April 2017, 17:53 Uhr

Ubiquiti Nanostation M Loco M2

Recovery via Serial Port

Durch aktuellere original Firmware Versionen, kann neben dem Update der Firmware auch der Bootloader aktualisiert werden. Ein Fehler bei openwrt bei der Generierung der Firmware machte die Router erstmal unbrauchbar. Dieses können aber mit folgenden Schritten gerettet werden:

1. Gerät öffnen und serielles Terminal an den seriellen Port des Routers anschliessen. Die Verbindungsparameter sind 115200-8-N-1

vcc * *vcc
rx  * *
    * *
tx  * *
gnd * *gnd


WICHTIG ist, dass hier die Alte firmware verwendet wird, da die mtd partition immer wieder falsch gesetzt wird fuer die neue firmware, so dass diese nicht bootet.

  1. cp XM.v5.5.11.28002.150723.1344.bin firmware.bin
  2. echo -e "binary\nrexmt 1\ntimeout 600\ntrace\nput firmware.bin flash_upgrade\n" | tftp 192.168.1.20
  3. Via serial port verbinden, Router mit Stromversorgung verbinden und Taste drücken, um die U-Boot Console zu aktivieren.
  4. urescue -f -e # damit wird nur der u-boot aus dem image geflasht
  5. urescue # gleiche image nochmal via tftp uebetragen. jetzt wird die eigentliche FW geflasht
  6. Jetzt läuft wieder die Version 5.5 und kann auf Version 6 oder auf Freifunk via Weboberfläche aktualisert werden.

Ich habe nun auf AirOs 6 aktualisiert, dadurch wird U-boot aktualisiert und mtdparts korregiert.

Nur zur Info mtdparts=mtdparts=ar7240-nor0:256k(u-boot),64k(u-boot-env),1024k(kernel),6528k(rootfs),256k(cfg),64k(EEPROM)