Hier eine Beschreibung wie man per serieller Schnittstelle Zugriff auf die FritzBox-6591 bekommt.
- Das ganze setzt voraus daß man etwas mit Hardware/Lötkolben/Linux umgehen kann, wer sich das nicht zutraut, Finger weg!
- Es versteht sich dass man das nicht mit Provider-/Mietboxen machen sollte!
- Disclaimer: Keine Garantie für dass ich mich nicht irgendwo vertippt habe! Man sollte prinzipiell verstehen was man hier tut.
- Wer das hier liest, bitte auf das Datum des letzten updates achten. Ich werde das nicht bis in alle Ewigkeit maintainen.
- Die Prozedur funktioniert unter Umständen NICHT für gebrandete Providerboxen (firmware_version != avm). Siehe Sektion bzgl. branding am Ende.
Die 6591 hat zwei RS232 Konsolen (4-pin through-holes), eine für den Atom, eine für den ARM core. Im Prinzip können beide verwendet werden um sich einzuloggen bzw. eine firmware-Modifikation vorzunehmen. Aber:
- Über die Atom-Konsole kann man sowohl ein Update als auch Recovery durchführen, sollte man sich die Box "gebrickt" haben. Es ist also die zu bevorzugende Variante.
- Die Atom-Konsole wird mit 1.8V betrieben, d.h. man benötigt einen RS232 Adapter der das kann (siehe thread weiter unten), oder man muss für die üblichen USB Adapter noch einen Pegelwandler dazwischenschalten.
Hier tut es ein ganz einfaches Platinchen mit Transistorschaltung, gibts bei Ebay, maker shops etc (ja, auch ein "3.3V auf 5V" Modell sollte gehen, zumindest tut es das bei mir).
- Die ARM Konsole läuft mit 3.3V. Hiermit kann man eigentlich "nur" eine modifizierte Firmware einspielen (bei mindestens einer FW-Version hat auch das nicht funktioniert, s.u.).
Update: Es sieht so aus als ob die Prozedur mit Boxen neueren Produktionsdatums so nicht mehr funktioniert. Folgende Versionsausgabe in den Supportdaten scheint ein solches Modell zu identifizieren:
Code:
DMI: Intel Corporation PUMA 7 C0 PLATFORM/TBD, BIOS CGM2.86C.627075.R.1910091149 10/09/2019
Bei solchen Boxen geht das Update wie gehabt über ftp im bootloader. Details
hier
Prozedur
- Gehäuse möglichst zerstörungsfrei öffnen. Die Position der Laschen erkennt man in etwa am Bild oben (je 3 links. rechts, unten).
- ARM und/oder Atom Konsole anbringen (Pin header anlöten oder, wenn möglich, Verbindung temporär irgendwie anklemmen). Auf dem Bild oben:
- Atom Konsole: oben (am silbernen shield), Belegung von links nach rechts: 1.8V (eckig), Rx, Tx, GND.
- Bei einem passenden 1.8V Adapter nur Rx, Tx, GND anschliessen.
- Für einen Pegelwandler muss V/GND der "Low" Seite an 1.8V/GND des Steckers angebunden werden, entsprechend die "High" Seite an 3.3V/GND des RS232 Adapters.
Am besten nochmal nachmessen.
- (Optional) ARM Konsole in der Mitte, Belegung andersherum: GND, Tx, Rx, 3.3V (Eckig). Hier nur GND/Rx/Tx anschließen.
- Terminal-Programm öffnen, mit 115200/8/n/1 ohne flow control verbinden.
- Box einschalten und sich wie üblich nach ein paar Sekunden an der EVA Konsole per ftp anmelden:
ftp 192.168.178.1
- Folgende Kommandos:
quote SETENV kernel_args mute=0
quote REBOOT
Die mute=0 Einstellung bleibt prinzipiell persistent.
- Je nachdem welche Konsole man verbunden hat sollten nach einiger Zeit Ausgaben kommen (u.A. vom kernel), am Ende return drücken und man hat eine shell.
- Das wird natürlich erst einmal nicht klappen, weil man (RS232-Gesetz!) Rx und Tx vertauscht hat, also umdrehen und noch einmal versuchen.
Hat man Zugriff auf die Shell kann man ein modifiziertes Atom rootfilesystem einspielen, z.B. mit Netzwerklogin.
Ich haben meine Toolchain (
https://bitbucket.org/fesc2000/ffritz/src/6591/) bereits auf die 6591 angepasst, so dass man sich ein solches modifiziertes Image generieren kann (wer nur die Konsole zum einloggen verwenden will kann natürlich auch das original Image nehmen).
Zum Bauen:
Code:
git clone --branch 6591 https://bitbucket.org/fesc2000/ffritz
cd ffritz
make
Wer Optionen anpassen will (z.B. eine andere Firmware version) der kopiere
vor dem make Kommando die Datei
conf.mk.dfl nach
conf.mk und editiere letztere. Siehe auch den Kommentar am Ende dieses Textes bzgl. branding.
Installation
Die Methode von der Atom-Konsole ist im Prinzip im README.md beschrieben. Für die ARM Konsole muss man die unten beschriebenen Kommandos mittels
rpc sh -c "kommandos"
ausführen. Ich empfehle das nicht, denn es funktioniert wohl nicht zuverlässig und wenn etwas schief geht benötigt man eh die Atom Konsole.
- Das update-image (hier z.B. release23/fb6591_7.12-23.tar) in das NAS Verzeichnis auf der box kopieren.
- Entpacken:
cd /var/media/ftp; tar xf fb6591_7.12-23.tar
- Update installieren (dauert ca. 20sek):
/sbin/burnuimg /var/media/ftp/var/firmware-update.uimg || echo FAILED
- Wenn erfolgreich, bootbank switch und reboot:
/bin/aicmd pumaglued uimg switchandreboot
- Nach dem reboot sollte fuer einige Zeit ein telnet daemon laufen. Einloggen, ssh login credentials vergeben (passwd oder pubkey nach /.ssh/authorized_keys), sichern (nvsync), fertig.
Der telnet service wird nach ein paar Minuten terminiert.
Den bootbank-switch kann man auch wie üblich in der EVA ftp console mittels "
quote SETENV linux_fs_start 0|1" (gefolgt von "
quote REBOOT" !) durchführen. Wenn eine bank gar nicht bootet wird auch ein automatischer switch durchgeführt.
Recovery
Sollte man sich beide Bootbänke so zerstört haben so dass kein Linux mehr bootet hilft nur noch die Atom-Konsole.
- Die Datei var/firmware-update.uimg im release-tarball auf einen USB stick kopieren.
- USB Stick an die FritzBox anschliessen.
- Box einschalten. Um in die EFI-Shell zu gelangen muss man
- auf der Konsole "exit" eingeben während der EVA ftp server läuft (nach der Ausgabe von "EvaHack ready"),
- unmittelbar gefolgt von ein paar mal Escape-Taste.
- "map" eingeben. Hier werden die device mappings aufgelistet. Der USB stick sollte etwa so erscheinen:
FS2: Alias(s):HD36c0b:;BLK22:
PciRoot(0x0)/Pci(0x14,0x0)/USB(0x2,0x0)/HD(1,MBR,0x0047BD56,0x40,0x7807C0)
- Das image in den Speicher laden (FS2: ggf. ändern wie in Schritt 4 gelistet):
load2mem -f FS2:\firmware-update.uimg
.. und sich die angegebene Adresse kopieren.
- Üblicherweise möchte man das aktuelle boot Image beibehalten und auf das backup Image schreiben. Dazu die bootbank umschalten:
aid toggle
aid update
- Jetzt das Image programmieren (Adresse aus schritt 5):
update -a A -s 0x513A010
- Bei Erfolg ("Congrats! Looks like everything went as planned! Your flash has been updated! Have a good day!") rebooten:
reset
Die Box sollte jetzt mit dem neuen Image starten.
Gebrandete Boxen
Diese starten nicht mit der firmware für retail boxen, was in der Grundeinstellung auch für das von mir gebaute image gilt!
Wer eine eigene box (also
keine gemietete!) hat und es trotzdem probieren will, der kopiere vor dem "make" (um ein modifiziertes image zu bauen) den patch "user-oem.patch" sowohl in das "atom" als auch in das "arm" Verzeichnis. Damit ignoriert die box beim starten die "firmware_version" Einstellung und geht von "avm" aus.
Wichtig:
- Damit ist nicht das branding entfernt, und einige Features werden nicht funktionieren (insbesondere auto-update).
- Ob das bei zukünftigen firmware-versionen so funktioniert kann ich nicht sagen/testen. Was ein Grund ist warum der patch per default nicht "aktiviert" ist.
------------------------
Edit: Vergessen,
VIELEN Dank an
@Flole für die wertvolle Unterstützung!
Edit2: Pegelwander, RS232 Vcc sollte 3.3V sein.
Edit3: EFI shell: Atom statt ARM Konsole
Edit4: Recovery Sektion
Edit5: Hinweis zu Providerboxen
Edit6: Ein paar Schönheitskorrekturen.
Edit7: Installationskommandos für ARM Konsole entfernt.
Edit8: Update zu neuen modellen
Edit9: Update bzgl. branding
Edit 10: Link auf README bzgl. update-prozedur bei neuerem BIOS