If I’m honest then I have to say that my family use our quad tuner Tivo a lot more than we use our seven tuner MythTV backend. Yeah, we record a lot of TV in our house.
When Tivo announced their iPad streaming solution back at CES 2012, I was quietly thrilled. I’m tired of being shackled to our primary TV and this promised to solve the issue once and for all. The launch was planned for September 6th 2012 and I was counting down the hours, ready to place an order and part with my $130 dollars. Time passed, the big day arrived. I placed my order and over the next few days the people in small brown trucks did their part. Summary: Problem solved.
The device arrived a couple of weeks ago and its working very well, nicely done Tivo! I’ve been using it every few days to stream content. Great video quality, no sync issues so generally I have no complaints. Now I can wander around house, watching all of those HBO shows I care about, total freedom. Yay!
Now that I know it’s reliable, time to pop the cover!
Flip the unit over, remove the blue rubber feet. You will see four T-10 security screws, remove them. The base pops out very easily. Note: You’ll need to replace the sticky tape that hold the feet on, once you remove the feet the sticky tape isn’t re-usable.
Oh, yes, the main chip has a giant fan on top to keep it cool.
Top of the PCB:
[lightbox title=”Tivo Stream Teardown” href=”/blog/wp-content/uploads/2012/09/IMG_2027.jpg”][/lightbox]
Bottom of the PCB:
[lightbox title=”Tivo Stream Teardown” href=”/blog/wp-content/uploads/2012/09/IMG_2026.jpg”][/lightbox]
Not a lot to see on the bottom but I did start poking around the connectors on the top.
Two connectors worth noting, the black 14pin connector with an interesting pin arrangement on the top side, to the left. Also the white four pin connector top side bottom right.
Based on some preliminary work with an oscilloscope and Saleae Logic analyzer, I’m pretty sure I’ve identified pins 2, 4, 6, 8 on the black header as an SPI interface, probably to the onboard NOR chips, more on those later.
[lightbox title=”Tivo Stream Teardown” href=”/blog/wp-content/uploads/2012/09/SDI-pins.png”][/lightbox]
Also, the four pin white header on the top layer, see it bottom right? Pin nearest the right hand edge of the connector. What could it be?
[lightbox title=”Tivo Stream Teardown” href=”/blog/wp-content/uploads/2012/09/IMG_2028.jpg”][/lightbox]
And a deeper look with the analyzer, brought this:
[lightbox title=”Tivo Stream Teardown” href=”/blog/wp-content/uploads/2012/09/UART-TX-Pin.png”][/lightbox]
That’s a 3.3v UART, it’s the TX line. Update: Pin to the left of it The pin two positions to the left (#3) is the UART RX. Pin #4 is 5V. Baud is 115200 8N1.
Nice!
Look what appears on the UART when the unit is powered on….
core clk:499500 kHz
ddr clk:531900 kHz
hpu clk:571500 kHz
ddr init[
ddr init]
chip init]
s_boot
C s(4010)d(80900000)(63236)
S s(13714)d(84000000)(170788)
Z s(3d238)d(84029b24)(869924)
sfw@800000
core_freq 499500000 hpu_freq 571500000
U-Boot 2009.03 (Jul 06 2012 - 14:49:04 - hg:)
Platform: Zenverge - ZN200
CPU: MIPS 24K rev: 0x7c
DRAM: 512 MB
Relocation: disabled
core_freq 499500000 hpu_freq 571500000
Now running in RAM - U-Boot at: 96000000
Flash Init:(Re)start USB...
USB: Using Buffer DMA mode
Host Mode
scanning bus for devices... 2 USB Device(s) found
scanning bus for storage devices... Found USB Storage Device at index: 1
1 Storage Device(s) found
Switch on led 37
MBR bootParams: root=/dev/sda4
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 1 '8''8''8' 0
Booting TiVo kernel
Loading from USB device 0 partition 3: Name: Kernel 1 Type: Image
.................................................................................................................................................................................................................................
Kernel signed by '... the Porridge bird ...'
Hashing kernel... done
Checking signature... done.
Valid for release
Image successfully validated!
Fit image detected...
FIT description: Kernel + ramdisk FIT image
Created: 2012-08-28 20:26:11 UTC
Image 0 (kernel@1)
Description: Zenverge MIPS Kernel
Type: Kernel Image
Compression: gzip compressed
Data Start: 0x914000d4
Data Size: 2031193 Bytes = 1.9 MB
Architecture: MIPS
OS: Linux
Load Address: 0x98000000
Entry Point: 0x98004150
Hash algo: md5
Hash value: 14970f6e36138d0fcf1546205f5e58b2
Hash algo: sha1
Hash value: aee25f6b4c7434cf22238e6638f2dfc5af133544
Image 1 (ramdisk@1)
Description: Zenverge romfs
Type: RAMDisk Image
Compression: gzip compressed
Data Start: 0x915f005c
Data Size: 271348 Bytes = 265 kB
Architecture: MIPS
Hash algo: sha1
Hash value: a489dee238347ff68834a3d63aa707d4203c3664
Default Configuration: 'config@1'
Configuration 0 (config@1)
Description: Zenverge configuration
Kernel: kernel@1
Init Ramdisk: ramdisk@1
## Booting kernel from FIT Image at 91400000 ...
Using 'config@1' configuration
Trying 'kernel@1' kernel subimage
Description: Zenverge MIPS Kernel
Type: Kernel Image
Compression: gzip compressed
Data Start: 0x914000d4
Data Size: 2031193 Bytes = 1.9 MB
Architecture: MIPS
OS: Linux
Load Address: 0x98000000
Entry Point: 0x98004150
Hash algo: md5
Hash value: 14970f6e36138d0fcf1546205f5e58b2
Hash algo: sha1
Hash value: aee25f6b4c7434cf22238e6638f2dfc5af133544
Verifying Hash Integrity ... md5+ sha1+ OK
## Loading init Ramdisk from FIT Image at 91400000 ...
Using 'config@1' configuration
Trying 'ramdisk@1' ramdisk subimage
Description: Zenverge romfs
Type: RAMDisk Image
Compression: gzip compressed
Data Start: 0x915f005c
Data Size: 271348 Bytes = 265 kB
Architecture: MIPS
Hash algo: sha1
Hash value: a489dee238347ff68834a3d63aa707d4203c3664
Verifying Hash Integrity ... sha1+ OK
Uncompressing Kernel Image ... OK
Starting kernel ...
Main SOC: Zenverge ZN200, confirmed by the bootloader output and much earlier by many other tech sites.
Atheros AR8151-B PCIe to Ethernet Core: Details.
2 x Samsung K4B2G1646C 2Gb DD3 RAM.
2 x Spansion FL128P1F 128Mbit NOR flash.
ALCOL AU6435. I’m not sure what this is, possibly a USB controller. Comments?
Samsung KLM2G1HE3F 2Gb NAND Flash.
…. I think it’s time to ask Tivo to release their u-boot and Linux kernel source…. yah think?
Enjoy!
It’s probably an ALCOR (not ALCOF) AU6435 chip. Probably a slightly newer version of the AU6433 card reader controller described here:
http://www.alcormicro.com/en_content/c_product/matrix-card_reader.php
Thanks for posting this, my TIVO stream stopped working so following your instructions, I hook up the serial port and seems that there’s a problem in the storage subsystem…
U-Boot 2009.03 (Aug 28 2012 – 00:20:36 – hg:)
Platform: Zenverge – ZN200
CPU: MIPS 24K rev: 0x7c
DRAM: 512 MB
Relocation: disabled
core_freq 499500000, hpu_freq 571500000
Now running in RAM – U-Boot at: 96000000
Flash Init:(Re)start USB…
USB: Using Buffer DMA mode
Host Mode
scanning bus for devices… 2 USB Device(s) found
scanning bus for storage devices… DWC_ERROR: submit_control_msg: failed, status=2
Any idea what would that mean?
The submit_control_msg error suggests that a USB device (probably mounted correctly on the PCB) isn’t responding properly to USB commands.
“scanning bus for devices… 2 USB Device(s) found
scanning bus for storage devices… Found USB Storage Device at index: 1
1 Storage Device(s) found
”
If you’re not seeing this then the onboard USB storage device is broken.