MOTOROLA VIP1710

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Verwandte Artikel

IRC: irc://irc.einirc.de#vip1710

Features

  • Betriebsspannung 5 V-/3 A, Hohlbuchse 5,5/2,5 mm (Pluspol innen)
  • Linux-Betriebssystem
  • MIPS Prozessor mit integriertem MPEG-Decoder
  • TI DSP
  • ATI Xilleon 210
  • 128 MB RAM
  • Anschlüsse: USB, LAN, Scart, digitaler Audioausgang (koaxial), AV-Ausgang, (Cinch), S-Video Ausgang, Seriell (intern 5V Pegel)
  • Smartcard-Leser

verstecktes Menü

Während des Boot-Vorgangs kann durch Drücken der Taste "Menü" (auf der Fernbedienung) das Einstellungsmenü der STB aufgerufen werden. Sofern die STB noch nie zuvor gestartet wurde, wird dieses Menü automatisch angezeigt. Es lassen sich Einstellungen zum gewählten Format NTSC/PAL und zu den Ausgängen (S-Video, Video, SCART) vornehmen.

Betätigt man nun jedoch auf der Fernbedienung jedoch nacheinander die Tasten 2-3-5-7, so erweitert sich das Menü auf die zusätzlichen Eingabemöglichkeiten für die Netzwerkkonfiguration.

VORSICHT! Versucht man über den roten Knopf ein Update einzuspielen, bleibt die Box immer beim Starten hängen und bootet nicht mehr. Per Telnet lässt sie sich auch nicht mehr ansprechen. Wie man die Box dann trotzdem wieder zum Leben erwecken kann, ist hier im open7x0 Forum beschrieben. Dank an Thomas.

weitere Konfigurationsmöglichkeiten

Nachdem zuvor eine Telnet/SSH-Sitzung eröffnet wurde, kann man mittels

toish as Activate 3

ein sehr umfangreiches Konfigurationsmenü mit den vier Untermenüs General, TV, Browser und Systeminformation aufrufen. Um Einstellungen vorzunehmen, ist jedoch die Fernbedienung erforderlich. Die dortigen Einstellungsmöglichkeiten sind selbsterklärend.

Hardware

Varianten:

1. Motorola - Motorola: großer Kühlkörper PCB V 1.4 mit Flashrom, Bootrom 39l040 signiert

2. Motorola - Motorola: großer Kühlkörper PCB V 1.4 ohne Flashrom, Bootrom 39l040 signiert

3. KPN - Kreatel: 2 kleine Kühlkörper PCB V 1.2 ohne Flashrom, Bootrom 39l020 unsigniert

4. Motorola (Gehäuse) - Kreatel (PCB): großer Kühlkörper PCB V1.4 ohne Flashrom, Bootrom 39L040 unsigniert, kann wie Typ3 behandelt werden

5. Motorola (Gehäuse) - Kreatel (PCB): großer Kühlkörper PCB V1.4 mit Flashrom, Bootrom 39L040 signiert (VIP1710-F32)

6. KPN - Kreatel: großer Kühlkörper PCB V 1.4 ohne Flashrom, Bootrom 39l020 unsigniert

weitere?

Serielle Schnitstelle ist "J12"

Version mit großem Kühlkörper / 39l040 / Flash

iptvinnen.png

Bild einer Kreatel Box

Kreatel.jpg



Xilleon220.jpg

Chips

  • CPU AMD/ATI Xilleon 210 ATI Xilleon 210 (215H34AGA12HG)

Xilleon 210 is the most advanced system-on-chip available for value-priced STBs and DTVs. The design integrates a CPU, flexible and powerful TS demux, conditional access, MPEG-2 decoding of video and audio at SD or HD resolutions, market-leading powerful graphics, video picture processing technology and a range of peripheral I/O including an on-chip USB1.1 controller and video DACs meeting worldwide video standards (PAL/SECAM/NTSC).

The video picture processing features high quality scaling with pan-and-scan, windowing and aspect-ratio controls, together with pixel based de-interlacing, flicker-filtering, brightness, contrast and color management, ensuring excellent TV picture quality.

The Xilleon 210 incorporates a powerful 300MHz 32-bit MIPS CPU and a performance-optimised memory controller coupling the chip to an external 16 or 32bit single-channel DDR memory at speeds of up to 183MHz. This combination of CPU and special attention to the internal memory architecture design ensures optimal processing power for the core feature set as well as a plentiful supply of CPU bandwidth for responsive and compelling TV applications.

A complete reference-platform development kit including drivers and sample applications is available, enabling rapid time-to-market development.

Features and Benefits

       * Multi-standard TS Demux and Descramblers to support worldwide markets (DVB, ATSC)
       * Single MPEG-2 SD (X210D) or HD (X210H) decode
       * Integrated 2D/3D Graphics processor
       * Powerful and flexible Display Engine featuring high quality scaling of Video and Graphics and picture processing technology
       * Integrated 300MHz 32-bit MIPS CPU


  • TI Digital Media Processor (TMS320DM642AZNZ) DSP TI TMS320dm642 [1]
  • Winbond W39L040P-702 (512k x 8 CMOS Flash Memory) [2]
  • USB Host Controller NEC D720101 (USB 2.0 Host Controller)
  • 2x Qimonda HYB2500C512160CE-6
  • 2x ESMT M12L64322A (SDRAM 512k x 32bit x 4banks 3,3V)
  • National DP83816 (10/100Mbit PCI Ethernet Controller)
  • 2x NAND128W3A2BN6 von ST (128 Mbit) (32Mbyte, nur Variante mit Flash)
  • TDA8004AT von NXP

Aufteilung des Flashspeichers

  • mtd1: 512/256 kB Flash Winbond W39L040P/W39L020P (nur 256 kB benutzt)
  • mtd0: letzter Bereich von mtd1 (Filesystem "/flash")
  • mtd2: 32 MByte Flash (Lesen mit dd if=/dev/mtd/2 bs=16k skip=2)
  • mtd4: letzter Bereich von mtd2 (Filesystem "/flash2" Lesen mit dd if=/dev/mtd/2 bs=16k skip=1793)

Splash und Kernel liegen in mtd2, AES verschluesselt, AES Key dazu (MediaMall Variante des STB):

 03 BF 2A E2 E4 6B 63 9B B8 C0 39 71 69 D4 B1 5C
 51 D3 39 B9 1D 9C CE 88 BB 46 8F 43 6E CF 8E 4B   

Splash und Kernel sind nicht nur verschluesselt sondern auch signiert.

Gespeicherte Daten in "/flash" und "/flash2" sind persistent.

Der Hash im Winbond Flash ist der SHA-1, der Verschluesselungs Code ist ein proprietaere Algorithmus (wird z.B. zum Verschluesseln der "ProductionData" im Winbond Flash verwendet).

"/dev/mem" liefert die kompletten 112 MB RAM (z.B. mit dem entpackten zweiten Teil des Bootloader).

Schreibschutz der beiden NAND Flash-Chips

Pin 19 der beiden NAND128W3A2BN6 Flash-Chips (IC9 sowie IC13) ist \WP (write protect).

Dieser Pin ist bei beiden Chips miteinander verbunden und mit einem Pullup-Widerstand (R222) versehen. Direkt daneben sitzt R223; dieser ist nicht bestückt. Dieser Widerstand verbindet den \WP mit GND. Um einen Schreibschutz zu aktivieren, kann dort ein Schalter eingebaut werden, der den \WP-Pin auf LOW zieht.

Fernbedienung

Bei der schlanken Infrarot-Fernbedienung (wie sie bei Pollin unter der Artikelnummer 620009 verfügbar ist) handelt es sich um die mit einer weiteren Reihe von 4 Tasten (ganz unten) ergänzte Fernbedienung vom Typ r77 aus dem Hause ruwido in Österreich.

VIP1710FB.jpg

Öffnen läßt sich die Fernbedienung übrigens gänzlich ohne Werkzeug: Einfach vorsichtig mit den etwas längeren Fingernägeln zwischen die obere und untere Gehäusehalbschale der Fernbedienung gehen und diese dort langsam und gleichmäßig auseinanderhebeln. In der Fernbedienung werkelt der MC9S08RD32DWE, ein auf dem HCS08 basierender Microcontroller aus dem Hause freescale.

Die mit "mode" beschriftete Taste schaltet zwischen der TV-Fernbedienung (grüne LED blinkt kurz bei Betätigung einer belegten Taste) und IPTV-Fernbedienung (orange LED blinkt kurz bei Betätigung einer Taste) hin und her. Der TV-Code wird programmiert, indem man die "mode"-Taste für ca. 2 Sekunden gedrückt hält bis die grüne LED zweimal blinkt. Anschließend muss man den dreistelligen Geräte-Code des TV-Gerätes eingeben, der durch erneutes Blinken bestätigt wird. Schön anzusehende Dinge unterliegen oft einem Gebrauchsmusterschutz. Daher ist es naheliegend, dass die beim Telekom IPTV-Gerät "T-Home X300 T" verwendete Fernbedienung (die zumindest optisch starke Gemeinsamkeiten aufweist, jedoch teilweise andere Tastenbelegungen hat) ebenfalls aus dem Hause ruwido stammt. Die Anleitung zum Telekomgerät offenbart dann auch auf den Seiten 30-37 die entsprechenden Codes (getestet mit Code 565 und einem älteren Tevion-TV).

Es gibt jedoch noch eine weitere Fernbedienung (gelabelt mit Motorola). Diese sieht deutlich klobiger aus. Eventuell rühren daher auch die leicht unterschiedlichen Keycodes!?!

Keycodes der Fernbedienung

Die Keycodes der Fernbedienung sind wie folgt:

Bezeichnung    Hexadezimal     dezimal Bezeichnung (Pollin-FB)
 in Literatur
1              0x00310031      3211313 1
2              0x00320032      3276850 2
3              0x00330033      3342387 3
4              0x00340034      3407924 4
5              0x00350035      3473461 5
6              0x00360036      3538998 6
7              0x00370037      3604535 7
8              0x00380038      3670072 8
9              0x00390039      3735609 9
0              0x00300030      3145776 0
Backspace      0x00080008      7929977 terug
TV             0x00720072      7471218 TV
Info           0x00700070      7340144 help
Info           0x00700070      7340144 gids
Menu           0x007B007B      8061051 menu
Up             0x00260026      2490406 up-arrow
Right          0x00270027      2555943 right-arrow
Down           0x00280028      2621480 down-arrow
Left           0x00250025      2424869 left-arrow
OK             0x0X0D000D       851981 OK
Red            0x00740074      7602292 rot
Green          0x00750075      7667829 grün
Yellow         0x00760076      7733366 gelb
Blue           0x00770077      7798903 blau
Volume Up      0x01720072     24248434 volume +
Volume Down    0x01710071     24182897 volume -
Mute           0x01730073     24313971 mute
Media Play     0x01740074     24379508 Pause/Play
*              0x00260026      2490406 zender +
*              0x00280028      2621480 zender -
Media Rew      0x01750075     24445045 <<
Media Stop     0x01770077     24576119 stop
*              0x0=6D006D      7143533 record
Media FF       0x01760076     24510582 >>
*              0x00410041      4259905 ab Kapitel ?!?
*              0x00420042      4325442 hh
*              0x00430043      4390979 Merker setzen (Büroklammer)
*              0x00440044      4456516 springe zu Merker (Pfeil zu Büroklammer)
Text           0x00710071      7405681 tekst
*              0x00460046      4587590 opnames (Bandkassette)
*              0x00470047      4653127 radio (Noten)
Portal         0x00780078      7864440 diensten (Weltkugel)
Tab            0x00090009       589833	*
Return         0x000D000D       851981	*
Shift          0x00100010      1048592	*
Control        0x00110011      1114129	*
Alt            0x00120012      1179666	*
Capslock       0x00140014      1310740 *
Stop           0x001B001B      1769499 *
Standby        0x011B001B     18546715 *
Space          0x00200020      2097184 *
Scroll up      0x01260026     19267622 *
Scroll left    0x01250025     19202085 *
Scroll right   0x01270027     19333159 *
Scroll down    0x01280028     19398696 *
WWW            0x00730073      7536755 *

Die in der linken Spalte mit einem * gekennzeichneten Tasten sind auf der Pollin-FB vorhanden, werden jedoch in der Literatur bislang nicht erwähnt. Die in der rechten Spalte mit einem * gekennzeichneten Codes sind auf der Pollin-FB hingegen nicht vorhanden. Eventuell beziehen sich diese Angaben auf die original Motorola-FB. In normalen Klammern gesetzte Bezeichnungen beschreiben das entsprechende Piktogramm. Alle Tasten sind im Wesentlichen in der Reihenfolge von oben nach unten, von links nach rechts gesehen. Der Code für die bei der Pollin-FB mit "help" sowie mit "gids" beschrifteten Tasten ist wirklich identisch!

Software

Motorola open source

open source software used in the VIP15x0 and VIP17x0 series set-top boxes: Link

Bootloader Link (dem Anschein nach enthält dieses Archiv nicht nur den Bootloader sondern sehr viel mehr, es ist - bz2 komprimiert - ca. 120MB gross Datei:Contents.txt; laut README enthält es auch die Keys, mit denen die Images signiert bzw. verschlüsselt sind).

KreaTV 3.3: Link

Tftdp32 v3.35: Link

MotoPLYR Informationen: Link

Tutorial für Box vom Typ 1 (Motorola: PCB V 1.4 mit Flashrom, Bootrom 39l040 signiert)

Dieses Tutorial beschreibt die Situation bei den MediaMall/Motorola "Gehäusen" mit Flash und funktionierendem telnet.

Wer zunächst einfach mal den Speicher erweitern möchte und ein SSH dem telnet bevorzugt, der kann hier schnell starten. Zunächst gilt es die IP für das Gerät zu finden. Praktischerweise ist das meist im hauseigenem Router sehr schnell und unkompliziert zu finden. Hat man das geschafft, so darf man:

telnet 192.168.1.6

Wobei 192.168.1.6 die vom DHCP zugewiesene IP beispielhaft darstellt.

Nun haben wir eine Verbindung mit dem Motorola. Ich nutze meinen Apache-Webserver weil er schnell griffbereit ist (anders geht es sicher auch - Hauptsache wget kann was damit anfangen). Nehmen wir das Skript aus dem Forum (ihr findet es weiter unten, zwecks Synchronisation von Änderungen) und kopieren es in das Verzeichnis /tmp :

cd /tmp
wget http://192.168.1.4/motorola.sh

Danach nutzen wir die USB- und SSH-Module aus dem Forum. Diese packen wir auf den Webserver. Allerdings müssen die Dateien in den komprimierten Verzeichnissen vorher entpackt werden! Wer möchte, kann schon seinen USB-Stick/Festplatte reinstecken.

chmod 755 motorola.sh
./motorola.sh

Und nun große Freude: Ihr könnt euch per SSH als Benutzer "root" verbinden und USB-Sticks mounten (Unmounten mit "umount /mnt/usbdevice". Passwort gibt es allerdings nicht - das ist leer und kann nicht mit Passwd geändert werden.

Wozu SSH, wenn auch telnet als Zugang vorhanden ist? Weil man einfacher per GUI Daten von der Box bekommt. Dazu eignet sich unter Windows WinSCP sehr gut. Download unter [3]

"Öffentliche" Downloadquelle

Für alle die, die keinen eigenen Webserver betreiben können/wollen gibt es auf der Seite von http://thinksilicon.de die fraglichen Dateien + Skripte in etwas abgeänderter Form. Dort gibt es auch madplay zum Abspielen von MP3-Dateien und ein Script zum Abspielen von Internetstreams:

cd /tmp
wget http://thinksilicon.de/data/linux/vip1710/motorola.sh
sh motorola.sh

Einfach herunterladen und ausführen. Es installiert sshd, scp und ssh, sowie die Kernelmodule für USB-Speicher und fragt nach ob madplay auch installiert werden soll. Über den Befehl

madstream <URI>

kann dann auch ein Internetstream abgespielt werden.

Tutorial für Box vom Typ 2 (Motorola: PCB V 1.4 OHNE Flashrom, Bootrom 39l040 signiert)

1. tftpd32 aufsetzen. Wie genau..? Für Ubuntu gibt es Tipps hier.

2. Signierten original Kernel skernel-1710 zur Verfügung stellen

Tutorial für Box vom Typ 3 (Kreatel: PCB V 1.2 ohne Flashrom, Bootrom 39l020 unsigniert)

Hierbei wird von der Box ein unsignierter Kernel per tftpd gebootet.

Ohne Kernel steht zunächst keine Shell über die Konsole bzw. über telnet zur Verfügung.

Die Box protokolliert die Serveradresse an der Konsole (s.u.), der TFTP Transfer(-Versuch) kann aber auch z.B. mit tcpdump analysiert werden.

1. tftpd32 aufsetzen. Wie genau..? Für Ubuntu gibt es Tipps hier.

Für Testzwecke kann der TFTP daemon (als root) von der Kommandozeile gestartet werden:

# in.tftpd -L -s /tftpboot

2. kernel-1710 mit dem die kickstart.sh auf dem USB Datenträger auch ausgeführt wird zur Verfügung stellen

Auszug aus bootlog:


STRIKE!

Ich habe mit dem Source von http://duff.dk/zaptor/ (mit angepasstem Key
natürlich) den skernel-1710 decrypted und dies dann der Kreatel-Box als
kernel-1710 per TFTP vorgeworfen.

Und siehe da:

Using TFTP
TFTP: Downloading...
Name: kernel-1710
Server: 212.178.98.165
(ELF)...
done
loaded at:     82000000 820C4604
zimage at:     8200F000 820C4604
Uncompressing Linux at load address 80100000
initrd at:     820C4604 82EA448C
relocated to:  802DAFF8 810BAE80
Booting linux kernel
[...]
Linux version 2.4.30 (dailybuild@svn) (gcc version 3.4.6) #1 Thu Jan 11
14:28:39
[...]
BusyBox v1.01 (2007.01.11-16:43+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

Update Bootloader, Kernel, Flash

Ohne Modifikationen an den Boxen:

Typ 1: Kernel+initrd wird aus dem Flash geladen. Andere Software kann über telnet+wget auf die Box gebracht werden bis zum nächsten Ausschalten.

Typ 2: Signierter Kernel+initrd muß per tftp zur Verfügung gestellt werden. Da die Signierung noch nicht 'geknackt' wurde, kann man ausschließlich das Originalimage verwenden!

Typ 3: Diese Box akzeptiert von Haus aus unsignierte Images, die mangels onboard Flash ebenfalls nur per tftp zur Verfügung gestellt werden müssen.

Modifikationen:

1. Der W39L040mod macht nur Sinn, bei Box Typ 1+2, damit ein unsignierter Kernel und initrd Image gebootet werden kann. Box Typ 3 kann das schon von zuhause aus.

2. Einen neuen Kernel bauen macht nur Sinn für nach 1. modifizierte Boxen vom Typ 1+2, oder für Box Typ 3. Dieses unsignierte Image kann dann per tftp gebootet werden.

3. Da nur Box Typ 1 überhaupt über onboard Flash verfügt, kann man einen Update über die Infocast Tools nur für diesen Typ 1 machen und auch nur, wenn man vorher den W39L040 Mod. durchgeführt hat.


W39L040mod

VIP1710 W39L040mod1.jpg VIP1710 W39L040mod2.png

Einspielen des Bootloaders der Box Typ3 auf eine Box Typ1 oder 2

Gerät stromlos machen, Leiterbahn an TP58 auftrennen (dies unterbricht die Verbindung zwischen Pin 18 (O1) des IC12/LC573 und Pin 1 (A18) des IC7/W39L040) und wieder einschalten. Nach dem Booten einen Schraubenzieher nehmen und Pin 1 und 32 vom W39L040 kurzschließen (Dadurch wird VDD/3.3V auf die Adressleitung A18 des Flash-Speichers gegeben).

Hinweis: Besser ist es die A18 zusätzlich mit einem Widerstand (10K) auf Gnd zu legen, sonst ist der Eingang zeitweise offen. Außerdem ist die Schraubenziehermethode nicht sehr Betriebssicher. Den Mehraufwand eines Jumpers und des Pulldownwiderstands sollte man sich gönnen.

Alternativ kann auch ein Jumper an Pin 1 und 32 angelötet werden.

Der Kurzschluss muß beim Bespielen bestehen bleiben!

Danach mit

dd if=stb1710-mtd1.bin of=/dev/mtdblock/1 

den Bootflash mit der hier im Forum zu findenden stb1710-mtd1.bin bespielen (Beitrag dazu: http://www.mikrocontroller.net/topic/pollin-motorola-vip1710#1706182).

Die stb1710-mtd1.bin kann aber auch durch

dd if=/dev/mtd/1 of=stb1710-mtd1.bin

aus einer Typ3 Box geholt werden.

Dann die BOX Ausschalten und die Pins verlöten.

Jetzt sollte sie unsignierte und unverschlüsselte Images vom Netz booten.

An sich kann der Bootloader einer Typ3 Box nicht vom Flash booten. Was sich aber durch Ändern der proddata (ab 0x4000 im mtd1) ändern lässt.

Die proddata sollten nachdem man den neuen Bootloader aufgespielt und noch nicht neu gebootet hat, geändert werden! Sonst hat man unter Umständen eine Box, die nur noch über TFTP booten möchte.

Proddata

Beitrag: http://www.mikrocontroller.net/topic/pollin-motorola-vip1710#1719854

Extrahierte proddata: Beitrag: http://www.mikrocontroller.net/topic/pollin-motorola-vip1710#1723897

Die proddata werden mit

dd if=stb1710-mtd1.bin of=proddata bs=256 skip=64 count=8

aus dem Flashimage einer Typ3 Box extrahiert. "proddata" ist dann genau 2048 Bytes groß (ist einfacher zu handhaben, die proddata aus dem verlinkten Beitrag ist etwas größer!).

Es sind dort vier Einstellungen vorzunehmen.

Die Mac Adresse ändern:

<PrimaryEthernetMAC>00:02:9B:09:32:85</PrimaryEthernetMAC> ,
(Beispiel MAC-Adresse, die richtige steht unten auf der Box)

Den Hinweis für die Box ob sie Flash hat oder nicht:

<LargeFlash>No</LargeFlash>
(kein Flash)
<LargeFlash>Yes</LargeFlash>
<LargeFlashCS0Size>16</LargeFlashCS0Size>
<LargeFlashCS1Size>16</LargeFlashCS1Size>
(mit Flash)

Die Bootreihenfolge:

<FixedBootOrder>2</FixedBootOrder> für Boxen ohne und
<FixedBootOrder>323</FixedBootOrder> für Boxen mit Flash.

und die Adresse des TFTP Servers von dem Splash und Kernel gebootet werden.

Beispiel:

<TftpServer>192.168.178.20</TftpServer>

Die geänderte ProductionsData schreibt man dann in den Boot-Flash:

dd if=proddata of=/dev/mtdblock/1 bs=256 seek=64

Anschließend bootet man die Kiste neu. Nun werden Kernel und Splash entschlüsselt benötigt (aber das wurden sie ja eh schon um so weit zu kommen, ansonsten Download und der Beitrag dazu), ausserdem müssen die Dateien so angepasst werden, dass sie exakt ein Vielfaches von 16 kByte lang sind.

Die Files schreibt man dann ins Flash (bei Boxen mit Flash):

dd if=splash-1710.padded of=/dev/mtd/2 bs=16k seek=24
dd if=kernel-1710.padded of=/dev/mtd/2 bs=16k seek=88

Neuen Kernel bauen

Beitrag: http://www.mikrocontroller.net/topic/pollin-motorola-vip1710#1714094 bzw. http://www.mikrocontroller.net/topic/pollin-motorola-vip1710?page=2#1714094

Die initrd lässt sich doch bearbeiten. Das Ergebnis darf aber nicht größer sein als das Original. Es wird wohl daran liegen, dass die Initrd oberhalb vom Kernel am Schluss des Speichers geladen wird. Ich habe das mal ein wenig zusammengestellt: Ich gehe mal davon aus, dass im Arbeitsverzeichnis ein rootdisk Verzeichnis existiert. Des weiteren ein ein zweiter mountpoint /mnt2 Auf /mnt ist die initrd2 gemountet. In dem rootdisk Ordner sind die Dateien zum Spielen. Zuerst mal die ausgepackten aus der original rootdisk.tar.gz

dd if=/dev/zero of=initrd4 count=31500
mkfs.ext2 initrd4
tar -cf rootdisk.tar rootdisk/
gzip -9 rootdisk.tar
mount -o loop,noatime,nodiratime initrd4 /mnt2
cp /mnt/* -r mnt2
cp rootdisk.tar.gz mnt2
umount /mnt2
gzip initrd4 -9
cat vmlinux.gz initrd4.gz ramdisk-1710 >/tftpboot/kernel-1710

Es ist besser, die initrd4 immer mal wieder neu anzulegen, da sie bei jedem Lösch- und Bespielvorgang unmerklich größer wird.

Der letzte Befehl funktioniert so nur, wenn die richtigen Offsets beim Extrahieren des Kernels verwendet wurden. Dies kann wie folgt geschehen:

dd if=kernel-1710 of=vmlinux.gz bs=20480 skip=1 count=37
dd if=vmlinux.gz of=vmlinux2.gz bs=742924 count=1
dd if=kernel-1710 of=head bs=20480 count=1
dd if=kernel-1710 of=initrd.gz bs=763404 skip=1
dd if=initrd.gz of=tail bs=14548353 skip=1
rm vmlinux.gz
rm initrd.gz
mv vmlinux2.gz vmlinux.gz

Es sind jetzt folgende Dateien vorhanden: head, vmlinux.gz, tail. Diese können jetzt zusammen mit der selbst erzeugten initrd4.gz zu einem bootfähigen Image zusammengefügt werden:

cat head vmlinux.gz initrd4.gz tail >/tftpboot/kernel-1710

Die BOX mountet auch selbständig USB Platten, wenn sie die Kernel Module hat, in der rc.sysinit das "-t jfs" entfernt wird und die Festplatten-Überprüfung übersprungen wird. Um Platz zu sparen, habe ich den Mozilla mal entfernt. Damit die BOX aber nicht von neuem bootet, in der start_platform.sh den sysman entfernt. Leider hat sie danach kein Sound device mehr. Aber vielleicht finden sich für den TI ja ein paar Kernel Module.

Ist eigentlich nicht mehr aktuell nachdem das Toolkit erschienen ist. Damit ist es sehr viel einfacher. Oder vielleicht noch so weit, um die Programme der Mediamall Rootdisk zu extrahieren.

So nebenbei: Die slash-1710 erfüllt nur die ersten 20650 Byte irgendwelche Aufgaben. Danach kommt ein ganz Normales JPG-Bild in der Auflösung 720x576.

Die Box hat einen synthetischen MIPS-4kec-Core. Zu der verwendeten CPU vom Typ AMD (früher ATI) Xilleon 210 ist bislang kein Link zu einem Reference Manual o.ä. bekannt. Lediglich das Reference Manual des Xilleon 220 wurde bislang ausfindig gemacht. Der Kernel ist im Auslieferungzustand für die gcc-Architektur "4kc" kompiliert. Der Core hat 16kB Data- und Instruction-Caches und 4-Layer-Pipelines-Architektur. Er versteht aber scheinbar auch alles, was gcc für die "mips32r2"-Architektur übersetzt. Hier ist bislang nicht bekannt, ob diese offiziell mit der "4kc"-Architektur kompatibel ist. Der Core hat keine Floating-Point-Einheit, daher ist ein "-msoft-float" bei gcc meist nicht verkehrt, da sonst das aufwendigere kernel-basierte Emulationsverfahren greift, das ziemlich langsam ist. Beim Assembler-Hacking gilt wie üblich bei MIPS, dass man die Pipelines berücksichtigen muss - gilt insbesondere für Sprunganweisungen, aber aus weiteren Performance-Gründen auch für Speicherzugriffe.

Infocast Tools - Flash updaten

Beitrag: http://www.mikrocontroller.net/topic/pollin-motorola-vip1710#1731168

Die Infocast2 tools haben sich echt als nützlich erwiesen, mit denen kann man den flash via diesem ominösem kreatel-ip-stb-rev-10 file neu flashen.

Dabei geht man folgendermaßen vor:


1. download und auspacken der infocast2tools [1]

1b. wenn man Linux einsetzt müssen die Sourcen jetzt noch kompiliert werden

  cp server.c.ENGLISH server.c
  gcc -o server server.c
  Windows-Leute haben Glück, die exe-files werden mitgeliefert

2. man legt ein Verzeichnis an welches man broadcasten möchte

3. das kreatel-ip-stb-rev-10 !!!MUSS!!! 0002-0001-kreatel-ip-stb-rev-10 heissen und kann folgenden Inhalt haben:

  bc_kernel_addr 224.2.2.2:22222
  bc_kernel_name kernel-1710
  bc_splash_addr 224.2.2.2:22222
  bc_splash_name splash-1710
  test
  das test am ende ist beabsichtigt, da der sonst irgenwelche
  Verküppelungen am namen des splash-files vornimmt, war zumindest bei
  mir so

4. das kernel bzw. splash file benennt man noch mit "0003-0001"-prefix um in

  0003-0001-kernel-1710
  0003-0001-splash-1710

5. man geht zur Kommandozeile und startet den broadcast server 224.2.2.2 22222 $verzeichnis 1 100 Verbose=0 Der stream startet mit der Enter-Taste

6. man startet die Box die nicht richtig will oder weil man zum Beispiel wie ich den ROM Chip mit einer KPN box getauscht hat und nicht mehr booten konnte, weil der Flash gekryptet/signiert war.

7. Man schaut über die serielle Konsole zu wie das Flash neu beschrieben wird.

8. Fertig ;)


[1] http://infocast2tools.sourceforge.net/

PS: Ich hab mal das log der ganzen Aktion angehängt. Download: http://www.mikrocontroller.net/attachment/78965/bootlog_flash.log

toish zur dauerhaften Bearbeitung von Einstellungen

Ohne vorangegangene Modifikationen lassen sich bereits mit dem von Hause aus vorhandenen Hilfsprogramm toish erste Veränderungen am System vornehmen. Weitere Hinweise hierzu unter [1]

So kann mit toish beispielsweise ganz einfach die Startseite der Box geändert werden.

toish is SetObject config.portalurls "<?xml version=\"1.0\"?>
<PortalURLs>
  <PortalURL>http://192.168.1.55</PortalURL>
  <PortalURL>http://</PortalURL>
  <PortalURL>https://</PortalURL>
</PortalURLs>" permanent

[1] http://www.mikrocontroller.net/topic/pollin-motorola-vip1710#1732625

Persistenter Flash in Box Typ 1

Auf der Box gibt es zwei Bereiche die persistent bleiben, dort liegt zum Beispiel auch die settings2.xml. Wenn das motorola script jetzt nicht zu gross ist - man hat unter /flash ca. 100kb zur Verfügung - kann man das auch dort abspeichern.

/dev/mtdblock/0 100.0k  28.0k  72.0k  28% /flash 

Problem ist, dass /flash mit noexec gemounted wird und man das script nicht direkt ausfuehren kann, sondern den Umweg ueber sh nehmen muss.

sh /flash/myscript.sh 

Unter /flash2 sind ca. 4MB zur Verfuegung:

/dev/mtdblock/4           4.0M    100.0k      3.9M   2% /flash2

Automatisches Ausführen nach Systemstart über AVR an serieller Konsole

ands hat dazu einen ATTiny2313, 20MHz Quarz und 2x22pf an die serielle Konsole gehängt. Im AVR-GCC Programm wird auf den Konsoleprompt gewartet und dann 'sh /flash2/motorola.sh' ausgeführt. Bis zum Konsoleprompt vergeht ca. 1min.

Download: http://www.mikrocontroller.net/attachment/80402/vip1710_t2313.zip

ATTINY2313 pinout.jpg Tiny 2313-vip1710.png

Vip1710 t2313.jpg

Automatisches Ausführen beim Systemstart OHNE Hardwaremodifikationen

Webradio

Dank Hans-Werner Hilse kann mit einer modifizierten 'settings2.xml' in /flash und einem dadurch ausgeführten /bin/sh /flash2/myrc Script, jetzt das Webradio auch ohne Zusatzhardware automatisch gestartet werden:

Kurze Anleitung: Über telnet/serielle Konsole in die Box einloggen

cd /flash2
wget <url>/motorola.sh
wget <url>/vip1710.tar.bz2
wget <url>/myrc
wget <url>/settings2.xml   (die gehackte Version!)
cp settings2.xml /flash

myrc hat folgenden Inhalt:

#!/bin/sh
/bin/sh /flash2/motorola.sh >/dev/null 2>&1 </dev/null &
sleep 2
exit

(den Befehlt 'nohup' hat die Box anscheinend nicht..)

Das klappt ganz wunderbar! Und die Weboberfläche ist sogar schneller da, als mit der Tiny2313 Lösung.. (ca. nach 60s, anstatt ca. 90s).

Gameboy Emulator (gnuboy)

Dank Hans-Werner Hilse gibt es jetzt auch einen Gameboy Color Emulator auf der Boy Typ 1. Wie gehabt gefakte settings2.xml nach /flash, /flash2/myrc und die USB storage module zur Verfügung stellen:

/ # wget http://hilses.de/vip1710/usb-storage-modules.tar
Connecting to hilses.de[62.75.159.166]:80
usb-storage-modules. 100% |**********************************|   187 KB      
00:00 ETA
/ # wget http://hilses.de/vip1710/settings-xml--stack-overflow-exploit.bin
Connecting to hilses.de[62.75.159.166]:80
settings-xml--stack- 100% |**********************************|   128 KB     
00:00 ETA
/ # wget http://hilses.de/vip1710/myrc                                    
Connecting to hilses.de[62.75.159.166]:80
myrc                 100% |**********************************|   1059       
00:00 ETA
/ # md5sum usb-storage-modules.tar 
c9a1422e8b1ad4cd1ac8e8af0732f7d2  usb-storage-modules.tar
/ # md5sum settings-xml--stack-overflow-exploit.bin 
84d6f170d81c4633e6e5623aa986bd3b  settings-xml--stack-overflow-exploit.bin
/ # md5sum myrc 
62dbb9bf6feabe701a8c3785dcbe74bf  myrc
/ # tar -xv -f usb-storage-modules.tar -C /flash2 
modules
modules/scsi_mod.o
modules/sd_mod.o
modules/usb-storage.o
/ # cp myrc /flash2/
/ # mkdir /flash2/flash-overlay
/ # cp /flash/settings2.xml /flash2/flash-overlay/settings2.xml
/ # cp settings-xml--stack-overflow-exploit.bin flash/settings2.xml 
/ # sync
/ #

Auf dem USB Stick müssen dann die Dateien:

plugrc
hwsdist-root.tar.bz2 (beide in hws-gnuboy-dist.zip) enthalten
Und ein Verzeichnis '/roms-gnuboy', in dem sich die GBC Roms befinden müssen.

Dieser so präparierte USB Stick und ein USB Joystick müssen (per Hub/Verteiler, da die Box nur 1 USB Anschluß hat) beim booten eingesteckt sein. Dann kommt zuerst ein dialog Menue mit Auswahl 'gnuboy' und danach eine Dateiauswahl mit den roms. Leider ist die Romauswahl etwas 'tricky'. Die Datei muß angewählt sein, dann bringt Joybutton1 den Namen in die Pfadanzeige. Erst dann führt Joybutton0 den Start von gnuboy mit dem gewähltem Rom aus. (Etwas üben.. dann klappt das; Cancel führt wieder zurück..) Mit dem Menue kommt man - wenn man weiß, worauf man achten muß - nach einiger Zeit ganz gut zurecht..

Die Emulationsgeschwindigkeit ist - gerade noch - brauchbar - für viele Spiele.. für einige aber auch nicht mehr (z.B 4x4 Offroad etc.) das ist soo laanngsaam.. das geht gar nicht mehr..

Trotzdem machts mit den anderen Spaß! Asteroids, Breakout, Städte Verteidigen, Mario, V-Rally, Pacman.. alle prima..


Zitat von Hans-Werner Hilse: Auf http://hilses.de/vip1710 gibt es jetzt mal beispielhaft eine von USB-Stick oder -HD lauffähige GnuBoy-Distro. Funktioniert in Zusammenarbeit mit dem myrc-Skript, das ich da auch bereitstelle. Sonst ggf. eigene Skripten anpassen. Die Methode ist folgende: Via myrc wird während des frühen Bootvorgangs (/etc/rc.sysinit) die "plugrc" vom Stick ausgeführt. Die modifiziert leicht das Dateisystem, tauscht u.a. die /usr/bin/start_platform.sh aus, die sonst normalerweise für den Start des Set-Top-Box-Stacks sorgt. Mein Ersatz startet stattdessen halserver, esd und ein DFBTerm, das ein (mit Joypad bedienbares) Menü präsentiert, mit dem man derzeit aber noch nicht mehr machen kann, als GnuBoy zu starten und dafür ein ROM aussuchen kann. Könnte mir aber auch vorstellen, dass das für nicht-Gamer auch interessant als Vorlage ist. Datei ist "hws-gnuboy-dist.zip", Quellcode (modifiziert nur DFBTerm und LiTE) gibt's da auch.

Erhalt der toish-Möglichkeiten

Wer jedoch die Funktion toish mit den entsprechend in der settings2.xml gespeicherten Parametern benötigt (um beispielsweise eine Webseite auf einem beliebigen Webserver nach dem Start automatisch aufzurufen), der sollte wie folgt vorgehen:

wget http://hilses.de/vip1710/usb-storage-modules.tar
wget http://hilses.de/vip1710/settings-xml--stack-overflow-exploit.bin
wget http://hilses.de/vip1710/myrc                                    
tar -xv -f usb-storage-modules.tar -C /flash2 
cp myrc /flash2/
mkdir /flash2/flash-overlay
cp /flash/settings2.xml /flash2/flash-overlay/settings2.xml
cp settings-xml--stack-overflow-exploit.bin flash/settings2.xml 
sync

Und dann einige Sekunden warten, bevor die Box das erste Mal neu gestartet wird. Das heruntergeladene myrc-Skript sorgt dann dafür, dass das Verzeichnis /flash2/flash-overlay dann später sozusagen auf /flash "eingeblendet" wird (ein bind-mount), so dass toish und anderes, was die settings2.xml benutzt, später nur noch die gesicherte Version in /flash2/flash-overlay sieht (und auch verändern kann). Die gehackte settings2.xml bleibt also nur in der Anfangsphase des Bootvorgangs in /flash sichtbar, danach wird die andere sozusagen "darübergeblendet".

Einige Details von Hans-Werner Hilse

Ganz frisch ist noch ein Feature, das es - jedenfalls bei den Boxen, die Flash-Speicher haben - erlaubt, in den Bootprozess einzugreifen und ein eigenes Skript (und damit ggf. auch noch mehr Skripten) zu starten. Damit kann auch der reguläre Boot-Prozess ganz umgangen werden. Das ist, denke ich mal, interessant auch für genug andere, daher habe ich das mal hier zusammengeschrieben:

http://hilses.de/vip1710/

Kurzfassung: Mit /flash/settings2.xml kann man früh im Bootprozess einen Stack Buffer Overflow provozieren und den auch ausnutzen - auf der Seite oben gibt's eine settings2.xml, die das implementiert (Downloads ganz unten auf der Seite) und - wenn man sie an /flash/settings2.xml schreibt - im Bootverlauf mit der Shell (also /bin/sh) dann das Skript /flash2/myrc aufruft. Das kann man dann anlegen und da eigenen Kram drin machen. Aber Achtung: Wenn das blockt, dann blockt der ganze Bootprozess!


settings2.xml-Hack entfernen

Sollte die Box durch ein myrc Script blockiert werden, so dass sie garnicht mehr vollständig bootet, gibt es einen relativ einfachen Trick. Ich wollte die Box schon fast als Briefbeschwerer abschreiben, da hab ich dann doch noch ein bisschen rumprobiert: Die Box muss per Pegel-Wandler an die Serielle Schnittstelle vom PC angeschlossen werden (115200 Baud). Danach die Box einschalten und ein Stück den Bootvorgang abwarten. Nach einer Weile bleibt die Box kurz an dieser Stelle hängen:

 --- Linuxrc mounting /rootdisk using up to maximum 512 MB RAM if available
 --- Linuxrc populating /rootdisk

Zu dem Zeitpunkt ist der Flashspeicher noch nicht eingebunden bzw zugänglich. Jetzt drückt man einfach so lange STRG+C in der Konsole, bis das Script abgebrochen wird. Dann landet man in der Konsole, selten kam mir hier der Watchdog dazwischen und hat die Box resettet, aber man hat trotzdem ein paar Sekunden. Jetzt müssen wir einfach das Kernel Modul für den Flash laden (das haben wir ja abgebrochen), den /flash Ordner mounten und die settings2.xml löschen:

 insmod kboxmtd
 mount -t jffs2 -o nodev,noexec,noatime /dev/mtdblock/0 /flash
 chown -R 0:0 /flash
 chmod -R g+w /flash
 rm /flash/settings2.xml
 sync

Jetzt einfach neustarten, die myrc korrigieren und den Hack wieder aufspielen --> Fertig!

Skript motorola.sh für Box Typ 1

#!/bin/sh
#IP an den httpserver für die Module anpassen.
#Der mediatomb upnp server ist auskomentiert in der letzen Zeile. 
#Zum starten, den tree nach /mediatomb auf dem usb-device kopieren.
#vfat oder ext format sollte egal sein.
#Die USB und sshd Dateien werden im / vom http-server erwartet.
#Ziel IP des Webservers ANPASSEN
IP="192.168.1.4"
## Rootdir erstellen
mkdir /root
## USB Module laden und mounten
mkdir /lib/modules
cd /lib/modules
wget http://$IP/scsi_mod.o
chmod a+x scsi_mod.o
wget http://$IP/sd_mod.o
chmod a+x sd_mod.o
wget http://$IP/usb-storage.o
chmod a+x usb-storage.o
cd /
insmod scsi_mod
insmod sd_mod
insmod usb-storage
mknod /dev/sda  b 8 0
mknod /dev/sda1 b 8 1
mknod /dev/sda2 b 8 2
mkdir -m 777 /mnt
mkdir -m 777 /mnt/usbdevice
mount /dev/sda1 /mnt/usbdevice


## sshd laden und starten
cd /tmp
wget http://$IP/sshd
wget http://$IP/scp
wget http://$IP/ssh_host_rsa_key
wget http://$IP/ssh_host_dsa_key
wget http://$IP/shadow
wget http://$IP/passwd
wget http://$IP/sshd_config
cp shadow /etc
cp passwd /etc
chmod 600 ssh_host_rsa_key
chmod 600 ssh_host_dsa_key
chmod 755 scp
cp scp /bin
chmod 755 sshd
/tmp/sshd -f sshd_config


#/mnt/usbdevice/mediatomb/mediatomb.sh &

auf eigenem Webserver gehostete webGUI

Hier gibt es bereits mehrere Ansätze.

YaotGui

Der zugehörige Artikel ist leider in Schwedisch. Hier noch der Downloadlink zur GUI: http://iptv.colbro.se/download.asp?item=8

Daniels GUI

Auch hier gibt es die Infos nur im Schwedischen Forum, ebenso den Download: http://iptv.colbro.se/download.asp?item=2 sowie die Ergänzung http://medlem.spray.se/iptv2htpc/Extender/Extender.zip

Erkenntnisse von Nobody

User nobody des open7x0-Forums hat freundlicherweise mal seine Erkenntnisse hier zusammengefasst und bietet dazu auch gleich mehrere Downloads an. Hinweis: Um die Dateien herunterzuladen, muss man zuvor einen Benutzer bei dem Forum angelegt haben.

Anwendungsideen

  • VLC Server
  • VDR-Client
  • Ethernet Soundkarte
  • Internet Radio
  • Nas Server
  • Print-Server
  • VPN-Server
  • Asterisk, VOIP-Server
  • Signalverarbeitung im Netzwerk
  • IP Webcam
  • uPNP Server
  • Tor und IPCOP Gateway/Proxy (zw. AP und DSL-Router gesteckt)
  • VPN-Tunnel Gateway (zw. AP und DSL-Router gesteckt) zwei oder mehr 1710 an unterschiedlichen Standorten für Privates Intranet zw. Freunden
  • UMTS-Router für DSL über SIM-Karte im Auto
  • IRC-Bouncer / irssi
  • Backend für Software Defined Radio (SDR)

Anwendungen

  • MediaTomb UPnP-AV Server [4], bereits lauffähig, einfach auf dem USB Device entpacken im Ordner mediatomb .
    • Aufruf per /mnt/usbdevice/mediatomb/mediatomb.sh &
    • Weboberfläche ist vorhanden.
  • MusicPlayerDaemon [5]
  • VLC-Client: Man kann sowohl einen Film, als auch nur den Sound des Films auf die Box streamen. Man benötigt dafür VLC auf dem PC und toish [6] auf der Box. <SERVER-IP> ist die IP eures PCs.
    • Film streamen:
      • PC: vlc <FILM> --sout-transcode-high-priority --sout-transcode-threads 4 --rtsp-caching=5000 --ttl=12 --intf http --http-host :8811 --sout="#gather:transcode{vcodec=mp2v,vb=1024,acodec=mp2a,ab=192,channels=2}:std{mux=ts,access=http,dst=<SERVER-IP>:8812}"
      • Box: toish uri LoadUri http://<SERVER-IP>:8812 video/mpeg
      • Achtung: Der PC benötigt viel Rechenleistung!
      • Infos: [7]
    • Sound streamen:
      • PC: vlc <FILM> --rtsp-caching=5000 --ttl=1 --sout '#duplicate{dst=display{noaudio},dst="transcode{vcodec=none,acodec=mp2a,ab=192,channels=2}:std{access=http,mux=ts,dst=<SERVER-IP>:8812}"}'
      • Box: toish uri LoadUri http://<SERVER-IP>:8812 audio/mpeg
      • Achtung: Da der Sound etwas verzögert ankommt, muss dieser dem Bild um 100-200ms voraus sein (Hotkey J im VLC)
      • Infos: [8]
  • Internetradio: Auf hilses-Mod aufbauende USB-Stick-"Distribution" mit der die Box zu einem Internetradio mit Sprachausgabe umfunktioniert wird. Die Steuerung erfolgt über IR-Fernbedienung. Es können verschiedene Streams abgespielt werden, Lautstärke verändert und die Zeit mit Datum angesagt. Außerdem gibt es eine Schlummerfunktion mit der sich die Box timen lässt, sodass sie nach einer bestimmten Zeit den Stream beendet und dabei die lautstärke in den letzten 3 Minuten langsam herunter regelt.

Nützliche Ressourcen

tftp Programme TFTPd32

Pegelwandler max232

oder

TTL-Schnittstellenkabel, z. B. aus Handydatenkabel gebastelt

Com-Einstellung: 115200,n,8,1

Anschluss des Pollin RS232-TTL-Wandlers an den seriellen Port der VIP1710:

Anschluss vip pollin.png

Hochauflösende Bilder

Da im Forum der Mangel an guten Bildern beklagt wurde, hier ein erster Schritt zur Abhilfe. Sie wurden mit 600DPI "gescanned" und nach JPG gewandelt. Der Qualitätsverlust ist noch OK, aber die Bilder schrumpfen von 30MB auf 2MB. Nur der Bereich hinter dem Scartstecker ist etwas unscharf weil die Platine doch zu weit vom Glas entfernt ist.

Vip1710 bottom 600dpi.jpg Vip1710 top 600dpi.jpg

weitergehende Infos im Netz