MOTOROLA VIP1710
Verwandte Artikel
- Konfiguration: http://www.mikrocontroller.net/topic/174428
- weiteres Forum für VIP1710 auf open7x0.org http://www.open7x0.org/arena/forumdisplay.php?fid=81
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
Bild einer Kreatel Box
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.
Ö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
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
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:
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]
- Film streamen:
- 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.
- Infos und Download: http://thinksilicon.de/59/Die-VIP1710-als-Internetradio.html
- IP-Webcam: diverse Kernelmodule aus dem quickcam und spca5xx-Projekt für USB-Webcams und das Programm spcaserv mit dem die Kamerabilder auf den PC gestreamt werden können gibt es unter http://thinksilicon.de/62/15-Euro-Netzwerkkamera-mit-der-VIP1710.html
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:
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.
weitergehende Infos im Netz
- http://www.motorola.com/mot/doc/6/6344_MotDoc.pdf: original Motorola Specification Sheet der VIP1710/1720 [Offline!!]
- https://opensource.motorola.com/sf/sfmain/do/viewProject/projects.vip15x0_vip17x0: Hier gibt´s endlich die GPL-Sourcen der VIP15x0 und VIP17x0
- http://berglind.org/motorola/: Drei sehr gut gelungene Grafikdemos mit der Motorola VIP1500/1700
- http://digilander.libero.it/Zabanitu/: Reference Manual des Xilleon 220 zum Download. In der VIP1710 steckt allerdings der ATI Xilleon 210!
- http://iptv.colbro.se/default.asp: Schwedische Seite zu den Motorola VIP
- http://hilses.de/vip1710/: Sehr interessante Hacks für die VIP1710
- http://www.open7x0.org/arena/showthread.php?tid=2553&pid=21731: Ansatz für eine auf einem externen Webserver zu hostende Webgui