Skip to content

Latest commit

 

History

History
548 lines (485 loc) · 24 KB

adam2.md

File metadata and controls

548 lines (485 loc) · 24 KB

ADAM2-Bootloader

ADAM2 ist ein Bootloader von Texas Intruments, der ähnliche Aufgaben übernimmt wie ein BIOS beim PC. ADAM2 wurde in abgewandelter Form von AVM in frühen FRITZBox-Modellen mit Kernel 2.4 eingesetzt, und wich noch vor Einführung des Kernels 2.6 der aus Nutzersicht nahezu funktionsgleichen Eigenentwicklung EVA. Wegen der vielen Parallelen können beide Varianten als "der Bootloader" betrachtet werden, und müssen nur in Einzelfällen unterschieden werden.

Die Aufgaben des Bootloaders sind:

  • die Hardware zu initialisieren
  • das Flash zu erkennen
  • das RAM zu erkennen und zu prüfen
  • die Partitionierung und grundlegende Werkseinstellungen zu verwalten
  • eine Serielle Konsole bereitzustellen
  • einen kleinen FTP-Server bereitzustellen (für Recovery)
  • das Environment im TFFS zu verwalten
  • das installierte Kernel zu booten

Bootloader-Backup anlegen

Wer will kann sich ein Bootloader-Backup anlegen sollte sich aber dringend merken von *genau welcher* Box das war (MAC-Adresse). Mehr dazu um nächsten Abschnitt.

Die Grösse des Bootloaders wird in der Environment-Variable mtd2 gespeichert, die fest im Bootloader selbst eingestellt ist.

Aus Linux heraus hat diese Partition oft eine von 2 abweichende Nummer die man mit folgendem Befehl ausfindig macht:

	cat /proc/mtd

Eine der dort genannten Partitionen nennt sich bootloader oder urlader. Mit deren Nummer (hier z.B. 3) liesst man dann die zugehörige mtdblock Device aus:

	cat /dev/mtdblock3 > bootloader.bin

Siehe auch 'Flash-Partitionen im laufenden Betrieb sichern'.

ADAM2 ist immer 64KB gross, EVA bei älteren Modellen 64KB, bei neueren Modellen 128KB oder 256KB. Beim IAD 7570 ist die mtd2 Partition zwar 256KB, die oberen 128KB sind jedoch leer (0xFF). Dies könnte auf eine geplante (aber technisch nicht durchführbare) zweite Instanz des Bootloaders deuten. Die Grösse des Bootloader sollte unbedingt beim Entwickeln von Aliens beachtet werden. Ein nicht angepasstes install Script für 64KB Bootloader zerstört einen 128KB Bootloader ohne Vorwarnung! Das gilt dann auch für das AVM Webinteface - die Box wird vorhersagbar zum Brick.

Daher, wer Aliens entwickelt ohne das Environment des Zielgerätes geprüft und mit dem install Script verglichen zu haben gefährdet Geräte. Auch im Trunk sollten daher solche riskanten Experimente nur mit Aufwand freischaltbar sein (implementiert: neuer nicht per GUI aktivierbarer "Real Developer" Risiko-Modus).

Bootloader überschreiben

Kurz: NEIN!

Der Bootloader enthält zahlreiche Informationen die eine Box einmalig machen, bei vielen WLAN-Modellen auch Kalibrierung ohne die das Gerät nicht mehr das selbe ist.

Eine Übertragung ist daher grober Unfug. Auch wenn man diese Angaben korrekt anpassen würde gibt es ein noch fataleres Problem:

Selbst gleiche Modelle wurden je nach Verfügbarkeit mit unterschiedlichen Flash- und RAM-Chips bestückt, besonders bei RAM auch mit Bausteinen mit erheblich abweichenden Eigenschaften (wie Anzahl der Banks und Timing etc.). Diese Unterschiede werden durch undokumentierte Konfiguration im Bootloader gesichert. Bootloader-Updates von AVM übertragen diese Information.

Ein Bootloader ist auch zwischen gleichen Modellen nicht gefahrlos übertragbar!.

Ohne RAM funktioniert auch ein intakter Bootloader nicht ⇒ Brick.

Um die oben erstellte Sicherung *auf genau die selbe Box* zurückzuspielen *wäre* dies der Weg:

	cat bootloader.bin > /dev/mtdblock3

Selbst dann besteht Brickgefahr. Die MTD Treiber blockieren nicht das OS. Greift ein anderer Prozess währenddessen z.B. über die ADAM2 API auf das Environment zu hängt sich das System eventuell während des Schreib- oder Löschvorgangs auf ⇒ Brick.

Grundsätzlich sollte man daher den Bootloader nur mit geeigneter AVM Firmware schreiben oder wenn man über Werkzeuge zum debricken (EJTAG) verfügt.

Bootloader-Befehle

  • Die über die Serielle Konsole nutzbaren Befehle findet man im ADAM2 Shell Artikel
  • Die per FTP nutzbaren Befehle findet man im TinyFTP Artikel

Bei einigen Modellen wurde aus Sicherheitsgründen die ADAM2 Shell entfernt. Dies betrifft keine im freien Handel befindliches Geräte, nur Providermodelle wie die FRITZBox Cable.

Per FTP sind nur Modelle mit mindestens einem LAN-Port erreichbar (und recoverbar). Daher eignen sich Modelle ohne LAN (einige Repeater) nicht zum Experimentieren oder Freetzen. Grobe Faustregel: Wenn AVM eine Recovery bereitstellt ist ein Gerät perfekt zum Freetzen geeignet. Dies gilt nicht automatisch für von kleineren Providern bereitgestellte Geräte! Diese können sogenannte "Provider Additive" enthalten die einen Werksreset überstehen. Neuere Recoveries verweigern bei solchen Geräten ihre Funktion, ältere Recoveries zerstören das Additiv (ohne "vor Ort" Hilfe des Providers irreparabel). Dies dürfte der Grund sein warum AVM die 7570 Recovery vom FTP-Server entfernte.

Für AVM Speedports gab es nur werksinterne Recoveries für den Telekom-Service. Diese wurden leider nie veröffentlicht.

Achtung: Im Netz kursieren auch defekte Speedport (sp2fr) Recoveries die jeden Speedport bricken!

Speedports lassen sich mit geringem Aufwand auch sauber mit Freetz recovern. Achtung: Howtos, Forenpostings und Windows Tools die MTD3/4 clean empfehlen sind entweder uralt oder ein stümperhafter Faulheitshack! Details zu den teilweise fatalen Folgen dieser fossilen Unsitte folgen.

Bootloader-Quelltext

ADAM2 wurde vielen Abnehmern von TI-Chips bereitgestellt und war eigentlich nie quelloffen. Jeder Hersteller von Geräten modifizierte ihn dann nach eigenen Bedürfnissen und hielt den Quelltext geschlossen, so auch AVM. Auch Linksys nutzte eine modifizierte ADAM2 Version, leakte den Quelltext aber versehentlich in einem wag54g Tarball. Damit änderte sich nicht der proprietäre Status von ADAM2, er wurde aber zumindest in der Linksys Variante "Visible Source" und kann hier gestöbert werden. Diese Variante ist aber nur sehr beschränkt für die FRITZBox aussagekräftig.

Der Quelltext der AVM Variante von ADAM2 wurde nie veröffentlicht. Lediglich die ADAM2 API zum Erreichen des Environments war quelloffen.

Der Nachfolger EVA basiert nicht auf ADAM2 und ist ein kompletter funktionskompatibler Rewrite. Im Gegensatz zu ADAM2 unterstützt EVA direkt komprimierte Kernels und wurde bisher auf mindestens 8 Architekturen portiert. ADAM2 kam nur auf AR7-Modellen mit Kernel 2.4 zum Einsatz. Alle von Freetz erzeugte Firmware benötigt Kernel 2.6 und EVA.

Aufbau des Bootloaders

Am Anfang eines jeden MIPS-Bootloaders befindet sich eine 8-Byte "Signatur". In Wirklichkeit handelt es sich um Assembler-Code zur Initialisierung des MIPS-Kerns die MIPS netterweise bittet nicht zu ändern. Diese Befehlssequenz löscht 2 Hälften eines Debug-Registers (Watchpoint Exception bei "Berührung" einer Adresse) die im Normalbetrieb nicht genutzt werden und eignen sich auch wegen der Länge hervorragend als zuverlässige Signatur. Siehe in diesem Quelltext den Kommentar "First thing: clear watch regs".

Für Litte Endian Modelle (AR7, UR8) assembliert dies zur Hexfolge 00 90 80 40 00 98 80 40 die immer am Anfang von mtd2 (also vom gesamten Flash) zu finden ist. Bei Big Endian Modellen (AR9, AR10, VR9, Fusiv) entspricht es der 32-bit gespiegelten Hexfolge 40 80 90 00 40 80 98 00 und es befinden sich grundsätzlich weitere Daten davor. Dies ist eine bis zu 1024 Bytes grosse Vektortabelle oder Kalt- und Warmstartvektoren und Code zur Initialisierung der hier ab Zeile 44 genannten EBU-Einheit. Beim AR9, AR10 und VR9 sind dies 24 Bytes (Offset 0x18), beim Fusiv die vollen 1024 Bytes (Offset 0x400). Diese Bytes gehören natürlich zum Bootloader, die beiden "Signatur-Befehle" verschieben sich dadurch lediglich.

Zum Ausmaskieren von ARM Bootloadern sind diese Signaturen nicht geeignet, da ARM Assembler andere Häufigkeitsverteilungen hat. Ein zuverlässiger Detektor muss also zuerst ARM Code erkennen. Zum Erkennen von Puma5 (ARM1176BE) Bootloadern gibt es auch eine zuverlässige Assemblersequenz aus der Lowlevel-Initialisierung. Siehe in diesem und diesem Quelltext den Kommentar "Unlock CFG MMR region". Dies assembliert zu Code der die Hexfolge 08 61 1A 38 83 E7 0B 13 08 61 1A 3C enthält. Diese Signatur ist leider nicht am Anfang des Bootloaders zu finden. Bei der 6360 mit EVA 2070 befindet sie sich an Offset 0xF1AC, also noch in den ersten 64KB von Puma5 EVA. Leider stehen keine Recoveries zum Testen der Signatur zur Verfügung. Mit Puma5 EVA oder U-Boot Code funktioniert sie einwandfrei.

Ungeachtet des Offsets erkennt man EVA am 32-bit Wert 0x00000002 oder 0x00000003 im jeweiligen Endian an Offset 0x580. Dies ist die Version (fast immer 2, bei brandaktuellen Modellen auch 3) der EVA Urlader-Konfig in der Teile der Grundeinstellungen im Werk eingetragen werden. Da EVA-Images in Firmware keine Konfiguration enthalten ist der Wert dort 0xFFFFFFFF. Auch ADAM2 enthielt Teile dieser Einstellungen, jedoch einkompiliert ohne festen Offset.

In beiden Bootloadern sind 8 Default-MAC-Adressen 00:04:0E:FF:FF:01 - 00:04:0E:FF:FF:08 einkompiliert, die Mindestanforderung für eine Kommunikation, sollte die Urlader-Konfig defekt oder noch nicht vorhanden sein. Seit Entwicklung des VoIP Gateway 5188 findet man in EVA auch das Environment der zweiten CPU fest einkompiliert, da diese über kein eigenes Flash und daher auch kein TFFS und Environment verfügt und über NFSRoot bootet. Environment-Variablen können intern nicht nur per Name angesprochen werden sondern auch per numerischem Index. Dazu wurde eine Liste numerisch ansprechbarer Variablen einkompiliert die immer mit AutoMDIX anfängt. Bei älteren ADAM2 Urladern endet die Liste nach der letzten Variable (z.B. wlan_key), bei neueren ADAM2 und EVA mit zuende. Diese Tabelle ist quelloffen, da sie auch die Namenstabelle des TFFS ist, siehe "#if defined(URLADER)" und "_TFFS_Name_Table" in tffs.h.

In allen Recoveries finden sich Fragmente von mindestens einem Bootloader. In den Anfängen der FRITZBox wurde identische Firmware für mehrere Modelle umbenannt, die Bootloader jedes dieser Modelle waren jedoch noch nicht harmonisiert. Entsprechend findet man in Recoveries aus dieser Zeit multiple Bootloader-Signaturen, da der modellspezifische Teil mehrfach enthalten war, die modellübergreifende Teil jedoch nicht.

Grundsätzlich ist die Extraktion eines funktionierenden Bootloaders aus einer Recovery nicht möglich, da der Bootloader aus in der Recovery enthaltenen Codefragmenten und auf der Box befindlichen Werkseinstellungen intelligent zusammengebaut wird. Für die Modellforschung ist die Auffindbarkeit der Fragmente und deren Grundeinstellungen jedoch interessant. Von 436 analysierten Recoveries waren etwa 14% ADAM2-MIPSLE, 50% EVA-MIPSLE und die restlichen 36% EVA-MIPSBE. Bei allen Proben genügte die Auswertung der letzten 256 KB des mit 7zip isolierbaren .data Segments jeder Recovery.exe.

Bei der Umstellung auf Kernel 2.6 mussten einige Modelle auf EVA umgestellt werden. Daher enthalten einige Firmware-Updates ein urlader.image und passende Programme zur Aktualisierung. In den Anfängen gab es auch einige ADAM2-Updates, in denen der Dateiname Modell- und Versionsinformation wie urlader.Fritz_Box_4MB.97.adam2.image enthielt. Im Gegensatz zu den Fragmenten in Recoveries sind diese immer "fixed-size" Bootloader mit Leerbereichen für zu übertragende Konfiguration.

In ADAM2 ist die Version des Urladers als Integer in der Form urlader-version \x00 99 \x00 einkompiliert, bevor es diese Variable gab in der Form $ProjectRevision: 1.24 $, auch mit mehrstelliger Version wie in diesem Bootlog. Bei EVA findet man die Version mit bis zu 3 Bytes Abstand vor oder hinter der Zeichenfolge %d.%s und es muss 1000 hinzugezählt werden. Ein zusätzliches M signalisiert eine modifizierte Variante. In neueren Recoveries findet man zudem einen .eva Dateinamen, z.B. für die 7360v2 mit EVA 2717M den String 1717M.eva. In 436 analysierten Recoveries wurden ADAM2 der Versionen 1.20, 1.24, 50 bis 99 und EVA der Versionen 1124 bis 2970 entdeckt (Stand 2014-01). Bei 5 EVA 1190 Recoveries 04.30/31 funktioniert die Versionserkennung nicht, die Nummer ist dort irgendwo ab Offset 0xF000 relativ zur Signatur zu finden. Diese müssen per MD5 erkannt werden.

Der älteste in Firmware gefundene Bootloader, ADAM2 Version 1.24, wurde in der bisher ältesten bekannten Firmware fritz.box_sl.05.01.63.image vom 30. April 2004 (1 Monat nach Vorstellung der ersten FRITZBox auf der CeBIT) entdeckt. 4 englische Bootloader der Version 1.20 sind neuer. Durch getrennte Weiterentwicklung je Modell können ADAM2 Versionen nicht kalendarisch sortiert werden. Der älteste in Firmware gefundene EVA Bootloader Version 1124 befindet sich in einer frühen 7170 Recovery. EVA-Versionen lassen sich auch erst ab etwa 1600 modellübergreifend kalendarisch sortieren.

Recoveries enthalten zwei weitere leicht zu findende Versionsangaben für den Programmteil. Über die enthaltenen Firmwarekomponenten sagen sie nichts aus. Je 2 Beispiele:

  • FW 3.37: AVM Berlin recover-tool-version:[RECOVER:53][IO_CSP:11] compiled at Feb 18 2005 on 14:24:36
  • FW 6.01: AVM Berlin recover-tool-version:[RECOVER:378M][IO_CSP:248] compiled at Aug 23 2013 on 13:52:14
  • FW 3.37: [AVM Berlin Wizard Base Project, $ProjectRevision: 1.7 $, $Date: 2005/02/11 10:47:18Z $, kompiliert am Feb 14 2005 um 10:10:13]
  • FW 6.01: [AVM Berlin Wizard Base Project, $ProjectRevision: 1.63 $, $Date: 2011/07/04 11:49:20Z $, kompiliert am Jul 8 2013 um 11:45:45]

Wie man sieht werden die Komponenten GUI (Wizard), Recover- und I/O-Teil getrennt entwickelt und kompiliert. Eine heutige Recovery besteht also aus mindestens 6 Projekten. Auf älteren FRITZBox CDs (z.B. 3020) befindet sich eine recover.exe ohne integrierte Firmware (etwa 100KB) der noch ein externes Image bereitgestellt werden musste. Das Programm nennt sich ar7recover und stammt vom Februar 2004, 1 Monat vor Vorstellung der ersten FRITZBox. Dies dürfte wohl die älteste veröffentlichte Recovery-Lösung von AVM sein.

Jede Recovery erkennt eine Box an der Urlader-Variable HWRevision. Da der Urlader keinen Zugriff auf den vollständigen Namen eines Modells hat enthält jede Recovery eine Liste aller bis zum Erstellungsdatum bekannten HWRevisions und deren Modellnamen. Die Liste befindet sich im mit 7zip isolierbaren .rdata Segment, bei älteren Recoveries bis etwa 04.43 ist sie im .data Segment oder nicht vorhanden (bisher nur bei einer 03.14). Zweck der Liste ist die menschenlesbare Anzeige des gefundenen Modells in der GUI, unabhängig davon ob die Recovery passt.

Die Liste ist bis zu 3 KB gross und fängt immer mit dem String unknown an, gefolgt von nullterminierten Paaren HWR / Boxname, mit 32-bit Padding je String. Der letzte Eintrag ist immer die FRITZ!Box SL und ihre HWR F. Einige Listen ordnen unknown die HWR K zu, bei anderen folgt direkt der erste Modellname. Die Zuordnungpaare sind leider nicht konsistent. So enthält die Liste auch 2 aufeinanderfolgende Namen oder Nummern, aber auch Firmennamen wie AVM und Telekom. Sie muss also intelligent interpretiert werden. Obwohl die HWR-Liste auch in aktuellen Recoveries enhalten ist pflegt AVM sie seit HWR 190 nicht weiter. Recoveries höherer Werte haben zusätzlich den Zuordnungseintrag für das unterstützte Modell im .data Segment, die HWR gefolgt von mehreren Nullbytes gefolgt vom Namen. Da bei allen neueren Recoveries das .data Segment mit der nullterminierten HWR anfängt kann diese als Suchstring in den letzten 256 KB des Segments genutzt werden. Ob und wie bei diesen Recoveries Fremdmodelle mit HWR > 190 erkannt werden muss noch geprüft werden.

Bei der Analyse von 419 Recoveries mit obigem Wissen wurde die Häufigkeitsverteilung ermittelt. Um Konsistenzfehler auszumaskieren enthält die Liste nur Zuordnungen die in mindesten 5 Recoveries gefunden wurden. Die Zähler für HWR > 190 wurden zuvor mit 10 multipliziert.

	Count	HWR	Box-Name
	416	G	FRITZ!Box
	417	F	FRITZ!Box SL
	416	58	FRITZ!Box Fon
	414	60	FRITZ!Box WLAN
	416	61	FRITZ!Box Fon WLAN
	417	62	FRITZ!Box (Annex A)
	416	63	FRITZ!Box SL (Annex A)
	416	64	FRITZ!Box Fon (Annex A)
	414	65	FRITZ!Box WLAN (Annex A)
	412	66	FRITZ!Box Fon WLAN (Annex A)
	69	71	FRITZ!Box Fon ata
	348	71	FRITZ!Box Fon ata / FRITZ!Box Fon ata 1020
	415	72	FRITZ!Box Fon 5050
	410	73	FRITZ!Box Fon 5050 (Annex A)
	408	76	FRITZ!Box Fon WLAN 7050
	410	77	FRITZ!Box Fon WLAN 7050 (Annex A)
	417	78	Eumex 300 IP
	415	79	FRITZ!Box WLAN 3070
	415	82	FRITZ!Box WLAN 3050
	415	83	FRITZ!Box 2030
	415	84	FRITZ!Box 2070
	415	85	FRITZ!Box WLAN 3030
	59	86	FRITZ!Box FON 5010
	341	86	FRITZ!Box Fon 5010
	341	87	FRITZ!Box Fon CTP
	59	87	FRITZ!Box FON CTP
	348	88	RadioFRITZ! 8000
	52	88	FRITZ!Box Radio
	338	89	FRITZ!Box Fon 5012
	59	89	FRITZ!Box FON 5012
	344	90	FRITZ!Box Fon WLAN 7170
	348	91	Sinus W 500V
	52	91	Sinus W 300V
	398	93	Speedport W 501V
	339	94	Unknown
	57	94	FRITZ!Box FON WLAN 7170
	59	95	FRITZ!Box FON WLAN 7140
	336	95	FRITZ!Box Fon WLAN 7140
	59	96	FRITZ!Box FON WLAN 7130
	337	96	FRITZ!Box Fon WLAN 7130
	52	97	Sinus W 500V
	348	97	Unknown
	348	101	Speedport W 701V
	348	102	Speedport W 900V
	317	103	VoIP Gateway 5144
	317	104	VoIP Gateway 5188
	31	104	FRITZ!Box Profi VoIP / FRITZ!Box Fon 5188
	343	105	FRITZ!Box Fon WLAN 7540V
	345	106	FT 7150 D
	341	107	FRITZ!Box Fon WLAN 7140 Annex A
	343	108	FRITZ!Box Fon WLAN 7141
	344	109	FRITZ!Box Fon WLAN 7170 SL
	5	110	FRITZ!Box Fon 5140 / FRITZ!Box Fon 5120
	343	110	FRITZ!Box Fon 5120
	342	111	FRITZ!Box Fon 5140
	309	112	FRITZ!Box WLAN 3130
	38	112	FRITZ!Box WLAN 3131
	348	113	FRITZ!Box 2031
	345	114	FRITZ!Box Fon 5122
	344	115	FRITZ!Box Fon WLAN 7122
	24	117	FRITZ!Box Fon WLAN 3170
	317	117	FRITZ!Box WLAN 3170
	303	118	FRITZ!Box WLAN 3131
	24	119	FRITZ!Box Fon 2170
	317	119	FRITZ!Box 2170
	295	120	FRITZ!Box W702V
	292	121	Speedport W 900 V
	291	122	FRITZ!Box Fon WLAN 7270
	295	123	FRITZ!Media 8020
	295	124	FRITZ!Media 8040
	295	125	FRITZ!Box 5124
	295	126	FRITZ!Box 5124 (Annex A)
	291	127	FRITZ!Box Fon WLAN 7170 (Annex A)
	295	128	FRITZ!Box 7150 / FRITZ!Box 7150 (Annex A)
	295	129	FRITZ!Box 7113
	295	130	FRITZ!Box 2121
	295	131	FRITZ!Box 5130
	295	133	FRITZ!Box 2110
	295	134	Speedport W721V
	281	135	Speedport W920V
	281	136	Speedport W503V
	258	137	FRITZ!Box WLAN 3270
	257	138	FRITZ!WLAN Repeater N/G
	257	139	Unknown
	257	140	FRITZ!Box Fon 5125 / FRITZ!Box Fon 5125 (Annex A)
	253	141	FRITZ!Box Fon WLAN 7270 (Annex A)
	257	142	Speedport W 721VK
	254	143	Speedport W 101 Bridge
	253	144	FRITZ!Box Fon WLAN 7240
	15	145	FRITZ!Box Fon WLAN 7270
	238	145	FRITZ!Box Fon WLAN 7270 v3
	253	146	FRITZ!Box Fon WLAN 7570 vDSL
	243	147	DSL-EasyBox A802
	14	147	DSL-EasyBox A802-R
	257	148	DSL-EasyBox A602
	257	149	DSL-EasyBox A402
	243	150	FRITZ!Box Ikanos
	243	151	FRITZ!Box 8160
	243	152	Speedport W722V
	240	153	Alice IAD 7570 vDSL
	238	154	FRITZ!Box Fon WLAN 7212
	240	155	FRITZ!Box Fon 5113 / FRITZ!Box Fon 5113 (Annex A)
	230	156	FRITZ!Box Fon WLAN 7390
	30	157	FRITZ!Box Fon WLAN 6360
	153	157	FRITZ!Box 6360 Cable
	230	159	FRITZ!Box Fon WLAN 7112
	234	160	Speedport W 504V
	234	162	FRITZ!Box 7113 (Annex A)
	183	164	FRITZ!Box Fon WLAN 504avm
	228	165	FRITZ!Box Fon WLAN 7541 vDSL
	183	167	FRITZ!Box Fon WLAN 7270 v4
	210	168	FRITZ!Box WLAN 3270 v3
	183	171	FRITZ!Box Fon WLAN 7340
	183	172	FRITZ!Box Fon WLAN 7320
	152	173	FRITZ!WLAN Repeater
	192	174	Alice IAD WLAN 3331
	186	175	FRITZ!Box WLAN 3370
	156	176	FRITZ!Box 6320 Cable
	153	177	FRITZ!Box 6840 LTE
	140	178	FRITZ!Box Fon WLAN 7313
	117	179	FRITZ!Box 7330
	25	179	FRITZ!Box Fon WLAN 7330
	143	180	FRITZ!Box 6810 LTE
	140	181	FRITZ!Box Fon WLAN 7360 SL
	60	182	FRITZ!Box 6322 Cable
	80	182	FRITZ!Box 6320 v2 Cable
	140	183	FRITZ!Box Fon WLAN 7360
	143	184	FRITZ!Box 6841 LTE
	30	185	FRITZ!Box 7490
	90	185	FRITZ!Box 7391
	117	186	FRITZ!Box 6361 Cable
	117	187	FRITZ!Box 6340 Cable
	117	188	FRITZ!Box 7330 SL
	117	189	FRITZ!Box 7312
	117	190	FRITZ!Powerline 546E
	40	192	FRITZ!Box 7272
	30	193	FRITZ!Box 3390
	10	195	FRITZ!Box 6842 LTE
	40	196	FRITZ!Box Fon WLAN 7360 v2
	28	197	Unknown
	10	197	FRITZ!Box WLAN 3270 v3
	20	198	FRITZ!Box 3272
	10	200	FRITZ!WLAN Repeater 450E
	30	203	FRITZ!Box 7362 SL

Die HWR am Anfang des .data Segments ist Teil einer Struktur, die in jeder Recovery mit Kernel 2.6 zu finden ist. Bei neueren Recoveries findet sie sich an Offset 0, bei älteren an Offset 64 (0x40). Sie Struktur enthält die unterstützte HWR an Offset 0, die Sprache an Offset 16 (0x10) und die mit Leerzeichen getrennte Liste der unterstützten Brandings an Offset 32 (0x20). Dies ist sehr nützlich da z.B. EWE Recoveries nicht am Dateinamen erkennbar sind. Ein vierter String dessen genauer Zweck noch unklar ist fängt normalerweise an Offset 0x30 an und verschiebt sich um jeweils 8 Bytes wenn der Brandings-String länger als 8 Bytes ist. Bei Congstar (und vermutlich auch Telekom) Recoveries enthält er tcom, bei allen anderen enthält er unabhängig von Sprache und Anbieter immer avm.

In allen Kernel 2.4 Recoveries befindet sich am Ende des .data Segments eine Reihe von mit einem oder mehreren Nullbytes terminierten Strings. Dies ist eine 2- oder 3-stellige Zahl unbekannten Zwecks (leider nicht die HWR) oder der String IE, der optionale String en oder de und die Firmwareversion in punktierter Schreibweise (z.B. 29.04.01) mit dem optionalen Zusatz -prerelease-<checkpoint>. Dahinter steht der optionale String avm oder freenet, gefolgt von der optionalen Liste der unterstützten Brandings. Lediglich die älteste bekannte Recovery mit integrierter Firmware (03.14) enthält diese Information nicht. Sie ist deutsch und kannte noch kein Branding. Die HWR muss bei Kernel 2.4 Recoveries aus dem Urlader ermittelt werden.

Der Vergleich der ermittelten Brandings mit den /etc Defaults bestätigt die Zuverlässigkeit obiger Methoden, sowohl bei Release- als auch bei Labor-Recoveries. Es existieren allerdings 2 Labor-Recoveries die einen falschen Bootloader enthalten. Die Datei FRITZ.Box_2110.04.47-9457.recover-image.exe enthält einen HWR 130 Bootloader einer nie auf den Markt gekommenen 2121, die Datei fritz.box_fon_wlan_7050.04.50.B.telnet.recover-image.exe den HWR 94 Bootloader einer 7170.

Bootloader und Freetz

Da Freetz EVA benötigt sind einige Modelle schon vom Bootloader her nicht für Freetz geeignet. Grundsätzlich sollte jede Box vor dem Freetzen mit Originalfirmware aktualisiert werden. Dies aktualisiert ggf. auch den Bootloader. Für einige ältere Modelle ist evtl. ein Zwischenupdate notwendig.

Für folgende Modelle existiert kein EVA Update:

  • FRITZBox (alle Versionen)
  • FRITZBox SL
  • FRITZBox 2030
  • FRITZBox Fon (Deutsch A/CH Annex A+B) - mit Tricks evtl. deutsch oder englisch aktualisierbar
  • FRITZBox Fon ata (alle Versionen)
  • FRITZBox Fon WLAN (Deutsch A/CH Annex A+B) - mit Tricks evtl. deutsch oder englisch aktualisierbar

Für einige dieser Modelle könnte Freetz ein EVA Update einer anderen Box Alien patchen. Bei der FRITZBox SL und 2030 mit 2MB Flash und 8MB RAM wird es wohl nie Freetz geben.