Debugmode disable-FAQ

von McClean
v1.0, 8.04.2001


Falls Ihr jemals in die Verlegenheit kommen solltet, den Debugmode wieder loswerden zu wollen (Reparatur, Rückgabe..) dann habt Ihr eine kleine Anleitung. Der BR-Loader bietet die Möglichkeit über einen Befehl den Debugmode wieder zu deaktivieren. Das funktioniert leider meistens nicht, Ihr solltet es aber mal testen.

Serielles Nullmodemkabel an die Box anschliessen und Terminal auf 9600,n,8,1 einstellen.
Beim booten der Box einfach den BR-Bootloader mit "Enter" unterbrechen. Es erscheint ein Prompt.
dbox2:root> printenv

Es werden alle Variablen angezeigt unter anderem auch die 'Product?':
dbox2:root> setenv product? true

Wenn ihr jetzt neu bootet und der Debugmode ist aus, habt Ihr Glück. Falls nicht müsst Ihr Euch hier durchschlagen. Das beschriebene Verfahren ist getestet und funktioniert, stellt aber ein hohes Risiko dar. Bei einem Fehler ist die gesammte Box tot, Ihr solltet also einen guten Grund haben, das hier durchzuführen.

Ich übernehme für die Beschreibung keinerlei Garantie!


Allgemeine Vorgehensweise:

Ein Teil des Bootloaders wird ins RAM kopiert. Dort wird die Speicherstelle an der die Variable "Product?" gespeichert ist verändert. Danach wird dieser Teil das Flashs gelöscht und durch die veränderte Version im RAM überschrieben.


Beschreibung:

1. Ihr lasst Eure DBox mit dem PPCBoot hochfahren und brecht den Autoboot dann durch Drücken von "Enter" ab. Es erscheint dann:
dbox2-ppcboot>

2. Ihr braucht die Speicherstelle, an der Product? abgespeichert ist. Dieser Wert wurde beim Debugmode-enablen auf der seriellen Konsole angezeigt.
DebugEnabler (c) tmbinc, gillem +(sagem,amd) 1.6beta 
bl-version      : 1.2
product? at     : 1000095C
current state   : tmb-locked
flashrom type   : 2x16 bit? yes. vendor: INTEL
unprotecting    : OK!
flashing NOW    : Done!

Please reset now!
Falls Ihr kein Log mehr davon habt, könnt Ihr den gleichen Vorgang wie zum Debugmode-enablen nochmal durchführen. In meiner Beschreibung werde ich den Speicherplatz 1000095C verwenden. Ihr müsst also die nachfolgenden Zeilen Euren Werten gemäß anpassen.

3. Zur Sicherheit schaut Ihr Euch mal den Speicherbereich an.
dbox2-ppcboot> md 1000095c

1000095c: 00000000 00000000 ffffffff 00000000    ................
An der genannten Stelle sollte wie hier 00000000 stehen.

4. Jetzt wird ein Teil des Bootloaders ins RAM kopiert. Der 10000000-Bereich ist das Flash, als RAM-Bereich wählen wir 01000000. Wir kopieren 2000 Longs.
dbox2-ppcboot> cp 10000000 01000000 2000

5. Im Speicher wird nun die Product? auf true gesetzt. Da wir im Speicher ändern wollen die entsprechend richtige Speicherstelle benutzen (Product? = 1000095C --> 0100095C)
dbox2-ppcboot> nm 0100095C

0100095c: 00000000 ?
Jetzt gebt Ihr ffffffff ein. Es erscheint wieder der gleiche Prompt aber mit Eurem neuen Wert. Mit Strg+C abbrechen.

6. Um das Flash löschen zu können, muss vorher die Protection ausgeschaltet werden.
dbox2-ppcboot> protect off 10000000 10007fff

7. !!!ACHTUNG!!! Wenn Ihr hier fortfahrt gibt es kein zurück mehr. Bis zu diesem Schritt könnt Ihr es Euch nochmal anders überlegen und einfach abschalten. Wenn Ihr also sicher seid, dann löschen wir jetzt den entsprechenen Flashbereich. Die Jumper müssen gesetzt sein (wie für Debugmode-enablen).
dbox2-ppcboot> erase 10000000 10007fff
Jetzt auf keinen Fall mehr Auschalten bevor Ihr fertig seid. Hoffentlich gibts kein Stromausfall :)

8. Nun wird der veränderte Speicherinhalt wieder an seinen ursprünglichen Platz kopiert.
dbox2-ppcboot> cp 01000000 10000000 2000
Es kann nun passieren, dass eine Fehlermeldung erscheint. Keine Sorge, das macht nichts.

9. Vergleichen, ob alles korrekt kopiert wurde.
dbox2-ppcboot> cmp 01000000 10000000 2000
Hier sollte jetzt aber unbedingt eine Bestätigung stehen. Wenn nicht wiederholt besser ab Schritt 6 nochmal.

10. Flash-Protection wieder anschalten.
dbox2-ppcboot> protect on all

11. So, jetzt kommt die Sekunde der Wahrheit :) Ihr könnt jetzt wie box reseten. Wenn alles okist, bootet die Box jetzt ohne Debugmode.
dbox2-ppcboot> reset