Alice IAD 5130 zur FBF 5140 machen

@RalfFriedl:

Danke!
Läuft telnet denn im Flashspeicher? Ich könnte mir vorstellen, dass es so ist. Dann würde der Zeiger bei 8MB Flash in die Wüste geschickt.
Deswegen werde ich es trotzdem mal mit dem bootloader probieren.

Die Partitionszuteilung bei der 5130 ist wie folgt:
Code:
mtd0                  0x90000000,0x90000000
mtd1                  0x903E0000,0x907B0000
mtd2                  0x90000000,0x90010000
mtd3                  0x907C0000,0x907E0000
mtd4                  0x907E0000,0x90800000
mtd5                  0x90010000,0x903E0000
Diese werde ich ersetzen durch die der 5140:
Code:
mtd0                  0x90000000,0x90000000
mtd1                  0x90010000,0x903C0000
mtd2                  0x90000000,0x90010000
mtd3                  0x903C0000,0x903E0000
mtd4                  0x903E0000,0x90400000

Ich werde den bootloader mit JTAG auslesen, mit einem Hexeditor editieren und per JTAG wieder flashen.

Falls das nicht klappt, werde ich mal den original bootloader einer 5140 flashen.

Heute abend will ich es probieren. Ich werde berichten.
 
Zuletzt bearbeitet:
Das hat ziemlich sicher nichts mit dem Flash zu tun. Aber wodurch sich die BB-en unterscheiden, weiß ich nicht.
Vorschlag: schau mal per serieller Console, was da genau passiert...
Zudem könntest du zur Not das Telnet allein (eigenes Binary nur damit bauen) oder die andere BB "zusätzlich" drauf bringen, und den Link nur fürs Telnet darauf "umbiegen" (z.B. auf "busybox2" oder so).

Jörg
 
Hallo Jörg

Also mit den unterschiedlichen Busyboxen (BB) hat das telnet Problem sicher (auch) nichts zu tun.
Ich hatte nämlich gestern schon telnet per Internet probiert (Methode Harald Becker: http://www.telefonsparbuch.de/software/fritzbox/TelefonSparbuch_Telnet04.30.tar).
Mit exakt demselben Ergebnis: Telnet startet, aber es kommt nur ein leerer Bildschirm. Und das war die original BB von der 5130.

Dein Vorschlag mit der seriellen Konsole ist sicher gut. Werde ich heute abend auch probieren.
 
wenn ein anderes Binary das gleiche Fehlerbild zeigt, sieht das nach Ralfs Vermutung aus, Problemen mit den virtuellen Consolen.
Der Kernel hat entweder keine Unterstützung dafür, oder dir fehlen "nur" die /dev/pts/-se...
Die lassen sich zur Not Anlegen, so in etwa (nur aus dem Gedächtnis)
Code:
for x in 0 1 2 3 4 5 ; do  mknod /dev/pts/$x c 136 $x; done

Jörg
 
@MaxMuster:

Danke für Deine Tips.

a) Kann ich die /dev/pts/-se (keine Ahnung, wozu die gut sind) aus einer anderen image-Datei mit funktionierendem telnet auslesen?

b) Was hältst Du davon, der 5130 den bootloader einer 5140 zu verpassen - und dann telnet einzubauen?
 
Zuletzt bearbeitet:
Bin im Zug und meine Verbindung ist miserabel, keine Ahnung wann es wieder geht...
Diese Dateien sind "Charakter-Devices", sozusagen "Dateien", die als Schnittstelle zum Kernel dienen. Die werden "einfach nur angelegt", normalerweise beim Starten...

Ansonsten: Bootlader ist ungleich Kernel!

Jörg
 
Ansonsten: Bootlader ist ungleich Kernel!
Ist klar, sorry! Ich meine bootloader.
Bootloader von der 5140 auf die 5130. Per JTAG. Was hältst Du davon?
Dann kann ich wahrscheinlich auch die FW 43.04.25 laden. Die hat telnetd, läuft aber auf der originalen 5130 nicht.
 
Nix "Sorry" hier geht es um die Sache, nicht um "Schuld" und Entschuldigungen ;-))

Wenn es denn geht und nötig ist, würde ich den Bootlader immer per "cat" aus dem laufenden System raus übertragen, dann brauch es keine JTAG-Fummelei ;-)

Aber eigentlich sollte(!) die HW der beiden Boxen so nahe sein, dass es keinen Bootlader-Tausch braucht. Wenn, dann sollte "höchstens" das Kernel-Tauschen nötig sein, und dafür würde ich immer freetz nehmen: Baue damit ein 5140 Image (wenn es am kernel liegt mit "replace kernel) und dann hast du auch telnet auf der Box...

Erstmal würde ich aber die serielle Konsole anschließen, um die Ausgabe zu sehen und ggf die Devices anzulegen, wie oben beschrieben. Schließlich will man doch nicht nur wissen, was nicht geht, sondern warum es nicht geht.

Jörg
 
Bin total deiner Meinung!

Ich denke, dass el_valiente eher der Meinung war, dass es nur mit den Austausch einiger Dateien oder einen einfachen Addon abgetan ist.

Mich würde aber interessieren ob es wirklich einen Kernel Tausch braucht.
(Man kann auch bei sp2ft die Option "exchange kernel" oder "use 2nd Firmware kernel" probieren wenn man mal weiß, dass es am Kernel liegt.)

el_valiente, hast du schon eine Freetz Firmware auf der Box probiert?
 
Hallo, da bin ich wieder.
Irgendwo zwischen happy und frustriert. Im Prinzip war ich erfolgreich, habe mir aber ein dickes Problem eingehandelt. Ich berichte:

Zuerst mal Danke an RalfFriedl, MaxMuster und Jpascher!

Nix "Sorry" hier geht es um die Sache ...
Einverstanden, ich ziehe mein "Sorry" zurück ;)

Wenn es denn geht und nötig ist, würde ich den Bootlader immer per "cat" aus dem laufenden System raus übertragen, dann brauch es keine JTAG-Fummelei
Genau das wollte ich ja: Den bootloader via telnet und tftp per "cat" auslesen und mit einem Hexeditor editieren. Aber ohne telnet kann ich das nicht!
Oder geht das auch über die serielle Konsole??

... Kernel-Tauschen nötig sein, und dafür würde ich immer freetz nehmen ... dann hast du auch telnet auf der Box...
An freetz habe ich mich noch nicht ran getraut :rolleyes:
Aber den Kernel kann man auch mit sp-to-fritz "transplantieren". Bei einer FB7050 mit FW14.04.50 war ich heute damit erfolgreich.
Bei der 5130/5140 klappt es allerdings nicht, telnet meldet sich nicht. Kommt mir irgendwie doch wie ein Flash-Speicher Problem vor.

Erstmal würde ich aber die serielle Konsole anschließen, um die Ausgabe zu sehen und ggf die Devices anzulegen ...
Muss ich noch machen. Bei den devices weiss ich nicht, wie ich vorgehen soll.

Zunächst mal der Erfolg:
Ich habe den bootloader des IAD5130 per JTAG ausgelesen, "annex A" und "HWRevision 111" (HWRev der FB5140) mit einem Hexeditor gesetzt und dann den bootloader wieder mit JTAG auf die Box geschrieben.
Danach war die Box eine echte FB5140 (siehe screenshot).
Es liess sich auch die FW43.04.25 laden, was vorher nicht ging. Offenbar eine Folge der Änderung der HWRev von 131 auf 111.
Die FW43.04.25 hat telnet, also war ich am Ziel und hätte hier aufhören können (und sollen).

Jetzt das Problem:
Ich war neugierig und wollte mehr! Also habe ich den bootloader der 5140 per JTAG nach mtd2 geschrieben. Oder zumindestens, was ich für den bootloader hielt (ich habe keine FB5140 zur Hand). Nachher habe ich gemerkt, das der angebliche bootloader 65 statt 64 kB gross war - verdächtig! Zu meiner Entschuldigung: Am Hexeditor sah das Ding sehr wohl wie ein bootloader aus.

Jedenfalls war die Box danach so tot, toter geht es gar nicht. Keine einzige LED gab mehr ein Lebenszeichen.
Na ja, kein Problem, dachte ich, ich habe ja JTAG parat.
Aber auch mit JTAG komme ich jetzt nicht mehr weiter!

Ich berichte weiter im JTAG-Thread (hier der [post=1631579]link[/post]), weil dort gehört die Problematik hin.
 

Anhänge

  • GUI_5130-40.JPG
    GUI_5130-40.JPG
    146.6 KB · Aufrufe: 20
Zuletzt bearbeitet:
Läuft telnet denn im Flashspeicher?
Nein, nichts läuft im Flash-Speicher. Der Flash-Speicher ist so etwas wie ein Ersatz für die Festplatte.

Was hältst Du davon, der 5130 den bootloader einer 5140 zu verpassen - und dann telnet einzubauen?
Ich halte davon nichts. Im besten Fall hat man nachher noch genauso viel Funktionalität wie vorher.

An freetz habe ich mich noch nicht ran getraut
Aber an JTAG schon? Ich schließe mich der Empfehlung von MaxMuster an: Wenn Du etwas anlöten willst, fang mit einer seriellen Konsole an. Darüber kannst Du alles machen, was über telnet geht (und mehr).

Nachher habe ich gemerkt, das der angebliche bootloader 65 statt 64 kB gross war - verdächtig!
Hast Du schon versucht, den ursprünglichen Bootloader wider zu schreiben? Du hast doch eine Sicherung davon erstellt?
Vielleicht enthält Deine Datei auch nicht irgendwo (erkennbar?) einige Bytes zu viel.
 
@RalfFriedl:

1. Danke für die Erklärung zum Flash-Speicher :)

2. Austausch des bootloaders: Du hattest recht. Leider ist ja nicht "der beste Fall" eingetreten, sondern so ziemlich das Gegenteil.

3. Ja, vor ca. einem Jahr habe ich mich Not gedrungen mit JTAG angefreundet. Inzwischen komme ich damit gut zurecht.
Mit der seriellen Konsole habe ich auch schon experimentiert, dazu habe ich am Ende des Beitrags noch eine Frage.

4. Klar, den ursprünglichen bootloader habe ich im Original und modifiziert gesichert (mod. auf AnnexA und HWRevision der 5140).
Ich würde ihn ja liebend gerne wieder nach mtd2 schreiben, aber der Flash-Chip weigert sich (ausführliche Problembeschreibung siehe [post=1631579]hier[/post]).

... fang mit einer seriellen Konsole an. Darüber kannst Du alles machen, was über telnet geht (und mehr).
Frage zur seriellen Konsole: Wie lese ich denn über die serielle Konsole den bootloader aus?

In Telnet kopiere ich ihn zuerst ins Verzeichnis /var/tmp (cat /dev/mtdblock3 > mtd2.bin) - das geht mit der seriellen Konsole auch.
Danach kopiere ich ihn mit tftp auf den PC (tftp -p -l mtd2.bin 'IP des PC').
Wie geht das mit der seriellen Konsole? Wie kann ich da den PC ansprechen? Sicher nicht über 'IP des PC', oder? Ich habe es mit diversen Namen für die serielle Schnittstelle versucht, war aber nicht erfolgreich.
 
... auch wenn ich nicht Ralf bin:
Mit der Konsole kannst du eine "Sicherung" in eine Datei im RAM machen, wie du ja auch geschrieben hast.

Dann kannst du es außer mit "tfpt" (IP des PC wäre übrigens richtig, wenn der tftp-Server ist) z.B. per "nc" übertragen (siehe z.B. hier in #110. Alternative ist das "übermounten" einer Webseite der Box, und diese dann aufrufen ("mount -o bind <Dateiname> /usr/www/all/index.html") und dann die Start-Webseite der Box aufrufen und "speichern", z.B. mit wget ("wget -o mtd2.dump http://fritz.box/index.html").

Immer brauchst du natürlich die LAN-Schnittstelle der Box, weil das Übertragen ja über das Netz geht, aber du brauchst jeweils kein telnet auf der Box, das ist ja auch nicht anderes als eine "serielle Console über IP" ;-).

Jörg
 
@MaxMuster:

Prima, vielen Dank Jörg. Das verstehe ich. Werde ich so ausprobieren.

Immer brauchst du natürlich die LAN-Schnittstelle der Box ... aber du brauchst jeweils kein telnet auf der Box ...
Genau das sehe ich als grossen Vorteil der seriellen Konsole.
Und natürlich der Log, mit dem man studieren kann, warum etwas (nicht) passiert.

An meiner toten 5130 habe ich mit der seriellen Konsole natürlich keinen Zugriff ...
 
Frage zur seriellen Konsole: Wie lese ich denn über die serielle Konsole den bootloader aus?

In Telnet kopiere ich ihn zuerst ins Verzeichnis /var/tmp (cat /dev/mtdblock3 > mtd2.bin) - das geht mit der seriellen Konsole auch.
Danach kopiere ich ihn mit tftp auf den PC (tftp -p -l mtd2.bin 'IP des PC').
Wie geht das mit der seriellen Konsole?

MaxMuster hat dazu einige Möglichkeiten genannt, aber einen Aspekt will ich noch etwas deutlicher schreiben.
Mit telnet verbindet man sich über das Netzwerk mit dem Kommando-Interpreter (Shell) der Box. Über die serielle Konsole ist man auch mit der Shell der Box verbunden. Die Möglichkeiten, die man damit hat, sind exakt die gleichen. Wenn Du schreibst "In telnet kopiere ich mit tftp ...", dann ist das falsch. Tatsächlich übermittelst Du über telnet nur das Kommando an die Shell, das Programm tftp mit bestimmten Parametern aufzurufen. Genau das gleiche Kommando übermittelst Du im anderen Fall über die serielle Konsole.
Das tftp-Programm baut dann eine Verbindung über das Netzwerk auf, die aber nichts mehr mit telnet zu tun hat. Das tftp-Programm hätte ebensogut aus einer Batch-Datei gestartet sein können.

Wenn Du die Datei wirklich über telnet oder die serielle Konsole übertragen willst, kannst Du "hexdump -C mtd2.bin" aufrufen. Damit wird der Inhalt der Datei tatsächlich als Ausgabe auf der Kommando-Verbindung ausgegeben.
 
Danke, RalfFriedl. Deine Ergänzung hilft mir :)

Mir war klar, dass "tftp" kein telnet- bzw. kein shell-Befehl ist, sondern dass ich damit das Programm tftp aufrufe.
Was ich nicht gut durchdacht hatte: Ab dem Aufruf übernimmt tftp das Kommando; es ist völlig egal, wie oder von wo ich tftp aufrufe!
Also kann ich auch über die serielle Schnittstelle wie gewohnt vorgehen.
Damit aber tftp sich mit dem PC verbinden kann, muss eine (LAN-)Verbindung zwischen FB und PC bestehen. Und genau diese hatte ich nicht, als ich es (erfolglos) versuchte: Es war kein LAN Kabel angeschlossen, sondern PC und FB waren nur per serielles Kabel verbunden. Und dann laufen die Versuche von tftp, via Netzwerk auf die FB zuzugreifen, natürlich ins Leere.
 
RalfFriedl schrieb:
...
Wenn Du die Datei wirklich über telnet oder die serielle Konsole übertragen willst, kannst Du "hexdump -C mtd2.bin" aufrufen. Damit wird der Inhalt der Datei tatsächlich als Ausgabe auf der Kommando-Verbindung ausgegeben.


War vielleicht die Frage dahingehend mit der seriellen kommt man auch auf die Box bevor das System gestartet ist und man kann zusätzlich Befehle ausführen die der ADAM Modus zulässt?

In vielen Fällen bootet ja die Box nicht mehr richtig.

Hat das System gebootet ist die Situation wie du beschreibst.
 
@Jpascher:

Du hast recht, diese Eigenschaft der seriellen Schnittstelle ist noch wichtig.
Vor dem Booten steht ja ein (eingeschränkter) Befehlssatz im Adam Modus zur Verfügung. Unter anderem kann man damit im Speicher der FB lesen und schreiben.
Leider nützt das nicht viel, weil die interessanten Partitionen (z.B. mtd2) nicht zugänglich sind.
Oder hat jemand den ADAM Modus der seriellen Konsole schon sinnvoll einsetzen können?

P.S.: Meine Frage bezog sich tatsächlich auf den "nach dem Booten"-Modus der seriellen Konsole. Diese Frage haben mit MaxMuster und RalfFriedel ausführlich beantwortet.
 
flashen über die serielle Konsole (in WinXP)

Ich versuche gerade, den bootloader meiner intakten 5130 per serielle Konsole auf den PC zu kopieren. Ich verwende WinXP und Hyperterminal. Das funktioniert gut.
Auf der 5130 bin ich im Verzeichnis /var/tmp und habe dorthin den bootloader kopiert, genannt "mtd2.bin":
Code:
# cd /var/tmp
# cat /dev/mtdblock3 > mtd2.bin
# ls -al
drwxr-xr-x    3 root     root            0 Jan  2 01:16 .
drwxr-xr-x    7 root     root            0 Jan  1 01:00 ..
-rw-r--r--    1 root     root           50 Jan  1 01:00 avm-resolv.conf
drwxr-xr-x    2 root     root            0 Jan  1 01:00 csem
-rwxr-xr-x    1 root     root           10 Aug 18  2008 group
-rwxr-xr-x    1 root     root           20 Aug 18  2008 hosts
srwxr-xr-x    1 root     root            0 Jan  1 01:00 me_ctlmgr.ctl
srwxr-xr-x    1 root     root            0 Jan  1 01:00 me_igdd.ctl
srwxr-xr-x    1 root     root            0 Jan  1 01:00 me_logic.ctl
srwxr-xr-x    1 root     root            0 Jan  1 01:00 me_multid.ctl
srwxr-xr-x    1 root     root            0 Jan  1 01:00 me_voipd.ctl
-rw-r--r--    1 root     root        65536 Jan  2 01:16 mtd2.bin
-rwxr-xr-x    1 root     root            0 Aug 18  2008 nohup.out
-rwxr-xr-x    1 root     root           25 Jan  2 00:45 passwd
-rwxr-xr-x    1 root     root           21 Jan  1 01:00 resolv.conf
-rwxr-xr-x    1 root     root           26 Aug 18  2008 shadow
#

So weit, so gut.
Jetzt möchte ich die Datei "mtd2.bin" mit tftp auf den PC kopieren.
Dazu schrieb RalfFriedl:
Mit telnet verbindet man sich über das Netzwerk mit dem Kommando-Interpreter (Shell) der Box. Über die serielle Konsole ist man auch mit der Shell der Box verbunden. Die Möglichkeiten, die man damit hat, sind exakt die gleichen ... Das tftp-Programm baut dann eine Verbindung über das Netzwerk auf, die aber nichts mehr mit telnet zu tun hat. Das tftp-Programm hätte ebensogut aus einer Batch-Datei gestartet sein können.
Also starte ich tftpd32.exe in einem von mir bestimmten Verzeichnis und rufe tftp im Hyperterminal auf. Die IP meines PCs ist 192.168.178.5
Code:
# tftp -p -l mtd2.bin 192.168.178.5
#
Perfekt! Der bootloader mtd2.bin wird in das definierte Verzeichnis kopiert und kann dort mit einem Hexeditor bearbeitet werden.
Das zurück Kopieren des modifizierten bootloaders funktioniert ebenso perfekt.
Endlich bin ich so weit, dass ich auch über die serielle Konsole backup-en und flashen kann. Ich brauche kein telnet mehr! Heureka!
Grossen Dank an RalfFriedl und MaxMuster für ihre Hilfe zu diesem Thema.


Ein kleines Problem bleibt noch. Als Alternative hatte RalfFriedl geschrieben:
Wenn Du die Datei wirklich über telnet oder die serielle Konsole übertragen willst, kannst Du "hexdump -C mtd2.bin" aufrufen. Damit wird der Inhalt der Datei tatsächlich als Ausgabe auf der Kommando-Verbindung ausgegeben.
Das habe ich auch probiert, aber die shell kann mit "hexdump" nichts anfangen:
Code:
# hexdump -C mtd2.bin
-sh: hexdump: not found
#
Was mache ich falsch?
 
Du machst nichts falsch, Deine Firmware / Busybox enthält einfach nicht das Kommando hexdump, so wie sie vermutlich auch nicht den telnetd enthält. Du könntest eine andere Busybox auf die Box bringen, aber dafür bräuchtest Du das Netzwerk, und wenn Du Netzwerk hättest, würdest Du auch gleich die Datei über das Netzwerk übertragen.

Was sagt die Busybox, wenn man sie direkt mit "/bin/busybox" aufruft? Evtl. kann man aus den vorhandenen Sachen etwas zusammen basteln.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.