DBox-Debug-Mode-HOWTO
von dridders
v1.00, 30.12.00

changelog:
v1.04, 25.01.01
lexxi (lexxi@gmx.ch)

v1.06, 28.01.01
derget (derget@altavista.net)

v1.22, 04.02.01
derget und lexxi

v1.23, 13.02.01 - Added Sagem Support
derget

v1.3, 23.02.01 - html version
lexxi

v1.31, 14.03.01
lexxi & derget



Hier wird beschrieben, wie man die DBox2 von Betaresearch (hergestellt durch Nokia, Sagem und Philips) in den Debug-Mode schaltet, so dass der Bootloader auch nicht signierte Dateien lädt. Dadurch kann man das Programm ppcboot (eine Art Linux-loader für PPC) über das Netzwerk starten. Mit ppcboot kann man nun einen Linux-Kernel auf der Box starten. pfffff, kompliziert, nicht unbedingt mit Hilfe dieses HOWTO's. Desweiteren wird erklärt, wie man ppcboot konfigurieren muss. Zum Schluss wird auf den Linux Kernel eingegangen (Quellen, patchen, konfigurieren...). Wenn ihr mit dieser HOWTO fertig seid und in eurem Terminalprogramm 
sh-2.03# 
steht, habt ihr gewonnen.


Inhaltsverzeichnis

1. Informationsquellen / Feedback
2. Voraussetzungen
3. SAGEM oder NOKIA
4. Die Prozedur
5. PPC Boot
6. Der Linux Kernel
7. Verwendete RPM's
8. Bug's
9. Weiterfürende Infos zur Software


1. Informationsquellen / Feedback

 

 

Bis jetzt gibt es leider noch nicht sehr viele Infos über die DBox2 im Netz. Folgendes haben wir bis jetzt gefunden:

1.) http://dbox2.elxsi.de Die Hauptseite

2.) IRC: im IrcNet im Channel #dbox2 ist fast immer jemand zu finden, der zumindest etwas Ahnung hat. Als Server könnt ihr z.B. ircnet.irc.fu-berlin.de benutzen

3.) http://www.mvista.com - Hier bekommt ihr das CDK, das bei der Entwicklung der Soft für die Box hilft

4.) Debian PPC binarys

5.) Eine kleine Anleitung, wie ihr die wichtigsten Programme kompilieren müsst (gcc, binutils, glibc,...)

6.) CRT - einfaches Terminalprogramm für Win9x

8.) Für die Besitzer einer Sagem Box

9.) Das Hardwarebook - Kabel, Stecker...

10.) Pinbelegung des Modems in der Nokia Box

11.) Public FTP des Projektes

12.) EMail: dbox2-help@gmx.de


2. Voraussetzungen

 

 

!! ACHTUNG !!
Um die dbox in den Debugmodus zu bringen braucht man den Inhalt des Flash Filesystems. Auf dieser Soft liegen Copyright Rechte von diversen Firmen (SUN, BetaResearch, ....). Daher ist das Bereitstellen dieser Soft im Internet natürlich Verboten. Die Punkte 2.8 und 2.9 beschreiben wie ihr die Dateien die ihr aus dem Flash Filesystem braucht, rausbekommt .
Zuerst mal ein paar allgemeine Sachen, die immer wieder gefragt werden.

* Die dbox und euren PC müsst ihr mit einem Crossover Kabel verbinden.
Crossover => 1 - 3,2 - 6,3 - 1,4 - 4,5 - 5, 6 - 2,7 - 7,8 - 8

* Die dbox kann natürlich auch Mittels einem normalen Hub (der Hub muss für 10mbit ausgelegt sein, die dbox kann nicht 100mbit) mit eurem Rechner verbunden werden, ACHTUNG hier keine Crossover Kabel verwenden!

* Wenn ihr nur an der dbox ein Nullmodem Kabel eingesteckt habt (und nicht am PC) kann die dbox nicht booten, und bleibt 'hängen' --> also Nullmodem Kabel entweder an dbox UND PC oder ganz weg

* Als IP Adressen für eure dbox und euren Rechner verwendet ihr am besten den Kreis 192.168.1.X
zB: dbox --> 192.168.1.10 , Rechner --> 192.168.1.1 Netmask 255.255.255.0

1.) Ein installiertes Linux.

Wer bis jetzt noch kein Linux drauf hat, sollte sich zuerst mal z.B. RedHat oder SuSE oder eine andere Distribution holen und damit vertraut machen.

2.) Die Verzeichnisse /dbox und /tftpboot einrichten.

dbox2# mkdir /dbox
dbox2# mkdir /tftpboot 

3.) Bootpd oder Dhcpd

Hierüber erhält der Bootloader der Box (und später der Linux-Kernel) eine IP-Adresse. Ausserdem wird ihm damit mitgeteilt, welche Datei er booten soll. 
#Beispiel /etc/bootptab:
#-------------------------------------------------------------------------
dbox:bf=/tftpboot/os:ha=<MAC-ADRESSE-DER-BOX>:ip=<IP-DER-BOX>:
sa=<IP-ADRESSE-DES-LINUX-RECHNERS>
#------------------------------------------------------------------------- 
Die Mac-Adresse der Box steht hinten auf einem Aufkleber (6 Hex-Byte, durch - oder : getrennt). Die müsst ihr ohne - und : bei ha= einsetzen. 
#Beispiel /etc/dhcpd.conf:
#-------------------------------------------------------------------------
subnet 192.168.1.0 netmask 255.255.255.0 {
}
host dbox {
fixed-address <IP-DER-BOX>;
hardware ethernet <MAC-ADRESSE-DER-BOX-MIT-:-GETRENNT>;
allow bootp;
server-name <"IP-DES-LINUX-RECHNERS">;
filename "/tftpboot/os";
}
#------------------------------------------------------------------------- 
Der 'server-name' wird nur als string angenommen, unbedingt mit "" versehen.
Jetzt nur noch darauf achten, dass bootpd oder dhcpd auch gestartet wird. Wenn ihr dhcp*.i386.rpm erst jetzt installiert habt, müsst ihr noch mit 
dbox2# touch /var/stat/dhcp/dhcpd.leases 
das file '/var/stat/dhcp/dhcpd.leases' anlegen (sonst funzt dhcpd nicht). bootpd startet man vielfach über die /etc/inetd.conf, dhcpd über ein passendes Script in /etc/rc.d/init.d, - je nach Distribution. Bei bootpd sieht der Eintrag in /etc/inetd.conf meisstens so aus: 
#Auszug aus /etc/inetd.conf
bootps dgram udp wait root /usr/sbin/tcpd bootpd -d4 -c /tftpboot 

4.) /etc/hosts

Jetzt tragt ihr die Box in die /etc/hosts ein: 
#Auszug aus /etc/hosts
<IP-ADRESSE-DER-BOX> dbox 

5.) RARP

Hierüber bekommt der BR-Kernel seine IP-Adresse. Macht einfach diese Eingabe: 
dbox2# rarp -s dbox <MAC-ADRESSE-DER-BOX-MIT-:-GETRENNT> 
!!ACHTUNG:!! entweder ihr schreibt dieses Komando in '/etc/rc.d/rc.local' oder ihr gebt es nach jedem Neustart des Rechners wieder ein. Einfach mit 
dbox2# rarp --list 
überprüfen.

6.) tftpboot

Hierfür müsst ihr den tftpd installiert haben. Dieser wird über die '/etc/inetd.conf' gestartet, der Eintrag sollte etwa so aussehen: 
#Auszug aus /etc/inetd.conf
tftp dgram udp wait root /usr/sbin/tcpd in.tftpd -s tftpboot 

7.) nfs

Ausserdem wird zum Starten ein NFS-Server benoetigt. Dieser sollte bei den meisten Distrbutionen schon installiert sein. Nur noch folgenden Eintrag in die '/etc/exports' einfügen: 
#Auszug aus /etc/hosts
/dbox dbox(rw,no_root_squash) 

8.) bootkernel

Da der Bootloader der dbox nur einen signierten Kernel bootet, müsst ihr euch diesen besorgen. Dafür müsst ihr eine dbox mit Software Version 1.32 haben. An diese box müsst ihr mit geeigneten Sockeln einen externen Flasher an die Flash-Rams andocken , mit dem ihr ein RAW Image macht. Aus diesem Image könnt ihr den 1.32 Kernel extrahieren, den ihr dann als '/tftpboot/os' ablegt. Nun nur noch 
dbox2# chmod -R 777 /tftpboot 
machen.

9.) tuner.so , etc ..

Nun müsst ihr eure dbox auf Version 1.5 updaten. Danach müsst ihr das erste mal übers Netzt den extrahierten Kernel booten. Dafür muss alles laufen 
dbox2# /etc/rc.d/init.d/nfs stop / start (nfs)
dbox2# /etc/rc.d/init.d/dhcpd stop / start (dhcpd)
dbox2# killall -HUP inetd (bootpd und tftpd) 
dbox per Krosskabel an den Rechner anschliessen nicht vergessen!!!
Die Box sollte jetzt bei "Lade..." stehen bleiben. Wenn Sie "Starte Vxxx" anzeigt ist irgendwas schiefgelaufen, kontrolliert dann nochmal oben die Schritte. Einfach 
dbox2# tail -f /var/log/messages 
eintippen und die letzten Aktionen kontrollieren. Wenn ihr 
dbox2# rsh dbox help 
eingebt sollte ein kleiner Hilfetext erscheinen. Ansonsten nochmal alles kontrollieren. Nun die Datei 'cpR.class' (http://dbox.fqdn.org/cpR.class) in /dbox/ kopieren dann 
dbox2# rsh dbox mount <ip des NFS Servers>:/dbox /lost+found
dbox2# rsh dbox setenv CLASSPATH /usr/siege/lib/siege.jar:/usr/siege/lib/junior.jar:.:/lost+found
dbox2# rsh dbox setenv PATH /root/platform/bin:/root/bin:/usr/bin:/usr/siege/bin:/mnt/bin
dbox2# rsh dbox setenv TZ MET-01METDST-02,J84,J302
dbox2# rsh dbox setenv LD_LIBRARY_PATH /root/platform/lib:/root/lib:/usr/lib
dbox2# rsh dbox setenv SIEGEHOME /usr/siege
dbox2# rsh dbox arun siegep cpR / /lost+found 
eingeben. Das Kopieren dauert ca. 5 Min. Jetzt habt ihr den Inhalt des Flash Filesystems eurer dbox in '/dbox/' auf eurem NFS Server liegen. Jetzt ersetzt ihr '/dbox/root/platform/drv/tuner.so' mit 'tuner.so' von http://dbox2.elxsi.de/files/tuner.so  . Zum Schluss noch die Rechte ändern. 
dbox2# chmod -R 777 /dbox 


3. SAGEM oder NOKIA

 

 

Es gibt zur Zeit 2 verschieden Hersteller von der DBOX2 Nokia und Sagem, und diese noch in verschieden versionen was die Austatung des Flash Rams betrifft. Folgende dboxen werden unterstützt:
NOKIA mit 2* INTEL 32 Mbit Flash Beschriftung (28F320C3)
NOKIA mit 2* AMD 32 Mbit Flash Beschriftung (am29DL323)
SAGEM mit 1* INTEL 64 Mbit Flash Beschriftung (28F640J3)
SAGEM mit 2* INTEL 32 Mbit Flash Beschriftung (28F320C3)

Andere Flashbestückungen sind uns bis jetzt nicht bekannt wer ne dbox2 mir anderen Flash´s hat soll sich mal im irc-netzt im channel #dbox 2 melden .... 


4. Die Prozedur


1.) Verbindet die Box via Netzwerk mit dem Linux-Rechner. Am Besten klemmt ihr die Box auch gleich via Nullmodemkabel an ein Terminalprogramm (Einstellung: 57600, 8N1, Kein Protokoll/Handshaking).
2.) Box in den Strom stecken (ja geht die denn da rein??)
3.) Die Box sollte jetzt bei "Lade..." stehen bleiben. Wenn Sie "Starte Vxxx" anzeigt ist irgendwas schiefgelaufen, kontrolliert dann nochmal oben die Schritte. Einfach 'tail -f /var/log/messages' eintippen und die letzten Aktionen kontrollieren.
4.) Wenn ihr 
dbox2# rsh dbox help 
eingebt sollte ein kleiner Hilfetext erscheinen. Ansonsten nochmal alles kontrollieren.

5.a) NOKIA DBOX aufschrauben

Für die hinteren Schrauben geht ein normaler Torx T-10. Für die seitlichen Schrauben braucht ihr theoretisch einen Spezial-Torx. Es geht aber auch anders. :-) Wenn die Garantie nicht interessiert, für den gehen folgende Moeglichkeiten:
a) Die Schrauben einfach mit einer Zange rausdrehen
b) einen Phasenprüfer verkantet ansetzen und damit die Schrauben rausholen
c) es soll auch mit Uhrmacherschraubenziehern gehen
b) die Nippel in der Mitte lassen sich wohl auch rausbrechen. Danach geht das Schrauben dann auch einfacher

Wer lieber die Box nochmal unbeschädigt zu kriegen will, kann folgendes probieren:
a) passenden Schraubenzieher besorgen. Gibts bei verschiedenen Spezial-Geschäften, ist der gleiche wie bei der DBox1. Es gibt bei Westfalia (www.westfalia.de) ein 100 Teiliges Spezial Bit Set für 29.90 DM (Art. Nr. 102269)
b) Einen normalen Torx nehmen, und in die Mitte ein passendes Loch bohren. Die Box hat zwar eigentlich nur 5 statt 6 Ecken, aber es soll trotzdem gehen.
c) Einem Phasenprüfer einen Schlitz in die Mitte feilen. Damit gehts dann wenn man vorsichtig ist auch ohne Spuren.
 

5.b) SAGEM DBOX aufschrauben

Alles nur normale TORX :) das sollte kein Problem sein

6.) Jumper setzen

Nokia mit 2 * Intel Jumper XH4 und XH6 brücken. Bei den meisten neueren Boxen sind hier leider keine Jumper mehr eingeloetet, sondern nur noch Loetpunkte. Diese beiden Loetpunkte einfach mit einem Kabel verbinden (Kabel anloeten).
Nokia mit 2 * AMD Nur Jumper XH3 brücken
Sagem mit 2 * Intel Lötpunkte wie auf Bild (http://www.noernet.de/dbox2/pics/Sagem_2xIntel.jpg) verbinden
Sagem mit 1 * Intel Lötpunkte wie auf Bild (http://www.tuxbox.org/sagem/sagem-connect.jpg) verbinden. Tipp: Wer nicht löten will , einfach 2 Schaschlick Spiesse in die beiden Löcher stecken, und sie mit einem Stück Draht verbinden
Danach die Box wieder in Strom stecken, und warten bis sie das 'Lade...' anzeigt.

7.) Die dbox updaten

dbox2# rsh dbox setenv PATH /root/platform/bin:/root/bin:/usr/bin:/usr/siege/bin:/mnt/bin
dbox2# rsh dbox setenv TZ MET-01METDST-02,J84,J302
dbox2# rsh dbox setenv LD_LIBRARY_PATH /root/platform/lib:/root/lib:/usr/lib
dbox2# rsh dbox setenv SIEGEHOME /usr/siege
dbox2# rsh dbox setenv CLASSPATH /usr/siege/lib/siege.jar:/usr/siege/lib/junior.jar:.:/lost+found/
dbox2# rsh dbox umount /
dbox2# rsh dbox mount <ip des NFS-Servers>:/dbox /
dbox2# rsh dbox arun initactor -v -V -i 4
Da kommen etliche Fehlermeldungen , das ist normal :) Euer Terminalprogramm beobachten (Einstellung: 57600, 8N1, Kein Protokoll/Handshaking), dort sollte am Schluss "Done!" stehen.

8.) Box neu starten

Die Box vom Strom trennen und die Jumper entfernen. (WICHTIG !! Nur wenn die Jumper nicht gesetzt sind ist der Bootloader geschützt und kann von euch durch irgendwelche Spielerein nicht zerstört werden) So, eure Box sollte jetzt im Debug-Mode sein. Erkennen koennt ihr das daran, dass die Box beim Starten jetzt einige Infos über den Bootloader ausgibt. 


5. PPC Boot


1.) Besorgt euch ppcboot-0.6.4 (ftp://ftp.denx.de/pub/ppcboot/), und entpacken es am Linuxrechner nach ..../dbox_ppcboot (legt ein neues Verzeichnis mit dem Namen 'ppcboot-0.6.4' an). Nun braucht ihr noch das diff für ppcboot-0.6.4 von http://dbox2.elxsi.de. Entpackt es nach ..../dbox_ppcboot/ppcboot-0.6.4/.Nun in ..../dbox_ppcboot/ppcboot-0.6.4/ den patch ausführen. 
dbox2# patch -p1 <ppcboot-0.6.4-dbox.diff 
2.) Ihr müsst in ..../dbox_ppcboot/ppcboot-0.6.4/Makefile noch den Pfad zu eurem Crosscompiler eintragen 
#Auszug aus dem Makefile
CROSS_COMPILE = ppc_8xx- 
3.) In ..../dbox_ppcboot/ppcboot-0.6.4/include/config_dbox.h koennt ihr Grundlegendes verändern wie zB. baudrate, autoboot und bootargs. 
#Auszug aus config_dbox.h
#define CONFIG_BAUDRATE 9600 
!! ACHTUNG !! ihr müsst in eurem Terminalprogramm auch die Baudrate verändern!!!! Zusätzlich muss man auch noch in /usr/linux/arch/ppc/8xx_io/uart.c die Baudrate ändern. 
#Auszug aus uart.c
bd->bi_baudrate=9600; /* kann mir wer erklären was das soll? */ 
#Auszug aus config_dbox.h
#if 0
#define CONFIG_BOOTDELAY -1 /* autoboot disabled */
#else
#define CONFIG_BOOTDELAY 5 /* autoboot after 5 seconds */
#endif
...........................
...........................
#define CONFIG_BOOTCOMMAND "bootp 100000 /tftpboot/dbox-linux;
bootm 100000" 
'dbox-linux' ist in diesem Fall der Namen des Linuxkernels, den ihr booten wollt. 
#Auszug aus config_dbox.h
#define CONFIG_BOOTARGS "root=/dev/nfs rw nfsroot=10.0.0.1:/opt/hardhat/devkit/ppc/8xx/target" 
Hier müsst ihr natürlich die IP gegen die eures Rechners austauschen, und in '/etc/exports' das Verzeichnis '/opt/hardhat/devkit/ppc/8xx/target' hinzufügen (mit den selben Optionen wie /dbox). Die rpm's von mvista haben '/opt/hardhat/devkit/ppc/8xx/target' als Pfad für das Target !!!!
!! ACHTUNG !!nur für SAGEM boxen mit 1*Intel Flash und Nokia mit 2* AMD Flash
In Zeile 36 von '.../dbox_ppcboot/ppcboot-0.6.4/dbox/flash.c' return 8 * 1024 * 1024;" einfügen. 
#Auszug flash.c Zeile 36
return 8 * 1024 * 1024; 
4.) in '.../dbox_ppcboot/ppcboot-0.6.4/' make dbox_config und make ausführen 
dbox2# make dbox_config && make 
!! ACHTUNG !! Überprüft ob '/opt/hardhat/devkit/ppc/8xx/bin' in $PATH steht (sonst funzt der Cross Kompiler nicht).
5.) das so in '.../dbox_ppcboot/ppcboot-0.6.4/' entstandene ppcboot nach /tftpboot/ kopieren.
6.) In /etc/bootptab \ /etc/dhcpd.conf den Namen des Bootfiles ändern.
os --> ppcboot
einfacher wäre natürlich nur den Namen des files zu änder (/tftpboot/os loeschen, .../dbox_ppcboot/ppcboot-0.6.4/ppcboot nach /tftpboot/ kopieren und in /tftpboot/os umbenennen, aber Hand auf Herz, wer will's schon einfach haben ;-)
7.) bootpd \ dhcp neu starten 
dbox2# killall -HUP inetd
dbox2# /etc/rc.d/init.d/dhcpd stop/start (bei RedHat) 


6. Linux Kernel


1.)Besorgt euch den 2.4.2er Kernel 'www.kernel.org' ,und den Kernel patch von http://dbox.fqdn.org/kernel/2.4.2/linux-2.4.2.dbox+mtd.kju.diff.gz
2.) Kernel entpacken, Patch einspielen und das config-file nach /usr/src/linux/.config kopieren.
3.) In /usr/src/linux 'make xconfig' ausführen, dann 'make dep', 'make clean' und 'make zImage' ausführen. ( wer auf der Konsole arbeitet, macht natürlich 'make menuconfig'). Wenn ihr gegenüber den Standardeistellungen nichts ändern wollt, braucht ihr 'make xconfig' natürlich nicht mehr aufrufen, müsst dann aber noch selber den symlink anlegen 
dbox2# ln -s include/asm-ppc/ include/asm 
dann nur noch 'make dep', 'make clean' und 'make zImage' ausfüren.
4.) Der so enstandene Kernel muss noch ppcboot kompatibel gemacht werden. Das geht am einfachsten mit dem Script 'mkimg', das in .../dbox_ppcboot/ppcboot-0.6.4/ liegt. Einfach mal in das Script reinschauen, die Pfade anpassen und ausführen. Bei Problemen die Rechte des Skripts ändern 
dbox2# chmod ugo+x mkimg 
Dann hat man einen Kernel, den ppcboot booten kann.
5.)Es gibt auf 'http://dbox.fqdn.org/kernel/2.4.2/' einen fertig kompelierten Kernel. Ausserdem auch auf der tuxbox Projectpage auf berlios (http://developer.berlios.de/projects/tuxbox/) bzw auf dem public ftp von berlios.


7. Verwendete RPM's


* dhcp-2.0-5.i386.rpm
* bootparamd-0.10-24.i386.rpm
Besorgt euch von ftp://ftp.mvista.com/pub/cdimages/CDK/1.2/ das iso-CD Image (powerpc_000808.cdimage). Mit 'Adaptec Easy CD Creator' oder einem ähnlichen Tool brennt ihr dann eure CD. CD einlegen und aus dem Verzeichnis /mnt/cdrom/ppc_8xx/RPMS alle *.noarch.rpm und *.i386.rpm installieren. Wenn ihr Probleme mit der Installation habt spielt zuerst 'hll-ppc_8xx_busybox...rpm' ein, viele andere RPM's brauchen 'busybox' bereits als link Schaut nach, ob /opt/hardhat/devkit/ppc/8xx/bin in eurer PATH Umgebung ist. 


8. Bug's


SUSE 7.0 und RED-HAT 7.0 , der DHCP Server überträgt den link zum kernel nicht richtig im tcpdump sieht man sowas wie 'file "/tftpboo"' anstatt 'file "/tftpboot/os"'.
Keine Ahnug warum das so ist, und warum das nicht bei allen ist. Einfach DHCP neu compilieren, dann geht's . ( am besten mit dhcp-2.0pl5)
!! ACHTUNG !! SUSE 7.1 Bei der Suse Distribution wird tftp mit der option -s in der inet gestartet ... d.h man (oder frau?!) darf bei os keinen pfad angeben sonst geht der ppcboot nicht.
Das Kommando rarp -s .... geht nicht ordentlich auf den neueren Distris, da in den neuen Kernel-versionen (wohl alle 2.4.x) Rarp-Server-support nicht mehr integriert ist (nur rarp-client)
als Ersatzt brauch man dann den rarpd ... in die Datei '/etc/ethers' trägt man dann folgendes ein: ip-der-dbox


9. Weiterführende Info's zur Software

 

 

Es gibt inzwischen auf http://dbox.fqdn.org/tiab/ die erste minidistrie für die dbox , da ist alles was man dafür braucht um auf der box linux zum Laufen zu bringen, und auch die bis jetzt entwickelte Soft dafür, das ist ABER NOCH IMMER NUR WAS FÜR ENTWICKLER !! ....
Um diese zum Laufen zu bringen braucht ihr noch ein paar Firmwares aus der Dbox, die aus Copyright-technischen Gründen nicht in der Distrie sind.

Ihr habt ja schon in Punkt 2.9 den Inhalt des flfs (Flash Filsystem) auf euren NFS Server kopiert, dort findet ihr alle Firmwares und Microcodes.
 
cam-alpha.bin /sec/platform/drv/ Firmware der CAM
500v093.ux /root/platform/drv/ Microcode vom avia500
600vb0127.ux /root/platform/drv/ Microcode vom avia600
dmx.so /root/platform/drv/ Microcode vom avia gtx

dmx.so braucht ihr für ucode.bin (muss noch von euch verändert werden)
dbox2# dd if=dmx.so of=ucode.bin count=2048 bs=1 skip=24720