PDA

View Full Version : The Series4 (TiVo Premiere) Development Thread



Omikron
03-03-2010, 01:53 AM
===============
General Information
===============

So, the Series4 has been been announced, and it looks like it's got some new hardware under the hood. According to Dave Zatz, the platform is powered by the BCM7413 SoC. Like the chips used in the Series3 platform, this SoC probably has an integrated on-die PROM. In the Series3 platform, it wasn't used and TiVo continued to use their legacy external PROM system, thus allowing us to physically toy with with it and break the chain of trust. If TiVo finally moved the PROM on-die, I fear the hacking community very well may be dead for future platforms.

If it's still stored on an external flash chip, we may still have a fighting chance.

I will definitely be picking up a unit as soon as it hits the shelves, and if it has an external PROM, I'll post what info I can get. For now, I've started this thread to begin discussions.



Anyone who wishes to donate money to go towards purchasing development hardware can do so here: DONATE (https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=STRJEYSZTH6FS)


If you wish to donate via Bitcoin, BTC donations may be sent to: 1NMneWDPS54qb6f5R2YGCVWUvfQg2nsG8Z

If successful, anyone who donated money will be able to apply their donation towards a DIY PROM kit should they become possible.


===========
News Updates
===========

04/02/10: All major parts have been either ordered or received.

03/25/10: tivo4mevo pointed to a great preliminary review that allows us all to take a peek at what's under the hood. Check it out here: http://mysite.verizon.net/~fiosdvr/prem_review_01.pdf

03/30/10: Enough donations came in to cover the cost of some sockets and test chips, so they've been ordered. Still a bit away from the socket adapter needed for programming, but there are other things to look at while we're all waiting. :-)

02/13/13: Focused development has resumed. Let's see if we can keep the momentum going. I should probably re-write this first post with the latest info at some point. :-)

Omikron
03-03-2010, 01:54 AM
The TiVo Premiere appears to use the same TTL serial interface as the Gen06 platform (TiVo HD). The unit uses 5V TTL logic to communicate via serial, and any adapters that work with the TiVo HD will also work with the Premiere.


http://farm3.static.flickr.com/2744/4487701203_4cca2c4533_o.jpg


Without any modification to the bootpage, here is what factory TiVo Premiere displays upon power-on:


Shmoo Version=3.5
DDR Freq=0x0000018C
%00000001%
RC1=00000003
WC1=FFFFFFE2
RC2=00000018
WC2=0000002F
RC3=0000000D
WC3=FFFFFFE2
RC4=0000000D
WC4=0000002F
NWC=00000008
RC5=00000003
WC5=00000008
RC6=00000018
WC6=00000008
NRC=0000000D
RW=00000016
WW=0000004E
G=00000000 R=0000000D W=00000008
BL=00000000
RC1=00000000
RC2=00000015

BL=00000001
RC1=00000003
RC2=00000015

BL=00000002
RC1=00000002
RC2=00000019

BL=00000003
RC1=00000003
RC2=00000019

BL=00000004
RC1=00000001
RC2=00000018

BL=00000005
RC1=00000004
RC2=00000019

BL=00000006
RC1=00000002
RC2=00000017

BL=00000007
RC1=00000002
RC2=00000019

TiVo Gen07 release 1.00 (2009-10-20 14:09:37)
Copyright 2009 TiVo Inc. All Rights Reserved.
TSN: REDACTED BREV: 0x1060 MAC: RE:DA:CT:ED
Thumbprint: 356515097AED79CCEC5097DA723F8FE654826A83
Disk: WDC WD3200AVVS-63L2B0 F/W: 01.03A01 S/N: WD-REDACTED
Booting from partition 3... 3800064 bytes
Kernel signed by '... the Porridge bird ...'
Hashing kernel (SHA256)... done
Checking signature... done.
Signed, valid for release
Kernel entry point is 0x802b8000

cfeBootParms ===> root=/dev/sda4
Kernel boot options: root=/dev/sda4 console=ttyS0,115200 boardID=0x106001 HpkImp
Gen07

BOOTEDFROMFLASH, Base=1c000000
Initial CP0 22 value : 0xe30f3406
node [00000000, 10000000: RAM]
node [20000000, 10000000: RAM]
mips_counter_frequency = 202000000 from Calibration, = 202500000 from header(CPU_MHz/2)


Access to the PROM Boot Menu is no longer restricted by a factory password unique to the unit. Sending ^C to down the line during the first few seconds will display the PROM boot menu.

Currently Known Commands:

boot [-3,-6]
disk
reset

Kernel message logging via serial can be enabled by connecting the disk to PC and using the bootpage.x86 binary to add "dsscon=true console=0,115200" flags to the bootpage parameters.

Since my USB-SATA adapter was located at /dev/sdb, and the TiVo's bootpage was currently set to "root=/dev/sda4" I issued the following command:

bootpage.x86 -P "root=/dev/sda4 dsscon=true console=0,115200" -C /dev/sdb

Omikron
03-03-2010, 01:55 AM
So far, here's what we know about the TiVo Premiere's PROM:


Intel Strataflash JS28F640P30B85
Datasheet: http://www.xilinx.com/products/boards/ml505/datasheets/30666604.pdf
Digikey Part: 873892-ND


TiVo has finally broken free of the previous design. For the first time since the debut of the Series2 platform, TiVo has selected a new type of flash chip to store the the boot PROM. The flash package is TSOP56, which is kind of a pain in the ass to work with for a variety of reasons. Primarily, they're hard to solder and the socket adapters needed to work with them can be quite expensive.

Preliminary review of the datasheet seems to indicate that all of the security features of this flash device seem to relate to write protection, and not read protection, so in theory we should be able to program fresh chips with modified code.

We won't know a whole lot more until I can get my hands on a TiVo Premiere and a TSOP56 socket adapter for my programmer. Since we'll need a new set of hardware to work with the new platform, I've gone ahead and put up a donation link in the first post of this thread along with a list of what we think we need so far.

Omikron
03-03-2010, 01:57 AM
Reserved for future info on possible changes in kernel.

Roger Dylan
03-03-2010, 05:03 AM
Once things settle down a little bit, and if it looks like its even faintly possible, I'll be sending you a check for the purchase price of the cheaper of the two models. My contribution to the cause.

EDITED TO ADD: Street price BTW; I'm no fracking Ford Foundation

Omikron
03-03-2010, 02:13 PM
Once things settle down a little bit, and if it looks like its even faintly possible, I'll be sending you a check for the purchase price of the cheaper of the two models. My contribution to the cause.

EDITED TO ADD: Street price BTW; I'm no fracking Ford Foundation

Street price as opposed to... :-)

Omikron
03-14-2010, 05:34 PM
Well, I've got the TiVo Premiere pre-ordered, so let's see how this dance goes...

Omikron
03-20-2010, 11:33 PM
Is there any chance someone got their hands on an early unit? Many Best Buys received their shipments early last week, and a few stores accidentally sold a few before the price in the system was modified to $2,000 to prevent sales staff from overriding the hard street date of 03/28.

If anyone has an early unit, photos of the motherboard would be greatly appreciated.

Omikron
03-26-2010, 12:59 AM
New link with delicious info: http://mysite.verizon.net/~fiosdvr/prem_review_01.pdf

Link courtesy of tivo4mevo. Info couresty of bkdtv.

Omikron
03-26-2010, 01:31 AM
Updated some info regarding the PROM and the possible serial interface.

PROM has changed drastically and has some new "security" features which I'm still investigating. Serial appears to be the same as THD, at least from visual observation.

Omikron
03-26-2010, 02:09 AM
After researching a few different test socket vendors, it seems that Meritec seems to make something that would be of great use to those of us who will be busy trying to work on the PROM:

http://meritec.thomasnet.com/ImgMedium/SOP%20Socket%20image.jpg

http://meritec.thomasnet.com/item/smt-sop-sockets/smt-sop-sockets-2/980020-56-01?&seo=110

AlphaWolf
03-26-2010, 05:21 PM
TiVo has finally broken free of the previous design. For the first time since the debut of the Series2 platform, TiVo has selected a new type of flash chip to store the the boot PROM. The flash package is TSOP56, which is kind of a pain in the ass to work with for a variety of reasons. Primarily, they're hard to solder and the socket adapters needed to work with them can be quite expensive.

I figured they'd be easier to remove since TSOPs only have two sides instead of four. Just melt one side, lift it about a millimeter, then repeat on the other side and its off. At least, I would think it would be easier to remove and socket with less risk of lifting any pads.

Omikron
03-26-2010, 08:35 PM
I figured they'd be easier to remove since TSOPs only have two sides instead of four. Just melt one side, lift it about a millimeter, then repeat on the other side and its off. At least, I would think it would be easier to remove and socket with less risk of lifting any pads.

I guess it depends on how much you're concerned about damaging the original chip. The leads are certainly far more fragile and it's very easy to get them bent out of shape if you're not careful. Soldering a TSOP directly to the board shouldn't too bad, although soldering the socket is some what of a pain in the ass, more so than the PLCC32 sockets.

Realistically, I'm not sure most users would actually need to socket it. Historically we've never had to replace the PROM once it was installed and now we have an even bigger reason to skip the socket altogether. For initial PROM hacking though, it's clearly needed. :-)

Jamie
03-26-2010, 09:58 PM
Another question worth exploring is whether the PROM can be reprogrammed in-place. This assumes, of course, that a root shell can be obtained by a purely software means first.

tivo4mevo
03-26-2010, 10:05 PM
Based upon the OTP bits described in the Flash data sheet, the boot code is likely locked.

Omikron
03-26-2010, 10:37 PM
Based upon the OTP bits described in the Flash data sheet, the boot code is likely locked.

I was thinking the same thing, but we can use this to our (small) advantage. Whereas before there was some question as to whether or not TiVo was capable of remote-flashing the PROM, setting the OTP bits in the flash in new PROM chips could guarantee that the modified code isn't over written by any future updates.

AlphaWolf
03-27-2010, 07:51 AM
I notice there are several unused footprints on the motherboard, one resembling a jtag header. I don't suppose anybody would have the technical skill necessary to work out a solution similar to game console mod chips? E.g. no tsop removal necessary, just solder in a daughterboard that circumvents the tsop substituting its own boot code.

Omikron
03-27-2010, 01:25 PM
I notice there are several unused footprints on the motherboard, one resembling a jtag header. I don't suppose anybody would have the technical skill necessary to work out a solution similar to game console mod chips? E.g. no tsop removal necessary, just solder in a daughterboard that circumvents the tsop substituting its own boot code.

Something like this may indeed be possible, but the initial design would very likely take a great deal of work and significant skill. In matters of console modchips, the sheer amount of work needed to pull something like that off is offset by the gobs of money modchip makers make.

In a small community driven environment like this where only a very few handful of people are interested, it's much harder to find someone who's willing to put forth the resources to develop and maintain it. I know a few people that would probably be able to pull something like that off, but not without throwing piles of cash at them.

mike_s
03-27-2010, 02:04 PM
I notice there are several unused footprints on the motherboard, one resembling a jtag header. I don't suppose anybody would have the technical skill necessary to work out a solution similar to game console mod chips? E.g. no tsop removal necessary, just solder in a daughterboard that circumvents the tsop substituting its own boot code.Completely different things.

I can speak for how it works on a Wii - what keeps a homemade disc from containing non-approved content is some info stored in a way it can't be written with a CD-R writer. The chips work by injecting code into the Wii's CD controller, and that code always tells the Wii itself that the disc is approved. It takes advantage of a diagnostic capability of the CD chip, and the code gets stored in the RAM of that chip. They are NOT overriding any flash/(EP)ROMs, etc.

You can't override a ROM using JTAG (at least not in real-time, which is what's needed here). It just doesn't work that way. You might, however, be able to re-program the flash ROM using JTAG

Omikron
03-27-2010, 03:28 PM
We should keep in mind that the PROM on this platform does have OTP bits that can be set, blocking further write access to the chip. If such bits have been set, then creating any type of add-on adapter is going to be much, much more difficult.

Omikron
03-28-2010, 09:00 PM
Well, I decided to cancel my pre-order and just pick one up from Best Buy today. So, I now have a Premiere in-hand but alas no other hardware to interface with the PROM yet.

I'll try to tinker around with other things in the mean time. :-)

jt1134
03-28-2010, 09:10 PM
Well, I decided to cancel my pre-order and just pick one up from Best Buy today. So, I now have a Premiere in-hand but alas no other hardware to interface with the PROM yet.

I'll try to tinker around with other things in the mean time. :-)



for x in 3 4 6 7 9
do
dd if=/dev/hda$x | gzip -9n > hda$x.gz
done

:)

Omikron
03-28-2010, 09:52 PM
In other news, in my INFINITE WISDOM I sold my own TTL adapter a while ago to someone who really wanted one, thinking that I would simply replace it later. It seems that I forgot to replace it... :-/

::grumble::

Time to buy a new adapter.

AlphaWolf
03-29-2010, 12:57 AM
Completely different things.

I can speak for how it works on a Wii - what keeps a homemade disc from containing non-approved content is some info stored in a way it can't be written with a CD-R writer. The chips work by injecting code into the Wii's CD controller, and that code always tells the Wii itself that the disc is approved. It takes advantage of a diagnostic capability of the CD chip, and the code gets stored in the RAM of that chip. They are NOT overriding any flash/(EP)ROMs, etc.

You can't override a ROM using JTAG (at least not in real-time, which is what's needed here). It just doesn't work that way. You might, however, be able to re-program the flash ROM using JTAG

I was thinking more along the lines of the original xbox. That was simply a matter of breaking the chain of trust, just like a tivo. Mod chips for that would simply plug in to the jtag footprint and a single via hole which made the xbox basically ignore the onboard tsop and boot from a tsop contained in the daughterboard instead.

Or if you wanted to you could just replace the tsop with a reprogrammed one entirely, and some people did it this way. This is the same thing we do with tivos right now.

I imagine you can't do a similar thing for the wii due to the boot code being contained read only in some sort of asic that also handles much if not all of the central processing. I wouldn't know though as I've never owned one. Tivo's certainly don't operate in this manner though.

Omikron
03-29-2010, 11:41 PM
Alright, I decided to completely strip down my Series4 to the bare board and take some photos for your voyeuristic pleasure.

Top:
http://farm3.static.flickr.com/2791/4475518170_7cef6f9df9_b.jpg
Here's a pretty good view of the whole board, very much like the images bkdtv posted.


Bottom:
http://farm3.static.flickr.com/2766/4475443570_d64db3969d_b.jpg
An overall view of the bottom of the board. There is something neat going on here with the two grey thermal interface pads underneath the tuners. It would seem that the tuners put out enough heat that they felt the need to sink the heat directly into the chassis. There are two metal indents in the chassis underneath this area that interfaces directly with these pads.


Top Left Closeup:
http://farm3.static.flickr.com/2712/4474742337_8821aa2502_b.jpg
In this view we can see the battery, the TSOP56 PROM, and an empty location next to it that looks like a TSOP48 chip of some sort. I'm not really sure why there's a second spot here. It's possible that TiVo wasn't sure if it was going to use a TSOP56 flash or a TSOP48 flash, but it doesn't make sense that they would leave it there. The PROM flash chip, like the platforms before it, has a silk-screened area for where the socket would align around it. Also of note is the SW1 switch that seems to be missing from the board in the top left area. It's possible that this switch would be used during development to perform some sort of reset function, so it will be interesting to see what it does.

Top Right Closeup:
http://farm5.static.flickr.com/4064/4474663203_f589c6107d_b.jpg
Nothing too interesting here it seems. More scattered unpopulated debug headers.


Bottom Right Closeup:
http://farm5.static.flickr.com/4054/4474664429_5aa08e6d06_b.jpg
In the center of this image we can see the 4 pin TTL serial header which the TiVo HD used. Of note is the large area in the tuners that seems to be completely unpopulated. I do wonder what it could have held, and perhaps more poking and prodding will tell us. There is also a mysterious 5 pin header in the upper left area here that leads directly to the CPU. The header is surrounded by a grounding pin on each side, and I haven't been able to determine what type of connector would fit in there. Any ideas here would be welcome.


Bottom Left Closeup:
http://farm3.static.flickr.com/2754/4475441180_8e800102fd_b.jpg
There are some really interesting things going on here. We can see lots of unpopulated areas here for both pin headers and capacitors, neither of which would allow the CableCard slot to be there had they been populated. This would seem to imply that the development versions of this board did not even have a CableCard slot, and perhaps interfaced to a "CableCARD Test Device" of some sort. Note that one of the pin headers leading directly to the CPU has a pin count of 14, which would indicate that it may in fact be a JTAG header. I will see if I can investigate this further over the coming weeks. I will probably have to make a ribbon cable that I can solder to the bottom of the board, and bring up the pins to the top in a way that wouldn't interfere with the CableCARD.

Omikron
03-31-2010, 12:17 AM
03/30: Enough donations came in to cover the cost of some sockets and test chips. Still a bit away from the socket adapter needed for programming, but there are other things to look at while we're all waiting. :-)

AlphaWolf
03-31-2010, 03:48 PM
In this view we can see the battery, the TSOP56 PROM, and an empty location next to it that looks like a TSOP48 chip of some sort. I'm not really sure why there's a second spot here. It's possible that TiVo wasn't sure if it was going to use a TSOP56 flash or a TSOP48 flash, but it doesn't make sense that they would leave it there.

I was thinking about that myself, hell they even pre-soldered the pads. I'm wondering if there may be some way of making the tivo ignore the 56 and use the 48 instead if you simply put one on there. If so you could potentially hack the tivo using nothing more than bit of heat.

Omikron
03-31-2010, 06:44 PM
I was thinking about that myself, hell they even pre-soldered the pads. I'm wondering if there may be some way of making the tivo ignore the 56 and use the 48 instead if you simply put one on there. If so you could potentially hack the tivo using nothing more than bit of heat.

While it would be marginally easier to simply add a new flash and cut some traces to disable the old one, I'm not sure the trade-off is worth it.

Advantages:

+ Doesn't require the hot-air rework or ChipQuik to remove old TSOP package.

Disadvantages:

- Requires physically damaging traces on the motherboard in order to work (assuming you're still trying to take advantage of not having to desolder the old chip).
- Programming requires an overpriced TSOP48 programming adapter.
- It may be difficult to find a TSOP48 packages that matches the same design characteristics of the StrataFlash chip from Intel.


Considering I still don't even have the TSOP56 adapter needed to read the chip, let alone write new ones, it doesn't feel like such a hack would be a high priority.

That said, the idea is still neat, and I admit that I'm a bit curious if it were be possible even if there were no "good" reasons for doing it. :-)

Omikron
03-31-2010, 09:47 PM
I finally got around to connecting the Series4 drive to my PC to grab some of the partitions off of it.

The good news is that I now have gzip'd copies of partitions 1-9. The bad news is that somehow int the process I managed to make the drive unbootable. The TiVo now gets stuck at a "Almost there..." screen, so I'll have to pull it again and see if there's any useful info in the logs.

Either way, here's the initial PROM boot log from the messages log:


Mar 31 20:52:52 (none) syslogd 1.5.0: restart.
Mar 31 20:53:25 (none) Stats: == System startup resource statistics ==
Mar 31 20:53:25 (none) Stats: ++ System build version numbers ++
Mar 31 20:53:25 (none) Stats: b-14-1-mr @384589 2010.03.19-1443 release-mips_k26 [] ARM_IDL_FREEZE CDDB_QUERY DCT_SERIAL DSS_SERIAL HPK IDL_FREEZE IRBLAST LOCAL_CALYPSO_SERVER LOCAL_MP3_PLAYER LOCAL_MUSIC_PLAYER LOCAL_PHOTO_VIEWER LOCAL_WMA_PLAYER MACROVISION MULTI_ROOM_VIEWING PERF_LOGGER PERF_LOGGER_USER_STATS PTHREADS_TMK REQUIRE_PRODUCTION_SPIGOT_LINEAGE SANITIZE_LOGS STRONG_CRYPTO T2KSOURCE US_CABLE_AUTO_DETECT WMDRMPD
Mar 31 20:53:25 (none) Stats: 2010.03.19-1443 14.1-01-3
Mar 31 20:53:25 (none) Stats: PROM version: Gen07 release 1.00 (2009-10-20 14:09:37)
Mar 31 20:53:25 (none) Stats: Version : Gen07 release 1.00 (2009-10-20 14:09:37) SHA : 356515097AED79CCEC5097DA723F8FE654826A83
Mar 31 20:53:25 (none) Stats: System Serial Number: 746XXXXXXXXXX
Mar 31 20:53:25 (none) Stats: Linux version 2.6.18-5.1 (build@buildmaster74) (gcc version 3.3.4) #1 Mon Mar 15 10:01:56 PDT 2010
Mar 31 20:53:25 (none) Stats: ++ Memory usage ++
Mar 31 20:53:25 (none) Stats: MemTotal: 329200 kB
Mar 31 20:53:25 (none) Stats: MemFree: 256240 kB
Mar 31 20:53:25 (none) Stats: Buffers: 1456 kB
Mar 31 20:53:25 (none) Stats: Cached: 49300 kB
Mar 31 20:53:25 (none) Stats: SwapCached: 0 kB
Mar 31 20:53:25 (none) Stats: Active: 18500 kB
Mar 31 20:53:25 (none) Stats: Inactive: 36876 kB
Mar 31 20:53:25 (none) Stats: HighTotal: 0 kB
Mar 31 20:53:25 (none) Stats: HighFree: 0 kB
Mar 31 20:53:25 (none) Stats: LowTotal: 329200 kB
Mar 31 20:53:25 (none) Stats: LowFree: 256240 kB
Mar 31 20:53:25 (none) Stats: SwapTotal: 131064 kB
Mar 31 20:53:25 (none) Stats: SwapFree: 131064 kB
Mar 31 20:53:25 (none) Stats: Dirty: 88 kB
Mar 31 20:53:25 (none) Stats: Writeback: 0 kB
Mar 31 20:53:25 (none) Stats: AnonPages: 4656 kB
Mar 31 20:53:25 (none) Stats: Mapped: 9384 kB
Mar 31 20:53:25 (none) Stats: Slab: 11936 kB
Mar 31 20:53:25 (none) Stats: PageTables: 864 kB
Mar 31 20:53:25 (none) Stats: NFS_Unstable: 0 kB
Mar 31 20:53:25 (none) Stats: Bounce: 0 kB
Mar 31 20:53:25 (none) Stats: CommitLimit: 295664 kB
Mar 31 20:53:25 (none) Stats: Committed_AS: 33216 kB
Mar 31 20:53:25 (none) Stats: VmallocTotal: 1048524 kB
Mar 31 20:53:25 (none) Stats: VmallocUsed: 3536 kB
Mar 31 20:53:25 (none) Stats: VmallocChunk: 1041352 kB
Mar 31 20:53:25 (none) Stats: ++ CPU info ++
Mar 31 20:53:25 (none) Stats: system type^I^I: BCM97xxx Settop Platform
Mar 31 20:53:25 (none) Stats: build target^I^I: unknown
Mar 31 20:53:25 (none) Stats: processor^I^I: 0
Mar 31 20:53:25 (none) Stats: cpu model^I^I: BMIPS4380 V4.4 FPU V0.1
Mar 31 20:53:25 (none) Stats: cpu MHz^I^I^I: 402.43
Mar 31 20:53:25 (none) Stats: BogoMIPS^I^I: 402.43 ( udelay_val : 201216 HZ = 1000 )
Mar 31 20:53:25 (none) Stats: wait instruction^I: yes
Mar 31 20:53:25 (none) Stats: microsecond timers^I: yes
Mar 31 20:53:25 (none) Stats: tlb_entries^I^I: 32
Mar 31 20:53:25 (none) Stats: extra interrupt vector^I: yes
Mar 31 20:53:25 (none) Stats: hardware watchpoint^I: no
Mar 31 20:53:25 (none) Stats: ASEs implemented^I: mips16
Mar 31 20:53:25 (none) Stats: VCED exceptions^I^I: not available
Mar 31 20:53:25 (none) Stats: VCEI exceptions^I^I: not available
Mar 31 20:53:25 (none) Stats: RAC setting^I^I: Unknown
Mar 31 20:53:25 (none) Stats: unaligned access^I: 0
Mar 31 20:53:25 (none) Stats: rdhwr/brdhwr traps^I: 0 / 0
Mar 31 20:53:25 (none) Stats: cycle counter frequency^I: 27046875
Mar 31 20:53:25 (none) Stats: ++ Module info ++
Mar 31 20:53:26 (none) Stats: router 68608 0 - Live 0xc005d000
Mar 31 20:53:26 (none) Stats: ubuddy 7808 0 - Live 0xc0017000
Mar 31 20:53:26 (none) Stats: pod 15680 2 - Live 0xc003a000
Mar 31 20:53:26 (none) Stats: tv_bcm7405 37056 0 - Live 0xc0052000
Mar 31 20:53:26 (none) Stats: bcm7405 2986848 65 tv_bcm7405, Live 0xc0426000
Mar 31 20:53:26 (none) Stats: tr 4736 2 - Live 0xc002a000
Mar 31 20:53:26 (none) Stats: nxp7164 47840 12 - Live 0xc0045000
Mar 31 20:53:26 (none) Stats: drx 234640 22 - Live 0xc0080000
Mar 31 20:53:26 (none) Stats: ircatch 9344 0 - Live 0xc002f000
Mar 31 20:53:26 (none) Stats: frontpanel 2752 1 ircatch, Live 0xc001a000
Mar 31 20:53:26 (none) Stats: i2c 9024 2 ubuddy,drx, Live 0xc0026000
Mar 31 20:53:26 (none) Stats: softi2c 9088 1 bcm7405, Live 0xc0022000
Mar 31 20:53:26 (none) Stats: gpio 10688 5 pod,drx,softi2c, Live 0xc001e000
Mar 31 20:53:26 (none) Stats: ++ Device info ++
Mar 31 20:53:26 (none) Stats: Character devices:
Mar 31 20:53:26 (none) Stats: 1 mem
Mar 31 20:53:26 (none) Stats: 2 pty
Mar 31 20:53:26 (none) Stats: 3 ttyp
Mar 31 20:53:26 (none) Stats: 4 ttyS
Mar 31 20:53:26 (none) Stats: 5 /dev/tty
Mar 31 20:53:26 (none) Stats: 5 /dev/console
Mar 31 20:53:26 (none) Stats: 5 /dev/ptmx
Mar 31 20:53:26 (none) Stats: 10 misc
Mar 31 20:53:26 (none) Stats: 21 sg
Mar 31 20:53:26 (none) Stats: 30 tvbcmdriver
Mar 31 20:53:26 (none) Stats: 33 nexus
Mar 31 20:53:26 (none) Stats: 97 ubuddy
Mar 31 20:53:26 (none) Stats: 99 i2c
Mar 31 20:53:26 (none) Stats: 104 router
Mar 31 20:53:26 (none) Stats: 108 ppp
Mar 31 20:53:26 (none) Stats: 111 pod
Mar 31 20:53:26 (none) Stats: 112 drx
Mar 31 20:53:26 (none) Stats: 114 tr
Mar 31 20:53:26 (none) Stats: 121 saa7164
Mar 31 20:53:26 (none) Stats: 127 ircatch
Mar 31 20:53:26 (none) Stats: 128 ptm
Mar 31 20:53:26 (none) Stats: 136 pts
Mar 31 20:53:26 (none) Stats: 180 usb
Mar 31 20:53:26 (none) Stats: 189 usb_device
Mar 31 20:53:26 (none) Stats: 243 gioctl
Mar 31 20:53:26 (none) Stats: 246 gpio
Mar 31 20:53:26 (none) Stats: 247 frontpanel
Mar 31 20:53:26 (none) Stats:
Mar 31 20:53:26 (none) Stats: Block devices:
Mar 31 20:53:26 (none) Stats: 1 ramdisk
Mar 31 20:53:26 (none) Stats: 8 sd
Mar 31 20:53:26 (none) Stats: 65 sd
Mar 31 20:53:26 (none) Stats: 66 sd
Mar 31 20:53:26 (none) Stats: 67 sd
Mar 31 20:53:26 (none) Stats: 68 sd
Mar 31 20:53:26 (none) Stats: 69 sd
Mar 31 20:53:26 (none) Stats: 70 sd
Mar 31 20:53:26 (none) Stats: 71 sd
Mar 31 20:53:26 (none) Stats: 128 sd
Mar 31 20:53:26 (none) Stats: 129 sd
Mar 31 20:53:26 (none) Stats: 130 sd
Mar 31 20:53:26 (none) Stats: 131 sd
Mar 31 20:53:26 (none) Stats: 132 sd
Mar 31 20:53:26 (none) Stats: 133 sd
Mar 31 20:53:26 (none) Stats: 134 sd
Mar 31 20:53:26 (none) Stats: 135 sd
Mar 31 20:53:26 (none) Stats: ++ Network device info ++
Mar 31 20:53:26 (none) Stats: Inter-| Receive | Transmit
Mar 31 20:53:26 (none) Stats: face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
Mar 31 20:53:26 (none) Stats: eth0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mar 31 20:53:26 (none) Stats: lo: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

swinokur
04-01-2010, 04:43 PM
super cheap USB-Serial to TTL cables can be purchased here:
http://www.hobbycity.com/hobbycity/store/uh_viewItem.asp?idProduct=9043

(this article talks about it as well: http://bytesnwires.wordpress.com/2009/09/30/cheapest-usb-to-serial-cable/ )

At $2.99 each, you might as well buy a bunch so you pay more for cables than shipping.

The nice thing about this adapter is that it is a SiLabs CP2102 chip, and there is driver support for xp/vista/vista64/win7/linux/macos

(hack the end off of the wire and there are 3 wires, tx, rx and gnd...)

swinokur
04-01-2010, 04:48 PM
In addition to the JTAG header there might also be a jumper somewhere needed to enable the JTAG.

It'd sure be nice to be able to write the PROM with a JTAG adapter...

ray08
04-02-2010, 03:02 PM
Omikron, if you still need money for the PROM adaptor, let me know. I can afford to chip in a good amount.

Omikron
04-02-2010, 03:45 PM
Omikron, if you still need money for the PROM adaptor, let me know. I can afford to chip in a good amount.

After the test chips and sockets that were ordered we still have about $215 to go.

jt1134
04-02-2010, 09:53 PM
been poking around some of the premiere software today....meh

still using the old apple partition map

00000000 50 4d 00 00 00 00 00 0e 00 00 00 01 00 00 00 3f |PM.............?|
00000010 41 70 70 6c 65 00 00 00 00 00 00 00 00 00 00 00 |Apple...........|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 41 70 70 6c 65 5f 70 61 72 74 69 74 69 6f 6e 5f |Apple_partition_|
00000040 6d 61 70 00 00 00 00 00 00 00 00 00 00 00 00 00 |map.............|

busybox binary in /bin compiled to include most of the previously included stuff (dd,mv,cat,etc)

SwedishChef renamed to theProgramLauncherPreviouslyKnownAsSwedishChef in 14.0 and then re-renamed to tivoApplicationProxyLauncher in 14.1.

startup scripts and such very similar to previous hw/sw versions

Omikron
04-02-2010, 10:20 PM
Looks like a couple more people chipped in and we were at $75 to go. In in the interest of "getting things done" I did place an order for a CX1011 socket adapter earlier this morning because there is a one to two week lead time on it.

TSOP56 sockets arrived today. Still waiting on other items.

As a side note, I've ditched my old TTL adapter design and I am migrating to a new design which may be very nice for people who brick their units frequently. Still waiting on those parts. Once I know it's going to work, I'll post more details.

Finally, in other news, my TiVo Premiere still doesn't boot. Still investigating...

jt1134
04-02-2010, 10:42 PM
poking through /platform/utils/DeviceList/devlist.Gen07 I stumbled across this :

# usb keyboard
666 c 13 64 event0
666 c 180 96 hiddev0
hmmm...says I...interesting..

looks like someone else found it out first though :P

http://tivocommunity.com/tivo-vb/showthread.php?t=446025

perhaps this could be backported the S3/HD once 14.x kernel source is published

Jamie
04-03-2010, 11:24 AM
...
startup scripts and such very similar to previous hw/sw versionsHave a look at bsptest (testing that the broadcom secure processor features are enabled) and fswak (flash swiss army knife) in the startup scripts and in the platform subdirectory of the root partition to get an idea of the new chain of trust changes which may be in place.

Omikron
04-03-2010, 05:40 PM
DigiKey parts arrived today. I will be playing around with the serial port first. I suspect that configuration and interface are identical to the TiVo HD.

Omikron
04-03-2010, 08:05 PM
I was finally able to get my hands on my beloved FTDI TTL cable again, courtesy of DigiKey. I crimped on a fresh 4-pin connector a-la-TiVo HD and plugged it in.

http://farm3.static.flickr.com/2744/4487701203_4cca2c4533_o.jpg

This is what she wrote:


Shmoo Version=3.5
DDR Freq=0x0000018C
%00000001%
RC1=00000003
WC1=FFFFFFE2
RC2=00000018
WC2=0000002F
RC3=0000000D
WC3=FFFFFFE2
RC4=0000000D
WC4=0000002F
NWC=00000008
RC5=00000003
WC5=00000008
RC6=00000018
WC6=00000008
NRC=0000000D
RW=00000016
WW=0000004E
G=00000000 R=0000000D W=00000008
BL=00000000
RC1=00000000
RC2=00000015

BL=00000001
RC1=00000003
RC2=00000015

BL=00000002
RC1=00000002
RC2=00000019

BL=00000003
RC1=00000003
RC2=00000019

BL=00000004
RC1=00000001
RC2=00000018

BL=00000005
RC1=00000004
RC2=00000019

BL=00000006
RC1=00000002
RC2=00000017

BL=00000007
RC1=00000002
RC2=00000019

TiVo Gen07 release 1.00 (2009-10-20 14:09:37)
Copyright 2009 TiVo Inc. All Rights Reserved.
TSN: REDACTED BREV: 0x1060 MAC: RE:DA:CT:ED
Thumbprint: 356515097AED79CCEC5097DA723F8FE654826A83
Disk: WDC WD3200AVVS-63L2B0 F/W: 01.03A01 S/N: WD-REDACTED
Booting from partition 3... 3800064 bytes
Kernel signed by '... the Porridge bird ...'
Hashing kernel (SHA256)... done
Checking signature... done.
Signed, valid for release
Kernel entry point is 0x802b8000

cfeBootParms ===> root=/dev/sda4
Kernel boot options: root=/dev/sda4 console=ttyS0,115200 boardID=0x106001 HpkImp
Gen07

BOOTEDFROMFLASH, Base=1c000000
Initial CP0 22 value : 0xe30f3406
node [00000000, 10000000: RAM]
node [20000000, 10000000: RAM]
mips_counter_frequency = 202000000 from Calibration, = 202500000 from header(CPU_MHz/2)
As near as I can tell, the PROM boot menu that presents you with "What is password?" is gone.

Omikron
04-03-2010, 10:50 PM
As I suspected, SW1 near the battery acts as a reset switch, which will be great for bench testing and such. Now you can reset the TiVo by shorting the terminals instead of having to unplug power cord.

If one were so inclined, it could even be wired to a PC in a way to allow you to remotely reset a misbehaving TiVo that is not responding to telnet.

Jamie
04-04-2010, 10:13 AM
...
As near as I can tell, the PROM boot menu that presents you with "What is password?" is gone.Hit control-C repeatable at poweron and you can get into a PROM menu. No password needed. The only commands I've found so far are boot, disk and reset. You can boot -3 or boot -6 to control which partition is booted from.

By the way, dsscon=true console=0,115200 are the kernel options to see a kernel serial console so you can see kernel messages on serial during the boot.

On the chain of trust and bsptest/fswak: One theory is that that there is yet another link in the chain of trust. The BSP checks the signature on the flash prom code and will refuse to transfer to it unless it is signed. From there, it is as before. It may be that the flash prom is unlocked, but signature checked, so they can still flash it in the field to invalidate software versions they don't want to allow to boot anymore. But if you attempt to flash with unsigned PROM code, you'll brick it.

Perhaps this is a worst case scenario, but I think it is pretty likely they have locked this one down hard. Unless there are exploits for the BSP, it is likely to be difficult to gain shell access in a way that they can't easily disabled.

Hoping this theory is wrong.

jt1134
04-04-2010, 11:10 AM
Have you looked at disassembling the bsptest binary? The disassembly is fairly small and not too difficult to follow. I spent a bit last night tracing through it.

That's of course meaningless unless the PROM is exploited first, and I don't even have a Premiere box to begin with.

Omikron
04-04-2010, 12:25 PM
Well I have a feeling once the TSOP56 adapter for my programmer arrives from Hong Kong we'll have some real answers. I have everything else, including a few fresh StrataFlash chips and sockets.

To verify that the PROM signature is checked via BSP, I could just change a single bit in the data and see what the console says.

Either way, once we start looking at the PROM disassembly we should get some insight into what options we have, if any.

Omikron
04-04-2010, 12:48 PM
Perhaps it's the sleep deprecation talking, but I'm having some trouble booting from the PROM menu using the additional dsscon flags.

Here's what I'm executing:
boot -3 dsscon=true console=0,115200After about 3 seconds or so, it runs into this:


brcm-ohci-0 brcm-ohci-0.0: BRCM OHCI
brcm-ohci-0 brcm-ohci-0.0: new USB bus registered, assigned bus number 2
brcm-ohci-0 brcm-ohci-0.0: irq 63, io mem 0x10480400
usb usb2: configuration #1 chosen from 1 choice
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 2 ports detected
ip_conntrack version 2.4 (4096 buckets, 32768 max) - 172 bytes per conntrack
ip_tables: (C) 2000-2006 Netfilter Core Team
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
RAMDISK: romfs filesystem found at block 0
RAMDISK: Loading 682KiB [1 disk] into ram disk... done.
VFS: Mounted root (romfs filesystem) readonly.
Kernel panic - not syncing: No init found. Try passing init= option to kernel.
Core of 0 bytes written
Rebooting in 3 seconds..
This only happens of course while I'm booting from the PROM menu. It seems that there's a flag or option that I'm not passing correctly, but I'm not seeing it.

Jamie
04-04-2010, 12:55 PM
Perhaps it's the sleep deprecation talking, but I'm having some trouble booting from the PROM menu using the additional dsscon flags. ...I don't think that is way you pass options via the PROm boot menu. Load the kernel options in the bootpage. I can verify that works.

mike_s
04-04-2010, 01:58 PM
I think you can pass parameters, but they have to be in double quotes:
boot -3 "root=/dev/hda4 dsscon=true console=0,115200"

jt1134
04-04-2010, 02:05 PM
also, original bootpage looks like the premiere uses sdaX instead of hdaX like it did on previous hardware

Omikron
04-04-2010, 02:08 PM
I think you can pass parameters, but they have to be in double quotes:
boot -3 "root=/dev/hda4 dsscon=true console=0,115200"

That makes a great deal of sense. I'm not sure why I didn't think of that. :-P

Omikron
04-04-2010, 02:31 PM
Eventually got the flags set correctly and got my terminal program to behave properly.

In case anyone is curious, I've attached the full console log from the complete bootup, with timestamps.

tivo4mevo
04-04-2010, 03:22 PM
To verify that the PROM signature is checked via BSP, I could just change a single bit in the data and see what the console says.

Either way, once we start looking at the PROM disassembly we should get some insight into what options we have, if any.bsptest doesn't check the Flash boot partition signature, bsptest checks that secure boot is enabled and the debug interface is locked (based upon bsptest errors and the rc.sysinit notes).

Errors:

bsptest: public key index is %d, expected 0.
bsptest: flash key authentication is not enabled.
bsptest: secure boot is not enabled.
bsptest: debug interface is not locked.
bsptest: EJTAG is disabled?

From rc.LoadEarlyCoreDrivers.sh:

# This complains if secure boot is disabled or the debug interface is not
# locked. Dev systems will always complain. Release systems should *never*
# complain, if they do then the factory is broken.

Additionally, fswak:


fswak -- flash swiss army knife

usage:

fswak [-c] [-i] [-I] [-lock_FOREVER] [-q] [-p] [-r[0]] [-s k=v] [-t k] [-u k] [-v] [-V] [-w n] [-x n] [<file]

where:

-c Clear environment.
-i Check that file on stdin is a valid boot image. Fail if not.
-I Same as above, but also check signature.
-lock_FOREVER Don't do this if you don't mean it... Fail if couldn't.
-p Print environment.
-q Query lock status. Fail if unlocked.
-r[0] Copy partition 0 to stdout.
-s k=v Set environment variable.
-t k Test that environment variable exists. Print if so, fail if not.
-u k Unset environment variable.
-v Check that boot partition contains valid boot image. Fail if not.
-V Same as above, but also check signature.
-w n Write file on stdin to partition n.
-x n Compare file on stdin to partition n. Fail if different.

Legal partitions are: 0 = config; 1 = boot; 2 = kernel. Multiple options can be specified, including options
that reference stdin. Options will be executed in the order specified. Note the environment is not actually
updated until successful termination or execution of -w0.

appears to be a utility to access to the Flash. Reordering the usage flags as follows helps elucidate how to use fswak to load a new image from stdin:
["-i"] Check that file on stdin is a valid boot image. Fail if not.
["-I"] Same as above, but also check signature.
["-w 1"] Write file on stdin to partition n (boot in my example).
["-x 1"] Compare file on stdin to partition n. Fail if different. (check for corruption),
["-v"] Check that boot partition contains valid boot image. Fail if not.

Finally, the "-v" option seems to result in these possible failures:


Image has invalid signature length.
Image has invalid signature CSD.
Image has invalid signature key.
Image has wrong SHA (%s).

Roll that all together and here's a guess of what might be happening:
1) the BCM7413's internal boot ROM, when set to "secure boot" mode (and an associated public key index), will search the Flash boot-partition for an expected public key and loads it in.
2) the CPU authenticates that public key (presumably by comparing it's checksum to an internal/hard-coded version).
3) Assuming that the public key is valid, the CPU then verifies the signature (using said authenticated flash key) of the Flash boot partition.
4) Assuming the signature is valid, the CPU hands off control to the Flash boot partition code.
5) Rest of boot is as it was before.

This would simplify things considerably for TiVo development. No more engineering keys needed. Development boxes run with secure boot off and debug enabled in hardware. Production units are secured during factory configuration (OTP bits or fuses). Additionally, as Jamie pointed out, this lowers the root of trust away from the Boot Flash (PROM) to the CPU--which is considerably more difficult to replace.

Finally, I would suggest that you try these steps to confirm the above.
1) change a bit of the public key
2) change a bit of the signature
3) change a bit of the boot image
I'm not sure whether the BCM7413 has any way to report errors?

Omikron
04-04-2010, 03:43 PM
Finally, I would suggest that you try these steps to confirm the above.
1) change a bit of the public key
2) change a bit of the signature
3) change a bit of the boot image
I'm not sure whether the BCM7413 has any way to report errors?

Thanks for the great analysis. That sounds like a good plan to move forward with once the adapter arrives.

Even if secure boot and other checks are enabled, it's possible that there could be other exploit vectors.

In this case, TiVo doesn't really seem to have a whole lot to protect. Clearly they are obligated to make an effort secure their software and the content on the disk in order to placate copyright holders and Cable Labs, but beyond that they're not really protecting state secrets. I have a hard time believing TiVo spent as much time securing Gen07 as say, Apple did securing iPhone or Microsoft did securing Xbox.

The real question is how much effort is reasonable in this situation. When the Gen05 platform was released it was done so without TTG and MRV capabilities, which are pretty major features. The desire to enable similar functionality via the use of other hacks was a fairly strong one, and I feel it drove development. Meanwhile, Gen07 was released with all of the major features enabled, and a new (albeit buggy) HDUI to boot.

As far as new features go the stakes are markedly lower, but the hacker and TiVo-lover in me still wants to explore. This is a sentiment I'm sure others share.

So in that spirit...

Onward!

tivo4mevo
04-04-2010, 04:15 PM
Good points, though regarding the point about tivo not having a lot to protect, I thought saw mention that the S4 was to be fielded by some cable manufacturers. Who presumably would want assurances about the box's resistance to tampering.

Additionally, tivo is just leveraging the security features Broadcom has already added (and Broadcom is building to a level of security demanded by their current and customers potential customers, which includes Dish, DirecTV, Sky, and others). So tivo can up their box's security significantly with minimal effort.

Jamie
04-04-2010, 04:16 PM
I certainly don't want to discourage further exploration. It's just good to know what obstacles to expect.

Omikron
04-04-2010, 04:25 PM
Good points, though regarding the point about tivo not having a lot to protect, I thought saw mention that the S4 was to be fielded by some cable manufacturers. Who presumably would want assurances about the box's resistance to tampering.

Interesting thought. This would certainly explain the progressive "downgrading" of the case observed from Gen05 to Gen07. The case styles seem to keep getting uglier, with the original Gen05 Series3 being the best looking TiVo ever (IMHO). However, the new case design has to be decidedly cheaper to manufacture since the front panel doesn't have any LED's directly on it but rather just uses some light pipes to go down to some SMD LED's on the motherboard. The new hardware is also considerably lighter and smaller in every dimension.

Just the other day I was musing to myself how much the new hardware looks and feels more like a cable box than a TiVo. :-)

StanSimmons
04-04-2010, 04:57 PM
Thanks for the great analysis. That sounds like a good plan to move forward with once the adapter arrives.

Even if secure boot and other checks are enabled, it's possible that there could be other exploit vectors.

In this case, TiVo doesn't really seem to have a whole lot to protect. Clearly they are obligated to make an effort secure their software and the content on the disk in order to placate copyright holders and Cable Labs, but beyond that they're not really protecting state secrets. I have a hard time believing TiVo spent as much time securing Gen07 as say, Apple did securing iPhone or Microsoft did securing Xbox.

The real question is how much effort is reasonable in this situation. When the Gen05 platform was released it was done so without TTG and MRV capabilities, which are pretty major features. The desire to enable similar functionality via the use of other hacks was a fairly strong one, and I feel it drove development. Meanwhile, Gen07 was released with all of the major features enabled, and a new (albeit buggy) HDUI to boot.

As far as new features go the stakes are markedly lower, but the hacker and TiVo-lover in me still wants to explore. This is a sentiment I'm sure others share.

So in that spirit...

Onward!

The only thing keeping me from getting the Premier is the CCI byte issue. Since I HEAVILY use MRV/TTG, and TimeWarner Dallas sets the CCI byte on almost everything, until that can be bypassed I have zero interest in getting a Premier.

Omikron
04-04-2010, 07:29 PM
Since I had the TSOP sockets already on hand, I figured I would try my hand at socketing my board in preparation for future work. Little did I know the frustration that would ensure. First of all, the entire board is RoHS compliant, which means they use 100% lead-free solder. For those who are "not in the know" lead-free solder melts at a higher temperature, and for that reason is a pain in the ass to work with. Apparently my existing rework equipment couldn't get to high enough temperatures to remove the TSOP. After spending more time than I felt comfortable with blasting the board with hot air, I resorted to Chip Quick.

If I haven't ranted about Chip Quick before, please allow me to do so now. I hate Chip Quick. It's expensive, it's messy, and it's a pain in the ass to clean up. The initial removal of the component is fairly straight forward, but if you plan on doing anything useful with the component you removed other than using it as a keychain, you have to clean it up. This means a great deal of time and effort spent cleaning the leads of the chip with lots of copper braid, flux, and more copper braid. Double that up for the actual pads on the PCB itself. You see, Chip Quick consists of an alloy that melts at a crazy-low temperature that mixes with the existing solder, allowing the huge blob of solder to stay molten for quite some time. Unfortunately every last bit of this stuff has to be removed from any component that needs to be re-soldered. If it's not properly cleaned, the joint is prone to poor connectivity and failure. This is the glorious bliss that awaits any Chip Quick user.

So after I removed the original TSOP from the board, I noticed something interesting. The PROM has a serial number underneath it. Not on the PCB, but rather laser-etched onto the underside of the chip. This is particularly interesting because TiVo has already laser-engraved the top of the chip with the CBOM revision number, and it takes an extra few steps to flip the chip over and serialize the bottom. Without being able to read the chip, it's hard to say yet exactly what this means for us. It's possible that each PROM has it's own unique crypto key, or stores some other pertinent and unique information. If this is the case, then it's going to mean that PROM dumps posted online will be useless to anyone but the original user, and it could also mean that even if a PROM exploit is found, I wouldn't be able to batch program chips. I would have to read, patch, and re-write the PROM for each TiVo separately.

Ultimately after meticulously cleaning both the TSOP and the pads on the motherboard I tried to mount the TSOP socket. Much to my frustration, it would seem that my current equipment is not suited for this task. I don't have to use lead-free solder so temperature isn't an issue, but the nozzle I have is way too big, and a smaller adapter isn't available. As near as I can tell there's no easy way to solder the socket on via a hand-held soldering iron with fine tip either. It would seem that I am now faced with buying either new hot air rework equipment, or an IR rework station.

Another option that I've been researching is the use of anisotropic conductive epoxy. Apparently it's expensive and a pain in the ass to find, but it might be the ticket to getting this thing done without having to buy a new set of equipment.

I'm still continuing to look for other options and if anyone has any suggestions I'd love to hear them.

mike_s
04-04-2010, 09:10 PM
This means a great deal of time and effort spent cleaning the leads of the chip with lots of copper braid, flux, and more copper braid. Dust-off (or a source of compressed air) is your friend.

Omikron
04-04-2010, 09:16 PM
Dust-off (or a source of compressed air) is your friend.

Care to elaborate on this method?

Edit: I'm assuming you're talking about heating the Chip Quick that's on the component and then blasting the material off of the leads, but this still leaves a good layer of the alloy on the pins which must be removed manually for optimal connections, and doesn't address the residue left on the PCB, which also must be cleaned thoroughly and manually.

mike_s
04-04-2010, 09:58 PM
I'm assuming you're talking about heating the Chip Quick that's on the component and then blasting the material off of the leads, but this still leaves a good layer of the alloy on the pins which must be removed manually for optimal connections,No, it doesn't, in my experience. Very, very little is left on. It has worked well for me. In any case, if the removed component is going into a socket, then concerns about future solder adhesion are moot.

and doesn't address the residue left on the PCB, which also must be cleaned thoroughly and manually.I get most of that with a q-tip, then solder braid. Finish by rewetting with real solder and braiding again. I find it easier than doing through hole with a vacuum extractor.

Omikron
04-04-2010, 10:10 PM
No, it doesn't, in my experience. Very, very little is left on. It has worked well for me. In any case, if the removed component is going into a socket, then concerns about future solder adhesion are moot.
I honestly hadn't tried it yet, but I suppose it's true. I just dislike leaving any residue on there because it seems to have a tendency to hand-off to other connectors and pads on contact. I'm perhaps a bit too anal at times about my soldering, but it's saved me a few times. :-)


I get most of that with a q-tip, then solder braid. Finish by rewetting with real solder and braiding again. I find it easier than doing through hole with a vacuum extractor.
I use the same method. Again, cleanliness of the pads for me is important because in this specific case, I'm soldering a socket in it's place. While a normal component doesn't really have any stress put on it during use, a socket relies on it's cohesion to the PCB in order to stay put while the user fiddles with the socket during chip removal and insertion, and most socket designs put the pins under light tension at all times while the chip is inserted and locked in. My fear would be that a thermal cycling coupled with a low quality bond would break down over time and cause issues down the line.

If hacking Gen07 is indeed possible, the socket issue may be somewhat moot. Historically TiVo has never issued a PROM update and even though we've been using sockets for all previous platforms, it hasn't ever been needed. If this remains true, it would be significantly easier to simply write-protect the replacement PROM and solder it directly to the motherboard, instead of fiddling with a costly and error-prone socket.

Heck, just the "application notes" alone are 15 pages: http://meritec.thomasnet.com/Asset/Application_Notes.pdf

Omikron
04-05-2010, 01:28 AM
Alright, it's been quite the long day, but it's now come to an awesome and eventful close.

As I already had mentioned previously, I already managed to remove the original PROM from the board via Chip Quick (grrrr) and cleaned the pads.

http://farm5.static.flickr.com/4067/4491944447_e210c057cc.jpg

The short of it is while my TiVo lay in pieces on the counter, the frustration of not being able to solder the TSOP socket on grew. As a I mentioned previously, the official means for attaching this socket are a blend of costly and exotic, with varying degrees of each depending on the solution you select.

Being the stubborn hacker that I am, I determined to find a way to mount the socket but the Meritec documentation has many warnings about attempting to hand-solder the socket with normal tools. These warnings were not unfounded, as I found through initial attempts that soldering the socket through "normal" means was quite difficult indeed.

After much ruminating on the idea, and pacing around the kitchen, I decided to try an old standby...hot glue! I figured if I carefully aligned the socket and tacked down the edges, I could try flooding the pins with flux and running solder along the edges.

So I went ahead and grabbed a fresh TSOP socket, very carefully aligned and centered the pins, and tacked four blobs of glue on the corners.

http://farm3.static.flickr.com/2725/4491944585_fe99a928c0.jpg

At this point I realized that I didn't have very good lighting and I couldn't easily get access to the pins, so I clipped on some trusty Photon Freedom lights to the edges of the motherboard.

http://farm3.static.flickr.com/2697/4492658624_068fb1620f_b.jpg

As you can see, the light looked funny, but the light was there where I needed it, which was the left and right sides.

http://farm5.static.flickr.com/4031/4492584574_8bb4a65725.jpg

http://farm5.static.flickr.com/4065/4492584684_0708556197.jpg

From here I flooded the pins and the board with a no-clean flux pen and made sure to get good coverage. I then tried to carefully apply solder along the pins. Unfortunately, I managed to bridge together most of the pins in the socket together, so my next task consisted of carefully taking an ultra-thin desoldering wick and removing excess solder from between the pins. It was long and tedious work, but eventually I had both sides soldered and free of bridges.

http://farm5.static.flickr.com/4066/4492584766_e479c9307f.jpg

Unfortunately I nicked the edge of the socket with my soldering iron and melted some of the plastic. ::sadface::

http://farm5.static.flickr.com/4042/4492584854_feaea4736e.jpg

Burn marks aside, the socket was now soldered! I carefully removed the blobs of cooled glue with some tweezers cleaned up the area visually inspected the connections to look for any bridges that I had missed or other debris. All clear!

Wings Closed:

http://farm5.static.flickr.com/4022/4492584902_eb2f2a5b4d.jpg

Wings Opened:

http://farm5.static.flickr.com/4044/4492584958_7ac6e6c196.jpg

Bob's Your Uncle:

http://farm5.static.flickr.com/4056/4492585056_71eddf3c43.jpg

Woot!

Omikron
04-05-2010, 02:45 AM
Preliminary tests confirm my previous suspicion that the PROM now contains keys specific to the model of TiVo it came from.

Swapping the PROM with the PROM from a different TiVo Premiere resulted in a TiVo that begins the boot process, but then panics and reboots, citing HDCP key initialization failure as the reason. The TSN appears to be burned into the PROM, and the PROM swap resulted in console logs with a different TSN.

It appears that the PROM flash is split into several areas, with the executable code being the same on all units, but having a different "config" that contains the TSN and crypto keys.

If a hack is possible, it looks like each PROM is going to have to be burned separately, and will of course require the original PROM to pull keys from.

jt1134
04-05-2010, 12:16 PM
Swapping the PROM with the PROM from a different TiVo Premiere resulted in a TiVo that begins the boot process, but then panics and reboots, citing HDCP key initialization failure as the reason. The TSN appears to be burned into the PROM, and the PROM swap resulted in console logs with a different TSN.

From poking through the startup scripts it looks like you can skip the HDCP key initialization if you have DISABLE_HDCP=1 set in your environment.

The startup sequence is similar in this regard on the TiVoHD, and I was able to boot my TiVoHD successfully after appending this variable to my bootpage.

Perhaps you can boot an alien PROM if DISABLE_HDCP=1 is defined during boot. It would be interesting to see if this would allow you to boot up all the way with a different box's PROM.

edit : w00t! 1,000 posts :P

Omikron
04-05-2010, 12:55 PM
From poking through the startup scripts it looks like you can skip the HDCP key initialization if you have DISABLE_HDCP=1 set in your environment.

The startup sequence is similar in this regard on the TiVoHD, and I was able to boot my TiVoHD successfully after appending this variable to my bootpage.

Perhaps you can boot an alien PROM if DISABLE_HDCP=1 is defined during boot. It would be interesting to see if this would allow you to boot up all the way with a different box's PROM.

edit : w00t! 1,000 posts :P

Here's what we get before passing the DISABLE_HDCP variable:

Running boot Stage D_PreMfs scripts

Remote control is TIVO

MFS partition on /dev/sda10

CRC error in key (B112B4BA,2C10F585) - it's unusable

LoadHdcpKeySet: Unable to initialize crypto engine

Illegal read at 3b33d270

Cpu0, do_page_fault: sending signal 11 to LoadHdcpKeySet(243)

Cpu 0

$ 0 : 00000000 fefefeff 105ff470 3b33d270

$ 4 : 1001b070 00000024 7ff3c038 7ff3c03c

$ 8 : 69744c6f 00000010 00000010 636b0000

$12 : 556e6162 00000033 00000100 6c652074

$16 : 1001b070 0000001c 7ff3c0f0 2acf7a18

$20 : 7ff3c1f8 7ff3c0f0 00000100 7ff3c278

$24 : 00000003 2ac81778

$28 : 2ad43720 7ff3c018 7ff3c1d8 2ac8b0e0

Hi : 00000093

Lo : 74bbc000

epc : 2ac817bc 0x2ac817bc Tainted: PF

ra : 2ac8b0e0 0x2ac8b0e0

Status: 00008413 USER EXL IE

Cause : 00800008

BadVA : 3b33d270

PrId : 0002a044

80011f0c 80011f28 80014a00 80014d28 80016460

2ac817bc 2ac8b0e0 2ac8bef0 2ac8bdc8 2ac8bb88 2ac9e9f4 2aca0cdc 2aca26d8

0040409c 0040249c 0401455c

Tmk Fatal Error: Thread LoadHdcpKeySet <243> strayed!

pc 0x2ac817bc status 0x7317b91b cause 0x7ff3c1ef bva 0x7ff3c0f0 hi 0x000093 lo 0x74bbc000

R00 0x00000000 R01 0xfefefeff R02 0x105ff470 R03 0x3b33d270

R04 0x1001b070 R05 0x00000024 R06 0x7ff3c038 R07 0x7ff3c03c

R08 0x69744c6f R09 0x00000010 R10 0x00000010 R11 0x636b0000

R12 0x556e6162 R13 0x00000033 R14 0x00000100 R15 0x6c652074

R16 0x1001b070 R17 0x0000001c R18 0x7ff3c0f0 R19 0x2acf7a18

R20 0x7ff3c1f8 R21 0x7ff3c0f0 R22 0x00000100 R23 0x7ff3c278

R24 0x00000003 R25 0x2ac81778 R26 0x656e6769 R27 0x00000000

R28 0x2ad43720 R29 0x7ff3c018 R30 0x7ff3c1d8 R31 0x2ac8b0e0

Paste the following into a shell to get a backtrace...


bt -t /platform/tvbin/LoadHdcpKeySet <<END_OF_BT

tcd 1

hpk Gen07

build b-14-1-mr @385725 2010.03.29-1708 release-mips_k26 []

pack 14.1a-01-3

read 0x00400000 /platform/tvbin/LoadHdcpKeySet

read 0x04000000 /lib/libc.so.6

read 0x04400000 /lib/libm.so.6

read 0x04800000 /lib/libpthread.so.0

read 0x04c00000 /lib/libutil.so.1

read 0x05000000 /lib/libtvutil.so

read 0x2aaa8000 /lib/ld.so.1

read 0x2ab04000 /platform/lib/libhpkhl.so

read 0x2ac0c000 /lib/libhpkoss.so

read 0x2ac58000 /lib/libtmk.so

read 0x2ad40000 /lib/libdl.so.2

read 0x2ad84000 /platform/lib/libhpkll.so

read 0x2adc8000 /platform/lib/libnexus.so

0x2ac817bc 0x2ac8b0e0 0x2ac8bef0 0x2ac8bdc8 0x2ac8bb88 0x2ac9e9f4 0x2aca0cdc

0x2aca26d8 0x0040409c 0x0040249c 0x0401455c

END_OF_BT


Tmk Fatal Error: Thread LoadHdcpKeySet <243>: unexpected signal 11

Look for debug board

Starting podapp...

Loading ubuddy.ko

ubuddy: no version magic, tainting kernel.

Loading router.ko

router: no version magic, tainting kernel.

Updating system clock

Pretending to LOCKMEM 7fc1dac0

ubuddy: RTC is 01/01/03 09:37:39 (last=0 broken=n boot=y)

Time set to: Wed Jan 1 09:37:39 2003

Synchronizing SCSI cache for disk sda:

Restarting system.


Passing the HDCP_DISABLE variable at boot freaks out the initrd:

Running as /linuxrc - autoscan!

Loading signatures file

3118 valid entries loaded

Scan /mnt

Scan /mnt/lost+found

Scan /mnt/bin

Scan /mnt/etc

Scan /mnt/etc/hotplug

Scan /mnt/etc/mempools

Scan /mnt/etc/ppp

Scan /mnt/etc/rc.d

Scan /mnt/etc/rc.d/StageA_PreKickstart

Scan /mnt/etc/rc.d/StageB_PostKickstart

Scan /mnt/etc/rc.d/StageC_MediaInitialization

Scan /mnt/etc/rc.d/StageD_PreMfs

Scan /mnt/etc/rc.d/StageE_PreApplication

Scan /mnt/etc/rc.d/StageF_ApplicationLaunch

Scan /mnt/etc/rc.d/StageG_PostApplication

Scan /mnt/etc/terminfo

Scan /mnt/etc/terminfo/d

Scan /mnt/etc/terminfo/l

Scan /mnt/etc/terminfo/v

Scan /mnt/etc/terminfo/x

Scan /mnt/etc/tivoconfig

Scan /mnt/lib

Scan /mnt/lib/xtables

Scan /mnt/opt

Scan /mnt/opt/tivo

Scan /mnt/platform

Scan /mnt/platform/Gen07

Scan /mnt/platform/Gen07/etc

Scan /mnt/platform/etc

Scan /mnt/platform/etc/hotplug

Scan /mnt/platform/etc/mempools

Scan /mnt/platform/etc/ppp

Scan /mnt/platform/lib

Scan /mnt/platform/lib/modules

Scan /mnt/platform/tvbin

Scan /mnt/platform/utils

Scan /mnt/platform/utils/DeviceList

Scan /mnt/sbin

Scan /mnt/tvbin

Scan /mnt/tvbin/flash

Scan /mnt/tvbin/flashapps

Scan /mnt/tvbin/flashapps/tivo_hddemo

Scan /mnt/tvbin/flashapps/tivo_hddemo/data

Scan /mnt/tvbin/flashapps/tivo_hddemo/icons

Scan /mnt/tvbin/flashapps/tivo_hddemo/images

Scan /mnt/tvbin/flashapps/tivo_hdui

Scan /mnt/tvbin/flashapps/tivo_hdui/data

Scan /mnt/tvbin/flashapps/tivo_hdui/icons

Scan /mnt/tvbin/flashapps/tivo_hdui/images

Scan /mnt/tvbin/flashtests

Scan /mnt/tvbin/splashscreens

Scan /mnt/tvbin/splashscreens/enUS

Scan /mnt/tvlib

Scan /mnt/tvlib/firmware

Scan /mnt/tvlib/firmware/cdc

Scan /mnt/tvlib/firmware/prism2

Scan /mnt/tvlib/font

Scan /mnt/tvlib/font/dtvcc

Scan /mnt/tvlib/idl

Scan /mnt/tvlib/itcl3.2

Scan /mnt/tvlib/misc

Scan /mnt/tvlib/tcl

Scan /mnt/tvlib/tcl/encoding

Scan /mnt/tvlib/tcl/http

Scan /mnt/tvlib/tcl/http1.0

Scan /mnt/tvlib/tcl/msgcat

Scan /mnt/tvlib/tcl/opt

Scan /mnt/tvlib/tcl/reg

Scan /mnt/tvlib/tcl/tcldom

Scan /mnt/tvlib/tcl/tcllib

Scan /mnt/tvlib/tcl/tcllib/base64

Scan /mnt/tvlib/tcl/tcllib/cmdline

Scan /mnt/tvlib/tcl/tcllib/comm

Scan /mnt/tvlib/tcl/tcllib/counter

Scan /mnt/tvlib/tcl/tcllib/crc

Scan /mnt/tvlib/tcl/tcllib/csv

Scan /mnt/tvlib/tcl/tcllib/des

Scan /mnt/tvlib/tcl/tcllib/exif

Scan /mnt/tvlib/tcl/tcllib/fileutil

Scan /mnt/tvlib/tcl/tcllib/ftp

Scan /mnt/tvlib/tcl/tcllib/inifile

Scan /mnt/tvlib/tcl/tcllib/log

Scan /mnt/tvlib/tcl/tcllib/math

Scan /mnt/tvlib/tcl/tcllib/md4

Scan /mnt/tvlib/tcl/tcllib/md5

Scan /mnt/tvlib/tcl/tcllib/md5crypt

Scan /mnt/tvlib/tcl/tcllib/mime

Scan /mnt/tvlib/tcl/tcllib/multiplexer

Scan /mnt/tvlib/tcl/tcllib/report

Scan /mnt/tvlib/tcl/tcllib/sha1

Scan /mnt/tvlib/tcl/tcllib/struct

Scan /mnt/tvlib/tcl/tcllib/uri

Scan /mnt/tvlib/tcl/tcltest

Scan /mnt/tvlib/tcl/tclxml

Scan /mnt/tvlib/tcl/tv

Scan /mnt/var

Scan /mnt/proc

Scan /mnt/install

Scan /mnt/dist

Scan /mnt/mnt

Scan /mnt/mnt/cdrom

Scan /mnt/mnt/flash

Scan /mnt/initrd

Scan /mnt/sys

Scan /mnt/db

Scan /mnt/dev

Scan /mnt/dev/pts

No match for DISABLE_HDCP=1

The filesystem needs to be repaired

At this point we will repair the filesystem

Scan /mnt

Scan /mnt/lost+found

Scan /mnt/bin

Scan /mnt/etc

Scan /mnt/etc/hotplug

Scan /mnt/etc/mempools

Scan /mnt/etc/ppp

Scan /mnt/etc/rc.d

Scan /mnt/etc/rc.d/StageA_PreKickstart

Scan /mnt/etc/rc.d/StageB_PostKickstart

Scan /mnt/etc/rc.d/StageC_MediaInitialization

Scan /mnt/etc/rc.d/StageD_PreMfs

Scan /mnt/etc/rc.d/StageE_PreApplication

Scan /mnt/etc/rc.d/StageF_ApplicationLaunch

Scan /mnt/etc/rc.d/StageG_PostApplication

Scan /mnt/etc/terminfo

Scan /mnt/etc/terminfo/d

Scan /mnt/etc/terminfo/l

Scan /mnt/etc/terminfo/v

Scan /mnt/etc/terminfo/x

Scan /mnt/etc/tivoconfig

Scan /mnt/lib

Scan /mnt/lib/xtables

Scan /mnt/opt

Scan /mnt/opt/tivo

Scan /mnt/platform

Scan /mnt/platform/Gen07

Scan /mnt/platform/Gen07/etc

Scan /mnt/platform/etc

Scan /mnt/platform/etc/hotplug

Scan /mnt/platform/etc/mempools

Scan /mnt/platform/etc/ppp

Scan /mnt/platform/lib

Scan /mnt/platform/lib/modules

Scan /mnt/platform/tvbin

Scan /mnt/platform/utils

Scan /mnt/platform/utils/DeviceList

Scan /mnt/sbin

Scan /mnt/tvbin

Scan /mnt/tvbin/flash

Scan /mnt/tvbin/flashapps

Scan /mnt/tvbin/flashapps/tivo_hddemo

Scan /mnt/tvbin/flashapps/tivo_hddemo/data

Scan /mnt/tvbin/flashapps/tivo_hddemo/icons

Scan /mnt/tvbin/flashapps/tivo_hddemo/images

Scan /mnt/tvbin/flashapps/tivo_hdui

Scan /mnt/tvbin/flashapps/tivo_hdui/data

Scan /mnt/tvbin/flashapps/tivo_hdui/icons

Scan /mnt/tvbin/flashapps/tivo_hdui/images

Scan /mnt/tvbin/flashtests

Scan /mnt/tvbin/splashscreens

Scan /mnt/tvbin/splashscreens/enUS

Scan /mnt/tvlib

Scan /mnt/tvlib/firmware

Scan /mnt/tvlib/firmware/cdc

Scan /mnt/tvlib/firmware/prism2

Scan /mnt/tvlib/font

Scan /mnt/tvlib/font/dtvcc

Scan /mnt/tvlib/idl

Scan /mnt/tvlib/itcl3.2

Scan /mnt/tvlib/misc

Scan /mnt/tvlib/tcl

Scan /mnt/tvlib/tcl/encoding

Scan /mnt/tvlib/tcl/http

Scan /mnt/tvlib/tcl/http1.0

Scan /mnt/tvlib/tcl/msgcat

Scan /mnt/tvlib/tcl/opt

Scan /mnt/tvlib/tcl/reg

Scan /mnt/tvlib/tcl/tcldom

Scan /mnt/tvlib/tcl/tcllib

Scan /mnt/tvlib/tcl/tcllib/base64

Scan /mnt/tvlib/tcl/tcllib/cmdline

Scan /mnt/tvlib/tcl/tcllib/comm

Scan /mnt/tvlib/tcl/tcllib/counter

Scan /mnt/tvlib/tcl/tcllib/crc

Scan /mnt/tvlib/tcl/tcllib/csv

Scan /mnt/tvlib/tcl/tcllib/des

Scan /mnt/tvlib/tcl/tcllib/exif

Scan /mnt/tvlib/tcl/tcllib/fileutil

Scan /mnt/tvlib/tcl/tcllib/ftp

Scan /mnt/tvlib/tcl/tcllib/inifile

Scan /mnt/tvlib/tcl/tcllib/log

Scan /mnt/tvlib/tcl/tcllib/math

Scan /mnt/tvlib/tcl/tcllib/md4

Scan /mnt/tvlib/tcl/tcllib/md5

Scan /mnt/tvlib/tcl/tcllib/md5crypt

Scan /mnt/tvlib/tcl/tcllib/mime

Scan /mnt/tvlib/tcl/tcllib/multiplexer

Scan /mnt/tvlib/tcl/tcllib/report

Scan /mnt/tvlib/tcl/tcllib/sha1

Scan /mnt/tvlib/tcl/tcllib/struct

Scan /mnt/tvlib/tcl/tcllib/uri

Scan /mnt/tvlib/tcl/tcltest

Scan /mnt/tvlib/tcl/tclxml

Scan /mnt/tvlib/tcl/tv

Scan /mnt/var

Scan /mnt/proc

Scan /mnt/install

Scan /mnt/dist

Scan /mnt/mnt

Scan /mnt/mnt/cdrom

Scan /mnt/mnt/flash

Scan /mnt/initrd

Scan /mnt/sys

Scan /mnt/db

Scan /mnt/dev

Scan /mnt/dev/pts

Removing DISABLE_HDCP=1

Iteration complete

Synchronizing SCSI cache for disk sda:

Restarting system.

Omikron
04-05-2010, 02:12 PM
TSOP56 adapter has arrived!

http://farm5.static.flickr.com/4015/4493738637_164bf4b476.jpg

ronnythunder
04-05-2010, 05:39 PM
well, here's hoping that, if they put in that many new chain-of-trust links, something didn't get tested enough and omikron will be having lots of happy prom days soon. :)

ronny

Omikron
04-05-2010, 05:50 PM
Found while browsing the flash:


Kernel release keypc-‹8u:*#“–ak*A†This prime number is brought to you by Dave Platt of TiVo Inc.‚Z1"žZ|"Q%>p;~q^N^‰0!6YweR՝y9zx`zz׍ZP@7T†La"?h6>i.|–fV,-~K`Ox$4‹D‘+TV... the Porridge bird ...r%^‰$^ƻj”N‰@0—B‰.›Y˜Wenn ist das Nunstck git und Slotermeyer? Ja! ... Beiherhund das Oder die Flipperwaldt gersputYes folks, your TiVo is covertly killing Nazi's using Monty Python's "Killer Joke"! :-D

http://en.wikipedia.org/wiki/The_Funniest_Joke_in_the_World

phdeez
04-05-2010, 06:57 PM
Omikron- Awesome work so far! A damn shame you'll need to read each prom, change the data and then write it back to it to hack it. Obviously a 'piggyback' method won't work here since you'll probably need that serial on the bottom of the chip.

Glad to hear the serial header is the same as a TivoHD... now I've got one more use for it!! :)

Good luck with the rest of it!

Omikron
04-05-2010, 07:05 PM
Omikron- Awesome work so far! A damn shame you'll need to read each prom, change the data and then write it back to it to hack it. Obviously a 'piggyback' method won't work here since you'll probably need that serial on the bottom of the chip.

Glad to hear the serial header is the same as a TivoHD... now I've got one more use for it!! :)

Good luck with the rest of it!

Concerns about the piggyback method are the least of our worries at the moment. Right now we still fear that any change made to the StrataFlash whatsoever will result in a non-boot situation, as the CPU may likely be checking the flash in some way prior to allowing it to execute.

IF a hardware hack is possible, the original chip will have to be read as it contains unique crypto keys and the TSN specific for that unit.

The serial number on the bottom of the chip is not needed, as it appears to be engraved at Intel. All of the blank StrataFlash chips I got from DigiKey have the same serial numbering scheme. The StrataFlash chip also has a unique identifier permanently burned into at at the Intel factory, differentiating it from other chips.

Omikron
04-07-2010, 01:36 PM
The boot code on the StrataFlash chip seems to be locked up pretty tight.

In-depth investigation and tests have revealed that the CPU checks for validity of the flash before executing code from it. We still have much more to take a look at, but it would seem we'll be fighting an uphill battle. I'm not willing to say that it's going to be impossible yet, but it's certainly going to be difficult.

Omikron
04-07-2010, 02:22 PM
Alright folks, I'm going to have to go on another hiatus for a few weeks. The Gen07 platform has sucked up a good deal of my time, and I feel we've got some really good work done so far.

HUGE thanks to the following people for their donations towards development hardware:


B.N. - I don't know your DDB handle and didn't want to post your name.
djl
Jamie
dcbarry
ray08


Without your donations we would not have been able to afford the programming hardware.

I won't be able to start working on the platform again until next month, but in the mean time other highly awesome DDB members are continuing work in the background. A lack of updates here does not equate to a lack of progress on the platform.

BTUxNine, Jamie, tivo4mevo, tivotechie, jt1134, thank you all for your hard work and support. See you all in a few weeks. :-)

bkdtv
04-09-2010, 02:17 PM
Either way, here's the initial PROM boot log from the messages log:


Mar 31 20:52:52 (none) syslogd 1.5.0: restart.
Mar 31 20:53:25 (none) Stats: == System startup resource statistics ==
Mar 31 20:53:25 (none) Stats: ++ System build version numbers ++
Mar 31 20:53:25 (none) Stats: b-14-1-mr @384589 2010.03.19-1443 release-mips_k26 [] ARM_IDL_FREEZE CDDB_QUERY DCT_SERIAL DSS_SERIAL HPK IDL_FREEZE IRBLAST LOCAL_CALYPSO_SERVER LOCAL_MP3_PLAYER LOCAL_MUSIC_PLAYER LOCAL_PHOTO_VIEWER LOCAL_WMA_PLAYER MACROVISION MULTI_ROOM_VIEWING PERF_LOGGER PERF_LOGGER_USER_STATS PTHREADS_TMK REQUIRE_PRODUCTION_SPIGOT_LINEAGE SANITIZE_LOGS STRONG_CRYPTO T2KSOURCE US_CABLE_AUTO_DETECT WMDRMPD
Mar 31 20:53:25 (none) Stats: 2010.03.19-1443 14.1-01-3
Mar 31 20:53:25 (none) Stats: PROM version: Gen07 release 1.00 (2009-10-20 14:09:37)
Mar 31 20:53:25 (none) Stats: Version : Gen07 release 1.00 (2009-10-20 14:09:37) SHA : 356515097AED79CCEC5097DA723F8FE654826A83
Mar 31 20:53:25 (none) Stats: System Serial Number: 746XXXXXXXXXX
Mar 31 20:53:25 (none) Stats: Linux version 2.6.18-5.1 (build@buildmaster74) (gcc version 3.3.4) #1 Mon Mar 15 10:01:56 PDT 2010
Mar 31 20:53:25 (none) Stats: ++ Memory usage ++
Mar 31 20:53:25 (none) Stats: MemTotal: 329200 kB
Mar 31 20:53:25 (none) Stats: MemFree: 256240 kB
Mar 31 20:53:25 (none) Stats: Buffers: 1456 kB
Mar 31 20:53:25 (none) Stats: Cached: 49300 kB
Mar 31 20:53:25 (none) Stats: SwapCached: 0 kB
Mar 31 20:53:25 (none) Stats: Active: 18500 kB
Mar 31 20:53:25 (none) Stats: Inactive: 36876 kB
Mar 31 20:53:25 (none) Stats: HighTotal: 0 kB
Mar 31 20:53:25 (none) Stats: HighFree: 0 kB
Mar 31 20:53:25 (none) Stats: LowTotal: 329200 kB
Mar 31 20:53:25 (none) Stats: LowFree: 256240 kB
Mar 31 20:53:25 (none) Stats: SwapTotal: 131064 kB
Mar 31 20:53:25 (none) Stats: SwapFree: 131064 kB
Mar 31 20:53:25 (none) Stats: Dirty: 88 kB
Mar 31 20:53:25 (none) Stats: Writeback: 0 kB
Mar 31 20:53:25 (none) Stats: AnonPages: 4656 kB
Mar 31 20:53:25 (none) Stats: Mapped: 9384 kB
Mar 31 20:53:25 (none) Stats: Slab: 11936 kB
Mar 31 20:53:25 (none) Stats: PageTables: 864 kB
Mar 31 20:53:25 (none) Stats: NFS_Unstable: 0 kB
Mar 31 20:53:25 (none) Stats: Bounce: 0 kB
Mar 31 20:53:25 (none) Stats: CommitLimit: 295664 kB
Mar 31 20:53:25 (none) Stats: Committed_AS: 33216 kB
Mar 31 20:53:25 (none) Stats: VmallocTotal: 1048524 kB
Mar 31 20:53:25 (none) Stats: VmallocUsed: 3536 kB
Mar 31 20:53:25 (none) Stats: VmallocChunk: 1041352 kB
Mar 31 20:53:25 (none) Stats: ++ CPU info ++
Mar 31 20:53:25 (none) Stats: system type^I^I: BCM97xxx Settop Platform
Mar 31 20:53:25 (none) Stats: build target^I^I: unknown
Mar 31 20:53:25 (none) Stats: processor^I^I: 0
Mar 31 20:53:25 (none) Stats: cpu model^I^I: BMIPS4380 V4.4 FPU V0.1
Mar 31 20:53:25 (none) Stats: cpu MHz^I^I^I: 402.43
Mar 31 20:53:25 (none) Stats: BogoMIPS^I^I: 402.43 ( udelay_val : 201216 HZ = 1000 )
Mar 31 20:53:25 (none) Stats: wait instruction^I: yes
Mar 31 20:53:25 (none) Stats: microsecond timers^I: yes
Mar 31 20:53:25 (none) Stats: tlb_entries^I^I: 32
Mar 31 20:53:25 (none) Stats: extra interrupt vector^I: yes
Mar 31 20:53:25 (none) Stats: hardware watchpoint^I: no
Mar 31 20:53:25 (none) Stats: ASEs implemented^I: mips16
Mar 31 20:53:25 (none) Stats: VCED exceptions^I^I: not available
Mar 31 20:53:25 (none) Stats: VCEI exceptions^I^I: not available
Mar 31 20:53:25 (none) Stats: RAC setting^I^I: Unknown
Mar 31 20:53:25 (none) Stats: unaligned access^I: 0
Mar 31 20:53:25 (none) Stats: rdhwr/brdhwr traps^I: 0 / 0
Mar 31 20:53:25 (none) Stats: cycle counter frequency^I: 27046875
Mar 31 20:53:25 (none) Stats: ++ Module info ++
Mar 31 20:53:26 (none) Stats: router 68608 0 - Live 0xc005d000
Mar 31 20:53:26 (none) Stats: ubuddy 7808 0 - Live 0xc0017000
Mar 31 20:53:26 (none) Stats: pod 15680 2 - Live 0xc003a000
Mar 31 20:53:26 (none) Stats: tv_bcm7405 37056 0 - Live 0xc0052000
Mar 31 20:53:26 (none) Stats: bcm7405 2986848 65 tv_bcm7405, Live 0xc0426000
Mar 31 20:53:26 (none) Stats: tr 4736 2 - Live 0xc002a000
Mar 31 20:53:26 (none) Stats: nxp7164 47840 12 - Live 0xc0045000
Mar 31 20:53:26 (none) Stats: drx 234640 22 - Live 0xc0080000
Mar 31 20:53:26 (none) Stats: ircatch 9344 0 - Live 0xc002f000
Mar 31 20:53:26 (none) Stats: frontpanel 2752 1 ircatch, Live 0xc001a000
Mar 31 20:53:26 (none) Stats: i2c 9024 2 ubuddy,drx, Live 0xc0026000
Mar 31 20:53:26 (none) Stats: softi2c 9088 1 bcm7405, Live 0xc0022000
Mar 31 20:53:26 (none) Stats: gpio 10688 5 pod,drx,softi2c, Live 0xc001e000
Mar 31 20:53:26 (none) Stats: ++ Device info ++
Mar 31 20:53:26 (none) Stats: Character devices:
Mar 31 20:53:26 (none) Stats: 1 mem
Mar 31 20:53:26 (none) Stats: 2 pty
Mar 31 20:53:26 (none) Stats: 3 ttyp
Mar 31 20:53:26 (none) Stats: 4 ttyS
Mar 31 20:53:26 (none) Stats: 5 /dev/tty
Mar 31 20:53:26 (none) Stats: 5 /dev/console
Mar 31 20:53:26 (none) Stats: 5 /dev/ptmx
Mar 31 20:53:26 (none) Stats: 10 misc
Mar 31 20:53:26 (none) Stats: 21 sg
Mar 31 20:53:26 (none) Stats: 30 tvbcmdriver
Mar 31 20:53:26 (none) Stats: 33 nexus
Mar 31 20:53:26 (none) Stats: 97 ubuddy
Mar 31 20:53:26 (none) Stats: 99 i2c
Mar 31 20:53:26 (none) Stats: 104 router
Mar 31 20:53:26 (none) Stats: 108 ppp
Mar 31 20:53:26 (none) Stats: 111 pod
Mar 31 20:53:26 (none) Stats: 112 drx
Mar 31 20:53:26 (none) Stats: 114 tr
Mar 31 20:53:26 (none) Stats: 121 saa7164
Mar 31 20:53:26 (none) Stats: 127 ircatch
Mar 31 20:53:26 (none) Stats: 128 ptm
Mar 31 20:53:26 (none) Stats: 136 pts
Mar 31 20:53:26 (none) Stats: 180 usb
Mar 31 20:53:26 (none) Stats: 189 usb_device
Mar 31 20:53:26 (none) Stats: 243 gioctl
Mar 31 20:53:26 (none) Stats: 246 gpio
Mar 31 20:53:26 (none) Stats: 247 frontpanel
Mar 31 20:53:26 (none) Stats:
Mar 31 20:53:26 (none) Stats: Block devices:
Mar 31 20:53:26 (none) Stats: 1 ramdisk
Mar 31 20:53:26 (none) Stats: 8 sd
Mar 31 20:53:26 (none) Stats: 65 sd
Mar 31 20:53:26 (none) Stats: 66 sd
Mar 31 20:53:26 (none) Stats: 67 sd
Mar 31 20:53:26 (none) Stats: 68 sd
Mar 31 20:53:26 (none) Stats: 69 sd
Mar 31 20:53:26 (none) Stats: 70 sd
Mar 31 20:53:26 (none) Stats: 71 sd
Mar 31 20:53:26 (none) Stats: 128 sd
Mar 31 20:53:26 (none) Stats: 129 sd
Mar 31 20:53:26 (none) Stats: 130 sd
Mar 31 20:53:26 (none) Stats: 131 sd
Mar 31 20:53:26 (none) Stats: 132 sd
Mar 31 20:53:26 (none) Stats: 133 sd
Mar 31 20:53:26 (none) Stats: 134 sd
Mar 31 20:53:26 (none) Stats: 135 sd
Mar 31 20:53:26 (none) Stats: ++ Network device info ++
Mar 31 20:53:26 (none) Stats: Inter-| Receive | Transmit
Mar 31 20:53:26 (none) Stats: face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
Mar 31 20:53:26 (none) Stats: eth0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mar 31 20:53:26 (none) Stats: lo: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Thank you for posting this. That log confirms the second processor core is completely disabled (i.e. disabled in Linux).

When the second core is enabled, the log should look something like this:


++ CPU info ++
system type^I^I: BCM97xxx Settop Platform
build target^I^I: 7413-smp

processor^I^I: 0
cpu model^I^I: BMIPS4380 V4.4 FPU V0.1
cpu MHz^I^I^I: 402.43
BogoMIPS^I^I: 402.43
wait instruction^I: yes
microsecond timers^I: yes
tlb_entries^I^I: 32
extra interrupt vector^I: yes
hardware watchpoint^I: no
ASEs implemented^I: mips16
VCED exceptions^I^I: not available
VCEI exceptions^I^I: not available
RAC setting^I^I: Unknown
unaligned access^I: 0
rdhwr/brdhwr traps^I: 0 / 0
cycle counter frequency^I: 27046875

processor^I^I: 1
cpu model^I^I: BMIPS4380 V4.4 FPU V0.1
cpu MHz^I^I^I: 402.43
BogoMIPS^I^I: 402.43
wait instruction^I: yes
microsecond timers^I: yes
tlb_entries^I^I: 32
extra interrupt vector^I: yes
hardware watchpoint^I: no
ASEs implemented^I: mips16
VCED exceptions^I^I: not available
VCEI exceptions^I^I: not available
RAC setting^I^I: Unknown
unaligned access^I: 0
rdhwr/brdhwr traps^I: 0 / 0
cycle counter frequency^I: 27046875

That's what the log looks like for other Broadcom-based DVRs when the second core is enabled.

ciper
04-19-2010, 11:19 PM
Is the box with the "disabled core" logs running the latest OS?

bkdtv
04-20-2010, 12:42 PM
The core was disabled in the 14.0b software.

TiVo improved stability and performance in the new 14.0c software. Could someone post or check a serial log from that version, so we can see whether the second core was enabled?

Jamie
04-20-2010, 03:49 PM
TiVo improved stability and performance in the new 14.0c software. Could someone post or check a serial log from that version, so we can see whether the second core was enabled?No change. Still single core.

Jamie
05-20-2010, 09:54 AM
No change. Still single core.Still true with 14.4.

Omikron
06-07-2010, 01:36 AM
I don't suppose we could get this thread moved to the newly created Series4 forum, could we?

moar.piggies
06-25-2010, 09:53 PM
The series 4 hacking work is really awesome - keep it up! I've really enjoyed this thread.

I'm new to the Tivo hacking world, but I'm curious about the goals. Making a prom hack seems to be a solid way to rewrite the static root of trust in such a way that you can do what you want to your Tivo -- cool, makes sense.

However, since the bootloader isn't locked and you can pass arguments to the kernel via a serial connection, can't you just bypass the root filesystem signature scan as long as you're willing to live with the Tivo controlled kernel?

(Is the kernel even being checked by the CPU? Does changing it with bootpage.x86 cause failure?)

Clearly, it makes sense to break open the whole chain of trust, from both a exploratory and persistence point of view, but I wonder if you could get a quick hack with a small device that you hang off of the TTL. When the +5v is powered, it starts sending Ctrl+C for n seconds. Then it transmits a bootloader cmd like:

boot -3 "root=/dev/sda4 noinitrd"

Unless Tivo compiled out the noinitrd cmdline option, that should bypass using the initrd. From reading the console log that was posted (again - thanks!), it looks like /linuxrc does a signature scan of the root filesystem prior to calling pivot_root, but maybe I'm reading too much into the output. If not and you moved over needed files from the initrd to the boot drive (or made a new root partition that was your own equivalent to the initrd but without the key checks), then it seems that you can break the chain of trust with a tiny serial dongle that just redirects the bootloader at power-on, then chills out. But I don't have a full view of which bits of the initrd and/or rootfs are being signature checked.

Obviously, that is a suboptimal solution, but I wonder if it would work as a starting point. If anyone gets a dump of the kernel (vmlinuz) and initrd, it'd be great to see it posted. Even if the noinitrd option isn't included, it'd be interesting to see which filesystems are supported. The kernel listed is not brand new so I bet you could compromise the kernel with filesystem metadata (since it looks like they just hash the files). (Make an exploit payload on /dev/sdaX then tell it root=THAT and compromise the kernel when it mounts it.)

Sorry if I've asked a bunch of already-known questions or am way off-topic. Feel free to disregard this post.

- mp

Jamie
06-26-2010, 12:18 AM
... (Is the kernel even being checked by the CPU? Does changing it with bootpage.x86 cause failure?)The BSP (Broadcom Secure Processor) checks the PROM. The PROM checks the kernel image. The kernel image initrd checks the filesystem. That's the essence of the chain of trust.


Unless Tivo compiled out the noinitrd cmdline option, ...They did. And the initrd checks the kernel cmdline to avoid, for instance, the old BASH_ENV hack.

The obvious exploits have been closed. You'll have to work a little harder than that to get in.

moar.piggies
06-26-2010, 01:33 PM
They did. And the initrd checks the kernel cmdline to avoid, for instance, the old BASH_ENV hack.

Cool.



The obvious exploits have been closed. You'll have to work a little harder than that to get in.

Just being hopeful! It sounded like password-less bootloader access was a regression, and it wasn't clear if any extras came with it. There is still room for any number of runtime attacks, but without device (or vmlinuz/initrd) access, that's harder to posit.

Thanks for responding -mp

ronnythunder
06-29-2010, 12:38 AM
I don't suppose we could get this thread moved to the newly created Series4 forum, could we?nope, sorry, can't be done. ;)

ronny

j4hill
07-02-2010, 11:03 PM
What would it take to change the CPU to break trust?
Would we have to change the rom as well?

Omikron
07-03-2010, 01:55 AM
What would it take to change the CPU to break trust?
Would we have to change the rom as well?

The short answer?

A lot. :-)

j4hill
07-04-2010, 02:49 AM
The short answer?

A lot. :-)

[FONT="Comic Sans MS"]I was thinking we could put a short boot in the CPU rom, break trust, and do the rest from disk without reading the rom at all. Big parts of the rom may have to be moved to disk where they could be modified and run from there. Would rather not have to mess with the rom too If we had to change the CPU.

Changing the CPU is probalbly beond the scope of a proctical hack.

We can read the rom, can we read the CPU rom as well?
What ever needed functionality besides security would need to be moved to disk.
[/font|

AlphaWolf
07-04-2010, 05:59 AM
From the sound of things this wouldn't be practical without another killhdinitrd style exploit, or at least some kind of kernel level exploit that can be done prior to tivoapp loading. (anything after would require hacks that are broken with software updates)

j4hill
08-03-2010, 01:51 AM
Has anyone been able to get a non Tivo expansion drive to work? I would like to plug 2 TB in to each of mine... Can I just hook up a drive or do I have to pay money some place to get the drives "configured", what ever that entails?

ciper
08-09-2010, 05:17 AM
Perhaps we shouldn't assume the second core has been disabled because of instability or lack of testing. What if security issues are the reason its not currently enabled?

drmuzik: No offense intended but CCI problems (especially with Time Warner) and the lack of a work around for the TiVo Premiere are both common knowledge in the TiVo world. It might have been better if you had asked the day before you bought the unit!

I'm curious why you didn't get a TiVo HD?

Omikron
08-24-2010, 12:18 PM
Let's try to keep this thread on-topic. :-)

ripple
08-25-2010, 01:34 PM
Slightly OT, but: Since there was a post earlier in this thread asking, and there aren't any threads in the Series 4 Support forum, I'll note that over on TCF, there's a Java-based tool (currently known as "jmfs") that allows for expansion of Premiere drives--yes, S4 uses a slightly different set of MFS parameters and available tools that previously worked for TiVo HD didn't work for Premiere. I'm planning to test it this weekend by replacing the drives of two NIB Premieres with 2TB drives.

Not posting a URL, but PM me if that's needed.

EDIT: Fix sentence that sense not make.

ronnythunder
08-27-2010, 06:35 PM
i've relocated the "premier vs. tivo hd" posts to a new thread in the support forum - please keep this thread on topic as development. since the jmfs info is relevant, i'll leave it here for now.

ronny

pmiranda
09-01-2010, 05:55 PM
Giving this thread a poke... I saw that swapping flash devices between boxes doesn't work since a portion of the image is unique to each box, but has it been confirmed that copying a complete image onto a fresh flash chip doesn't boot? ie... is the unique information from each blank chip part of the chain of trust?

Darr247
09-20-2010, 03:03 AM
Found while browsing the flash:

[CODE snipped]
Yes folks, your TiVo is covertly killing Nazi's using Monty Python's "Killer Joke"! :-D




"Why does the Porridge bird lay its eggs in the air?"

is firesign theater, not python. FWIW. :)

There are some mods I'd like to make to my premiere XL, but I think I'll fiddle with an S3/HD first, then probably get a used premiere to tweak.

Omikron
09-20-2010, 11:25 PM
"Why does the Porridge bird lay its eggs in the air?"

is firesign theater, not python. FWIW. :)

There are some mods I'd like to make to my premiere XL, but I think I'll fiddle with an S3/HD first, then probably get a used premiere to tweak.

Yes, but there is no full quote regarding the Porridge bird in the flash. Only the words "the Porridge Bird". The actual text that follows (German) is Monty Python.

lrhorer
10-16-2010, 04:09 PM
Yes, but there is no full quote regarding the Porridge bird in the flash. Only the words "the Porridge Bird". The actual text that follows (German) is Monty Python.
Actually, it's not German. It's gibberish that sounds like German, or if you will that contains a handful of German words.

gssincla
12-02-2010, 09:28 PM
I would like to get at the file system of the Premiere hard drive. I tried mounting the drive on my Ubuntu box and well, that didnt work well. If there a trick to this?

tivo4mevo
12-03-2010, 08:46 AM
Yes, there is a trick for your kernel to recognize the partitions on a tivo drive: tivopart.

See this thread for a recent discussion and details: link (http://www.dealdatabase.com/forum/showthread.php?t=63810)

gssincla
12-04-2010, 09:15 PM
Thanks tivo4mevo. I'll try that out tomorrow morning. My wife will kill me if i take the tivo offline tonight :)

Omikron
12-17-2010, 01:04 PM
Just checking in for everyone. We are currently doing some holiday Series4 hacking behind the scenes here at our secret underground lair. No specifics yet, but there is hope. :-)

djl
12-17-2010, 04:35 PM
Thanks for letting us know, Omikron. I'd given up hope!


Just checking in for everyone. We are currently doing some holiday Series4 hacking behind the scenes here at our secret underground lair. No specifics yet, but there is hope. :-)

garrubal
12-27-2010, 12:10 AM
Just checking in for everyone. We are currently doing some holiday Series4 hacking behind the scenes here at our secret underground lair. No specifics yet, but there is hope. :-)

That's hard core, Omikron. Good luck!

When you say "we", does that mean your hacking away with someone else? That's would be good, because you can bounce off ideas, and if you're going down the wrong path, the other person may be able to point it out.

marcianofan
02-11-2011, 06:19 PM
Hi guys...sorry to be the dumb guy showing up late to the party without knowing there was a party, but...

I basically this week got a Tivo premier thinking that it would at least work as well as my S2, but due to CCI byte 0x02 I can't transfer most of my recordings, which is absolutely essential to my enjoyment of the unit. So I apologize for not pouring over the forums to find this out myself- frankly I have trouble understanding the discussion and sorting out the things that are relevant to my problem and not, but I'm wondering if somebody can really simply answer these questions for me:

1) Is there a hack or technique currently in existence that will allow me to transfer prior CCI 0x02 recordings already on my Premier to my computer or my S2? How about future 0x02 flagged recordings?

2) If so, simply put, how can I get it and how can I make it work?

Unfortunately, my cable company has ALL digital programming flagged 0x02, so my new Premier is basically worthless to me as is and it drives me absolutely crazy.

mike_s
02-11-2011, 08:02 PM
There's no publicly known way to hack a Premier (S4). I'm pretty sure that's where the prohibition is enforced. So, sorry, you're SOL.

lrhorer
02-12-2011, 05:03 AM
That's the main reason why I do not recommend purchasing a Premier at this time.

lrhorer
02-12-2011, 05:05 AM
Just checking in for everyone. We are currently doing some holiday Series4 hacking behind the scenes here at our secret underground lair. No specifics yet, but there is hope. :-)
How does your announced hiatus affect this effort?

Omikron
02-12-2011, 12:30 PM
How does your announced hiatus affect this effort?

I will still remain in contact with others on the project and continue work during my hiatus.

lrhorer
02-12-2011, 05:42 PM
Most excellent! Thanks.

talmania
02-15-2011, 06:37 PM
Most excellent! Thanks.

Good news indeed! I'm curious what the odds are that someday we'll end up with the prom mod equivalent for an S4? Or will Tivo have moved onto another series by then....just curious about what others think.

Not that I'm in a rush to replace though...I've picked up another couple HD's that I've got to send off to Omikron! :D Seriously tempted to try my hand at surface mount soldering. With the cost of HD's so low it's not like I'd be out serious $$. :eek: :D

philhu
04-06-2011, 02:04 PM
I've quietly started using a hauppauge hd-pvr to capture my HD Tivo programs firom my premiere. It handle hd component in and gives you a MP4-H.264 output file with ac3 sound!

So if you really need to get stuff off a tivo, here ya go!

basarfraz
04-13-2011, 03:26 AM
here is a nice information, so nice of you, it must be shared with other peoples, so keep it up in the future also.best regards.

basarfraz
04-13-2011, 03:29 AM
Here is nice information.

ray08
06-24-2011, 04:59 PM
No updates in 2.5 months...not a good sign! Is the S4 ever going to be hacked? I see Tivo is trying to get a new Premier Elite into the market. (Quad tuners) Guess that will be locked down too. Glad I bought that second S3.

lrhorer
06-26-2011, 06:13 PM
Patience. It's not an easy hack.

Omikron
06-27-2011, 02:32 AM
Patience. It's not an easy hack.

It isn't, and there's a lot of...tact...that goes into handling release of information.

While I can't speak for everyone, I can tell you that a few of us are continuing to peck away at the S4 to see what can be done within the realm of possibility.

AlphaWolf
06-28-2011, 01:39 AM
I am guessing something akin to a modchip?

mrpenguin
08-03-2011, 10:05 AM
Have been out of the loop for a long time now, but wow! they really did not want anyone playing with this box! I agree that between the cable operators and net providers (netflix, etc) that is the main reason for locking this down. But also to prevent the dups by other companies maybe. Nothing related to stuff we want to do like customize their stuff with web interface or other transfers.

Great job all, and sorta glad I am too cheap to get the new box!

sysmai
08-11-2011, 05:08 AM
I am not one to ever attempt to do illegal things just hate modded equipment with potential for so much more (ie. playing dvds and much more on old wii systems. a little birdie that works for a provider that uses the TiVo series 4 as its newest member of the dvr family. i am field testing now prior to release in my area. first thing i notice is the vod goes proprietary as soon as you get the box. like amazon vod is a great feature ive seen on personal owned boxes. of course no go on mine. i know that the boxes are loaded prior to leaving the warehouse by use of a usb dongle. of course these are well protected. but from skimming through the thread i keep seeing talk of hardmods.ci may not be a coder but ive seen emulated dongles used on ps3 and cubase. just wondering if that would help direction. all i want is what i already pay for. just in one device rather than 3.

another note: i have the series 4/hd but when i look on the coding used for hitting the box and its response is premier. i would really like to push this box to the max. provider vod. netflix. amazon allin one spot. thanks for listening to me ramble

Soapm
09-11-2011, 05:58 PM
Is the new Premier Elite with 4 tuners considered series 4? http://www.tivo.com/products/tivo-premiere-elite/index.html

Omikron
09-13-2011, 02:47 AM
Is the new Premier Elite with 4 tuners considered series 4? http://www.tivo.com/products/tivo-premiere-elite/index.html

Yes, this would still be considered to be the Series4 platform.

Soapm
09-13-2011, 11:49 PM
Sorry to ask dumb questions but where do I go to donate Omikron? I just got a premier and am hoping to have TWP someday. That was one great and convenient application...

Nevermind, I found it in the first post but now paypal is saying your email address isn't valid so won't let me donate.

Omikron
09-14-2011, 03:11 AM
Sorry to ask dumb questions but where do I go to donate Omikron? I just got a premier and am hoping to have TWP someday. That was one great and convenient application...

Nevermind, I found it in the first post but now paypal is saying your email address isn't valid so won't let me donate.

I had no idea this problem was even happening as no one has mentioned it to me yet. I just spent the past half hour trying to fix the error but to no avail. Others also seem to have had similar problems with no specific solutions yet.

In the mean time, if anyone wants to donate to the hardware fund just send it directly to my email address at omikron-at-brokenpixel-dot-net. Make sure to send it as a "Personal" payment instead of a standard one otherwise fees get involved. :-/

Omikron
09-14-2011, 03:24 AM
Donation button now fixed. :-)

Omikron
10-12-2011, 10:07 PM
Premiere Elite has been requisitioned. More hardware details coming soon when I return in late October...

unitron
10-26-2011, 09:07 AM
Omikron,

Did you ever solve the "hooking up a Premiere drive to a PC and looking at the partition map makes it unbootable" problem?

If so, is there somewhere I can read about it?

kmt
03-11-2012, 07:24 PM
Nothing here in 5 months. Is there still work going on?

T_RJ
03-16-2012, 09:52 PM
Just took the plunge for a Premiere elite, any developments on the series 4

T_RJ
03-25-2012, 10:31 AM
I just picked up a premiere xl with a bad image on the drive.
Tivo will boot up to "just a few more minutes" than reboots.
I have tested the drive, kickstart 54 and it is good.
I have copied the drive to a new drive, no dice.
Kickstart 57,51, 52 no dice.
Kickstart 58 does the same as 52.
Kickstart 56 does not work.
Any way to force the Tivo to call home and download new software?
Or is my only option to copy from a working Tivo?

unitron
03-25-2012, 10:39 AM
I just picked up a premiere xl with a bad image ob the drive.
Tivo will bot up to "just a few more minutes" than reboots.
I have tested the drive, kickstart 54 and it is good.
I have copied the drive to a new drive, no dice.
Kickstart 57,51, 52 no dice.
Kickstart 58 does the same as 52.
Kickstart 56 does not work.
Any way to force the Tivo

Get another Premiere XL, take out the drive, hook it and the drive from the first one to a computer, boot with a cd with dd, or dd_rescue, or ddrescue on it and make a byte for byte copy.

At this point the only image for a Series 4 drive is another drive from the same model.

Do not under any circumstances let Windows boot with either drive attached. (that's probably how the previous owner screwed up the drive in the first place)

What did you use to (apparently unsuccessfully) copy the drive to the new drive?

T_RJ
03-25-2012, 10:46 AM
I used JMFS to copy and the copy behaves the same as the original drive.
I guess I will have to borrow one from Best Buy and copy the drive than return it.
Are there any images available, or is DD the only way?
The Tivo boots but never all the way.
Wiil my Elite drive work in the XL?
I could copy that.

T_RJ
03-25-2012, 10:51 AM
Any way to mount the drive and have a look at the logs to see what the issue is?
Or connect a serial connection to watch the boot process and see where it fails?

T_RJ
03-25-2012, 02:13 PM
Well I borrowed a Premiere XL from best buy.
Copying drive now.
Now the 4 hour wait.....

T_RJ
03-25-2012, 08:35 PM
Ok that fixed it!
Now going to make another copy and then return the "loaner" from Best Buy!

Thinkdiff
03-29-2012, 04:23 AM
Finally upgraded to the TiVo Elite.. ready for some hacking ;)

I'm not sure if I have the heart to start messing with a $800 piece of equipment though. Maybe I'll pick up a $50 Premiere to do some testing.

T_RJ
03-29-2012, 06:37 AM
I have a premiere coming I picked up off Ebay for $40 delivered.
Plan on using it for "Experimenting".
Going to sell the premiere XL with a 2 gig drive upgrade and one of my 2 gig HD's to help fund the new Tivo's.

T_RJ
03-29-2012, 10:02 AM
Will a Premiere XL image work on a Premiere?

tivo4mevo
03-29-2012, 08:26 PM
I'll speculate no, based upon the inability to successfully run a TiVoHD XL image on a TiVoHD (see this post here: link (http://www.dealdatabase.com/forum/showthread.php?61004-Load-THD-slices-and-loopsets-into-a-THDXL-image-to-convert-it-to-a-true-THD-image)). IIRC, the image would appear to work, but unit would run out of guidedata (the belief being that the discrepancy between the unit's TSN and that of the software "ID" caused the guidedata phone home to fail).

The solution was to update an XL image to include the MFS objects from a non-XL image, thus causing the software "ID" to report as non-XL. This could be repeated for the premiere, but is complicated as the MFS extraction/injection work would need to be done by transporting the drive to a hackable unit (Series3). I think the "partition coalesce" methods to utilize a 2TB drive in a premiere (e.g., JMFS method) are the easier route.

T_RJ
03-29-2012, 08:33 PM
It was more curiosity than necessity. I have an elite, XL and have a premiere on the way.
Will probaly just sell the XL with an upgraded 2TB hard drive and keep the elite and premiere.

lgkahn
08-29-2012, 04:41 PM
i assume this is dead and the series 4's aer not hackable currently

Rakeesh
11-05-2012, 04:25 AM
i assume this is dead and the series 4's aer not hackable currently

There's a way to hack them, it's just a question of practicality.

http://www.dealdatabase.com/forum/showthread.php?65778-A-thought-occurred-to-me

E.g. is the cost of doing such a setup worth it. It's not a simple matter of can somebody design the necessary component, but rather the demand may be so low as to be cost prohibitive to manufacture. Plus there's the issue of whether or not tivo would sue anybody who does manufacture one.

Unless there was an open source design or something, and the onus was on you to build your own using design and code provided. This is the way the original tivonet was.

topgun98
11-08-2012, 09:13 PM
There's a way to hack them, it's just a question of practicality.

http://www.dealdatabase.com/forum/showthread.php?65778-A-thought-occurred-to-me

E.g. is the cost of doing such a setup worth it. It's not a simple matter of can somebody design the necessary component, but rather the demand may be so low as to be cost prohibitive to manufacture. Plus there's the issue of whether or not tivo would sue anybody who does manufacture one.

Unless there was an open source design or something, and the onus was on you to build your own using design and code provided. This is the way the original tivonet was.

Can such a prototype be built for less than $10,000? If so, I am very interested in making this happen.

I'm not worried about a lawsuit. I own several businesses, and so, as a matter of course, most of my assets are not in my name.

I don't, however, have the technical know-how required to pull this off. If anyone out there does, I'd love to hear from you.

djl
11-10-2012, 11:09 AM
Could a bounty bring back some of the hall-of-famers? Good luck topgun, keep us posted.

topgun98
11-15-2012, 01:27 AM
Could a bounty bring back some of the hall-of-famers? Good luck topgun, keep us posted.

If you can tell me how to reach some of these hall-of-famers, or anyone with the required skills, please let me know. I'd be happy to have a discussion with someone about compensation for working on a project like this.

lrhorer
11-19-2012, 02:05 PM
Clearly you have not bothered to read the thread. That makes me wonder about how serious you are.

topgun98
11-21-2012, 06:49 PM
Clearly you have not bothered to read the thread. That makes me wonder about how serious you are.

I have, a good while ago, and I'm subscribed to it. I'm not sure what caused you to make that assumption, but thanks for your contribution.

lrhorer
11-21-2012, 08:24 PM
I have, a good while ago, and I'm subscribed to it. I'm not sure what caused you to make that assumption
Not an assumption, but a deduction. You are asking how to contact the people who produced the first couple of pages of this thread, which includes an outline for a method of donation to the cause.

topgun98
11-22-2012, 12:45 PM
Not an assumption, but a deduction. You are asking how to contact the people who produced the first couple of pages of this thread, which includes an outline for a method of donation to the cause.

If you can't tell from my post count, I'm fairly new to this forum. I can see who started the thread, but I have no way to know who has the skills to execute this properly, and I'm not going to blindly send thousands of dollars to anyone before I've had the chance to at least talk to them on the phone once or twice. If you feel differently then knock yourself out.

unitron
11-22-2012, 12:57 PM
That Donate link is to PayPal.

Instead of thousands of dollars, you can send them one penny and add a message with your contact info to the "you've got money" email PayPal will send them.

lrhorer
11-24-2012, 10:15 PM
If you can't tell from my post count, I'm fairly new to this forum. I can see who started the thread, but I have no way to know who has the skills to execute this properly, and I'm not going to blindly send thousands of dollars to anyone before I've had the chance to at least talk to them on the phone once or twice. If you feel differently then knock yourself out.
No offense intended (if you are even remotely who you say you are), but the very fact your post count is low combined with the fact you are claiming to have thousands of dollars to throw around makes me very, very nervous. The fact you speak in such an easy manner concerning your funding and WRT the notion of being sued makes me even more so. We have no way of knowing who you are, or whether your intent is genuine, malicious, or perhaps even nefarious. I would love nothing more than to be completely wrong in suspecting your motives and situation, but a simple purvey of the posts of the initial authors of this thread will tell you everything you need to know concerning their qualifications and capabilities. Their combined post counts add up to somewhere around the 10,000 mark, and even a casual perusal of some of those posts will tell one what one needs to know concerning their capabilities. The fact you have not engaged in even a perfunctory perusal of said posts would seem to speak volumes of your true intent, not to mention your credentials.

Again, nothing would thrill me more than to be proved completely wrong, here, but anyone who deals with a participant in your position would be very well advised to be exceedingly cautious. Of course, in fact, I doubt I really need to warn the people you seek of this. I suspect their alarm bells are going off just as loudly as mine.

huntson
01-01-2013, 11:05 PM
Not looking to troll or anything else for that matter. I also am not too worried about the legality of this and would be willing to throw a couple of Gs at this. While I want it to happen badly I would expect the folks who monitor this forum to contact me. I am not going to go that out of my way to find those who can possibly do this. To anyone reading who believes the Tivo Premiere DVRs can be hacked - message me and we'll get something started.

karpodiem
01-04-2013, 11:30 AM
For those willing to 'throw a couple G's at this' (I'm good for a single G)

bitcoin?

topgun98
02-07-2013, 12:19 PM
bitcoin?

That's a great idea! Using bitcoin, I can prove that I have funds available for this project.

Here's some bitcoin that I've got laying around:
http-blockchain.info-address (edit: address removed)
2,777 BTC = $133,296 USD

If anyone is in doubt, msg me and I will prove ownership by moving it or by signing a message with my private key.

Not everyone who has a low post count and who wants to liberate their TiVo is a troll.

Contact me if anyone is seriously interested in hacking the S4.

Omikron
02-07-2013, 08:21 PM
Can I just ask an oddball question to folk here?

If anyone has purchased an new premiere within the last couple of months, can you please look inside and take a photo of the PROM chip inside? The JS28F640P30B was discontinued years ago but all of the older Premiere's I've been working on have them. I'm curious if TiVo just bought a metric ton of them or if they switched to something else.

Omikron
02-07-2013, 08:43 PM
If possible, can someone post hi-res photos of the internals of the TiVo Premiere 4? As much as possible. Ideally, both sides of the motherboard would be good but I'll settle for just the top for now until I can get my hands on one.

topgun98
02-08-2013, 10:35 AM
I'm good for a single G

Want to split the cost of buying Omikron a Premiere 4 with me?
Or is anyone else willing and able to partially match investments like this?

Omikron
02-08-2013, 11:47 AM
Want to split the cost of buying Omikron a Premiere 4 with me?
Or is anyone else willing and able to partially match investments like this?

Before we start spending money, I'd like to continue bouncing around some ideas with the rest to see where money is most wisely spent. While the new quad tuner TiVo's do appear to have a completely new board layout and I am curious about their choice in PROM chip, I don't think there has been any major change in the security architecture, so a break on the regular S4's should still apply to the quad tuner models.

However, there will definitely be some new costs involved with continuing development.

Omikron
02-08-2013, 11:56 AM
One thing that we found during research in 2010 was that the new BCM7413 CPU has different security bits that can be set that enable or secure boot and disable the JTAG debug port on the board. One idea that was tossed around was to simply replace the CPU with a new CPU that doesn't have the OTP security bits programmed yet.

I've contacted a few suppliers and although most of them seem to have issued quotes in the range of 40 dollars per CPU, one of them is quoting 8 dollars per new BCM7413. The difficulty here, is that it's a fairly large BGA chip and requires specialized equipment and a good deal of labor to do. The cheapest IR rework equipment that I've found that will be able to reliably handle swapping the CPU out is in the $2000 range. :-(

I'm going to continue hunting around to see if I can get access to an IR rework station and pay machine time which should hopefully be cheaper than buying the unit outright.

GaveUp
02-11-2013, 04:14 PM
On the topic of the security, is there any central dumping ground for information or coordinating efforts (wiki, irc channel, etc.)? I've been debating picking up a premiere to poke around with but what's been keeping me back is a lack of any real info or source to obtain info on the hardware side of things (not a EE guy by any stretch of the word).

tivo4mevo
02-11-2013, 10:18 PM
This thread has the most information. Post any other questions you have here, and collectively folks can chime in with available information.

topgun98
02-12-2013, 06:42 AM
I'm going to continue hunting around to see if I can get access to an IR rework station and pay machine time which should hopefully be cheaper than buying the unit outright.

Honestly, I don't know what an "IR rework station" is or does, but if it would be helpful, I'll buy you one. I'm going to PM you my phone number.

Edit:

Omikron has exceeded their stored private messages quota and cannot accept further messages until they clear some space.

Omikron, please PM your phone number to me.

GaveUp
02-12-2013, 12:08 PM
This thread has the most information. Post any other questions you have here, and collectively folks can chime in with available information.

It's been a while since I've read through the thread, but the problem with threads this long is they aren't really great at organizing the information. For discussion sure.

A central place to document and organize the information various chips, link to datasheets (assuming they're publicly available), boot process documentation, software, etc. would be a good thing to have. For example, something like WiiBrew, WiiUBrew, The iPhone Wiki, BoxeeBoxWiki is what I was asking about.

tivo4mevo
02-12-2013, 03:58 PM
No disagreement on your points. The board facilitates discussion, but is not as good a repository. I believe there was a tivo wiki hosted elsewhere at one point, though unfortunately I don't have a link handy. I wasn't sure whether there was much of a community to benefit from a wiki, but perhaps my logic is wrong (having a decent wiki would usher in the interested and foster a community)...

In the absence of such a wiki (and to make good on my suggestion to pose your question), here's a rough run-down of the boot process any some history of some of the exploits from the past decade:

For Series 3 and earlier units

Reset->(1)PROM->(2)Kernel/RamDisk scanner->(3)rc.sysinit bash scripts

Each link in the chain verifies the integrity and authenticity of the next stage, so:

(1) The PROM code was authored by tivo, contained a SHA-1 self-integrity check and subsequently verifies a TiVo cryptographic (Elgamal) Signature of the Kernel (which resides in its own partition on the hard drive, either partition 3 or 6). You'll find patches to modify and neuter the PROM in this link here (http://www.dealdatabase.com/forum/showthread.php?56609-Master-PROM-Patch-Locations).

(2) Once the kernel is loaded, it mounts its bundled ramdisk image, which contains a filesystem scanner ("/linuxrc - autoscan"), which will, in turn, mount the Root filesystem (an ext2 filesystem residing in a partition on the tivo's hard disk one higher than the kernel, i.e., 4 or 7. It's worth noting that this Root filesystem contains all of the tivo's "application code"). The autoscanner contains SHA-1 hashes for each file in the filesystem, and will scan the entire filesystem to check for illegitimate files (or files in the wrong places). It attempts to repair or remove unrecognized files, and always triggers a reboot if the filesystem isn't correct.

(3) Assuming the filesystem is intact and valid, it passes control to the rc.sysinit bash (startup) scripts that live in /etc/rc.d/. These are separated into different stages (subdirectories) and one can easily peruse those scripts to see what is happening. It's worth noting that to best separate themselves from GPL source disclosure requirements, tivo have put nearly all of the functionality into /tvbin/tivoapp. A massive, multi-call, user-land executable that handles nearly everything from the UI, to scheduling, to recordings, to network daemons, etc. You'll see a lot of "tivoapp patch" thread, detailing patches to alter functionality.

For the Series 3 and earlier units, the PROM was a discrete chip on the mainboard, and was not flashable once soldered during manufacturing (the Series 1 units were in-circuit flashable, but are not covered here as they are more than a decade old). So the typical procedure was to desolder that chip, read out the PROM code, disassemble it, determine the necessary patches, and solder in a reprogrammed chip (or socket it for experimentation). After "socketing" the unit and inserting a patched PROM to ignore the result of the signature check, one could boot any kernel desired (there are threads with Jamie's pre-built, custom kernels).

There were several different sw-only exploits over time, and you'll see evidence of them in various threads. killinitrd was a program to replace the ramdisk bundled with the kernel with a blank ramdisk, which transforms a "stock" TiVo compiled kernel into a nearly identical one, though without the autoscanner. Thus, on a "socketed" or "PROMMED" unit, a killinitrd kernel would be suitable for booting.

There was a bash ENV exploit that allowed one to pass in kernel arguments and execute an arbitrary script, thus taking control. This was quickly closed, but it was possible to boot initial to the old, vulnerable software, and then chainload to newer software (monte).

killhdinitrd was a sw-only exploit that allowed one to modify a stock kernel in such a way that it disabled the autoscanner, but yet still passed the boot PROM's Elgamal signature check. TiVo quickly made changes to the newer kernels to remove this exploit, but the damage was done, as the PROM code couldn't be changed, and one could still boot an old, vulnerable kernel, and then chainload into a newer kernel/software (using the monte kernel module ported to MIPS by MuscleNerd).

killhdinitrd worked on Series 2 units (including the DirecTV HR10-250), however, since that, no one has released a sw-only exploit for models after that (Series 3 and Series 4).

For Series 4 units, tivo utilizes the Broadcom CPU's Secure Processor (BSP) checking

Reset->(0)BSP->(1)PROM(now the Boot Partition of onboard Flash)->(2)Kernel/RamDisk scanner->(3)rc.sysinit bash scripts

So nearly everything is the same, but the chain of trust is anchored in the Broadcom CPU itself, instead of in a (fairly easily removable and socketed) PROM chip. The BSP code is presumably metal mask ROM and is not easily studied, but it performs a check of the PROM code located in the Boot Partition of an onboard Flash also introduced with the premiere (see Omikron's descriptions of his steady hand earlier in this thread). The rest of the boot process after the BSP hands off control to the PROM/Boot Partition code remains largely the same as in previous generations.

Thus, Omikron suggests replacement of the Broadcom CPU as an attack. The CPU has fuses to enable/require BSP checking of the Boot Flash. If one were to order a generic CPU, those fuses wouldn't be set, and presumably, one could boot from a modified Boot Partition, breaking the chain of trust.

Please note that there are probably inaccuracies in my description (to be sure, some units' boot process diverge from this: e.g., DirecTV THR-22, Virgin Mobile Tivo etc.), but it should provide a conceptual framework to make better sense of some of the threads on the board.

tivo4mevo
02-12-2013, 04:27 PM
One idea that was tossed around was to simply replace the CPU with a new CPU that doesn't have the OTP security bits programmed yet.Another approach would be some sort of sata injection device (or computer). It would sit between the tivo and the hard disk. When the BSP code checks the kernel, the device supplies a valid kernel. When the tivo goes to execute that kernel (and this would hinge upon the tivo issuing a second SATA read request to load the kernel for execution), the device supplies a modified kernel. Similar concept to this attack detailed here: link (http://www.usenix.org/system/files/conference/woot12/woot12-final28.pdf). Though this might be sizable development effort.

Omikron
02-12-2013, 11:44 PM
Honestly, I don't know what an "IR rework station" is or does, but if it would be helpful, I'll buy you one. I'm going to PM you my phone number.

Edit:


Omikron, please PM your phone number to me.

PM issues have been fixed.

Omikron
02-12-2013, 11:48 PM
Another approach would be some sort of sata injection device (or computer). It would sit between the tivo and the hard disk. When the BSP code checks the kernel, the device supplies a valid kernel. When the tivo goes to execute that kernel (and this would hinge upon the tivo issuing a second SATA read request to load the kernel for execution), the device supplies a modified kernel. Similar concept to this attack detailed here: link (http://www.usenix.org/system/files/conference/woot12/woot12-final28.pdf). Though this might be sizable development effort.

It's interesting you bring this up, because this is precisely the type of device suggested by one of the other researchers back in 2010. Unfortunately, it seems that the amount of development that it would take to create a hardware proxy fast enough to handle SATA 3.0 speeds is significant, and the resultant hardware would likely be fairly cost prohibitive. Still, the idea remains on the table.

If that project progresses there will be a separate thread for it. ;-)

tivo4mevo
02-13-2013, 09:58 AM
Yea, I thought a bit more about a sata injection device, and even assuming some sort of inexpensive, embedded device to sit between the tivo and drive (similar to an Arduino), one would have to write an ATA Command set handler/driver, which is probably difficult.

Omikron
02-13-2013, 12:29 PM
Yea, I thought a bit more about a sata injection device, and even assuming some sort of inexpensive, embedded device to sit between the tivo and drive (similar to an Arduino), one would have to write an ATA Command set handler/driver, which is probably difficult.

Another possibility is not to worry about speed when in "ghost" mode or whatever we decide to call it. Since we don't really care about fast I/O during boot, we could use a cheaper, low-speed device to serve as proxy during boot, and then once all is clear, hand over full control to the disk and allow a direct connection.

jonbig
02-13-2013, 03:54 PM
The key is to robustly identify (if possible) the handover point from signals that come purely from the SATA bus. Perhaps a box like this might do the trick:

http://teledynelecroy.com/protocolanalyzer/protocolstandard.aspx?standardID=8&capid=103&mid=511

If it is possible, then figure out how to program an FPGA to look for the handover point and drive a SATA hardware switch to select between the real hard drive and a small FLASH SATA drive that contains the modified kernel. The modified kernel would know to issue a special ATA command to switch back to the disk drive that the FPGA would also look for.

Zirak
02-13-2013, 06:13 PM
In the absence of such a wiki (and to make good on my suggestion to pose your question), here's a rough run-down of the boot process any some history of some of the exploits from the past decade:




Awesome post. It brings me up to speed on this topic after being away for years.



The board facilitates discussion, but is not as good a repository.


In the absence of of a wiki, this information is sticky worthy if it gets future updates. Searching is really problematic as you often find an old post that has outdated and currently untrue information. It takes eons to determine the actual current state of affairs.

An unrelated topic, but case in point, I have been searching for hours to determine if a series 3 can do a 2tb+2tb drive setup and no definitive answer yet. Most searches say 1TB is the biggest you can do but weaknees sells a 2TB internal. This is merely empirically showing how the forum is a poor repository.

Although certainly more difficult, the SATA injection device seems the most interesting. It seems that once engineered that it would become difficult to implement additional security steps to defeat it, although certainly new models would require a modified device. This also has the added benefit of potentially pulling in more developers who are currently unwilling to take a soldering iron to their tivo.

My .02

jonbig
02-13-2013, 06:29 PM
Wouldn't you know it. I posted a link and all of the TiVo hacker nuts looking at it crashed it. :)

Omikron
02-13-2013, 06:37 PM
Wouldn't you know it. I posted a link and all of the TiVo hacker nuts looking at it crashed it. :)

Google Cache still works. ;-)

Omikron
02-13-2013, 06:44 PM
I'm *still* looking for high resolution photos of a quad tuner TiVo such as the Premiere 4, previously known as the Premiere Elite.

If one of you folk have these, please stop for a moment and post some complete photos of the various parts of the board.

Edit: This is the kind of thing that allows research efforts like this to stagnate. If you are interested in seeing this work, don't just lurk. Participate. If you don't have the time, donate. :-)

Omikron
02-13-2013, 07:05 PM
In case anyone was curious, we've now sacrificed a number of Premiere's while trying to extract hardware components for analysis.

This beaten and battered CPU is from number three:

7547

The battle scars you see were not inflicted by me, but by other research partners who have been trying to figure out a away to separate the die from the carrier. The acids we're using get very useless very quickly with all of that crap around it.

Omikron
02-13-2013, 07:30 PM
So here I am looking for extra chips to decap and I come along this: http://parts.americaii.com/PartDetail/93d408ccfa082e0b01bcec0aab4539e7/BCM7413ZKFEB01G

According to their very professional and trustworthy website, they have they carry the highest quality BCM7413ZKFEB01G available! :D

Oh man, I am so sick of these part search engines...

jonbig
02-13-2013, 07:38 PM
What would really be golden is if someone made a SATA to ATA over Ethernet adapter. With that and a bit of hacking on the linux aoe target software and you'd have a solution using the "read twice" hack approach. Unfortunately, it appears no one makes such a useful bit of hardware. Everything I've found only adapts in the other direction. What? Nobody wants to attach legacy clients to an AoE SAN?

Omikron
02-13-2013, 08:03 PM
What would really be golden is if someone made a SATA to ATA over Ethernet adapter. With that and a bit of hacking on the linux aoe target software and you'd have a solution using the "read twice" hack approach. Unfortunately, it appears no one makes such a useful bit of hardware. Everything I've found only adapts in the other direction. What? Nobody wants to attach legacy clients to an AoE SAN?

Your post made me smile because I went through the same thought process last week and probably performed the same searches you did just now. :-)

AlphaWolf
02-14-2013, 04:40 AM
oops duplicate

AlphaWolf
02-14-2013, 04:46 AM
Hmm...so people are entertaining my disk spoofing idea from several years back it seems :D


What would really be golden is if someone made a SATA to ATA over Ethernet adapter. With that and a bit of hacking on the linux aoe target software and you'd have a solution using the "read twice" hack approach. Unfortunately, it appears no one makes such a useful bit of hardware. Everything I've found only adapts in the other direction. What? Nobody wants to attach legacy clients to an AoE SAN?

I've been doing datacenter work recently and I've liked the idea of that. I just built a 4x3TB RAID-Z array using seagate st3000dm001 disks (I know, seagate - EVIL! but hey they were relatively cheap, thanks to best buy's generosity (http://slickdeals.net/f/5810572-Best-Buy-Coupon-50-off-100-In-Store-Purchases-via-Printable-Coupon-MasterCard-Required?p=57012464#post57012464).) and even on a weaker i3 3220 CPU it performs quite well with sequential reads hitting speeds slightly better than my SSD's.

I've largely done away with my tivos though (because of CCI crippling my hdhomerun, I have mostly moved to sickbeard and couchpotato, both of which work so well that I have moved my tivo's into the smaller bedrooms, with one of them no longer in use) but I do enjoy looking on the progress of my past exploits now and then.

Brushing that aside though, I am curious how practical it would be for the hard disk itself to handle all of this. From what I understand, newer disks basically have their own operating system which already does geometric remapping to fit the expected logical layout of the host controller, which is done to compensate for imperfections in the manufacturing process.

What would stop one from hijacking this process in other than intended ways? Not really a problem if the processor (cpu? fpga? asic?) is too slow as the disk can just delay the boot stage a bit if necessary. If it is physically possible, the nasty part is figuring out how to program the damn thing. If the disk's logic board is capable as is, you're looking at zero cost in modding and effectively a new software exploit that would be somewhat difficult for tivo to countermeasure in a cost effective manner (without say, moving *all* executable code on to a large embedded flash disk, or perhaps encrypting the entire disk using assymetric cryptography, which I'm not sure any hard disk OEM's provide the capability of.)

If not, then perhaps a less costly modification to the logic board would be in order (and not to mention less risky than doing BGA rework.)

EDIT: Wow, my signature still mentions emule...how retro.

GaveUp
02-14-2013, 11:03 AM
I'm *still* looking for high resolution photos of a quad tuner TiVo such as the Premiere 4, previously known as the Premiere Elite.

If one of you folk have these, please stop for a moment and post some complete photos of the various parts of the board.

Edit: This is the kind of thing that allows research efforts like this to stagnate. If you are interested in seeing this work, don't just lurk. Participate. If you don't have the time, donate. :-)

I'd be curious to see some high resolution pics for any of the premieres. With and without chips removed, or one's that have traces annotated.

tivo4mevo
02-14-2013, 11:54 AM
In the absence of of a wiki, this information is sticky worthy if it gets future updates. Searching is really problematic as you often find an old post that has outdated and currently untrue information. It takes eons to determine the actual current state of affairs.Yes, that's a hazard of the message board versus wiki, you find yourself poring over conversations germane only to exploiting software 4.0.1b with an lba48 aware kernel and the proper uma6fix to work on a DirecTV combo box... While interesting from an archeological point of view, not ideal for getting ones feet wet. To be honest, I think that the community shrank considerably once the software-only exploits dried up and tivo had engineered most of the features that were previously only available via hacks (internal web server, network remote, show extraction, etc.). The main reasons I see folks stopping by these days is to transfer or extract CCI protected shows, and tivo's MRS' allowed streaming.


An unrelated topic, but case in point, I have been searching for hours to determine if a series 3 can do a 2tb+2tb drive setup and no definitive answer yet. Most searches say 1TB is the biggest you can do but weaknees sells a 2TB internal. This is merely empirically showing how the forum is a poor repository.Agreed again. There used to be "state of the art" posts that would get written every year or so, but there are fewer people to write those these days, it seems.

tivo4mevo
02-14-2013, 12:00 PM
I'd be curious to see some high resolution pics for any of the premieres. With and without chips removed, or one's that have traces annotated.You've seen bkdtv's review, I presume? It provides a nice hardware baseline, so it's a starting point. Link: here (http://mysite.verizon.net/~fiosdvr/prem_review_01.pdf).

GaveUp
02-14-2013, 12:03 PM
You've seen bkdtv's review, I presume? It provides a nice hardware baseline, so it's a starting point. Link: here (http://mysite.verizon.net/~fiosdvr/prem_review_01.pdf).

Nope I hadn't seen that one but looks like a decent starting point. Thanks.

tivo4mevo
02-15-2013, 10:52 AM
What would really be golden is if someone made a SATA to ATA over Ethernet adapter. With that and a bit of hacking on the linux aoe target software and you'd have a solution using the "read twice" hack approach. Unfortunately, it appears no one makes such a useful bit of hardware. Everything I've found only adapts in the other direction. What? Nobody wants to attach legacy clients to an AoE SAN?Something akin to this: link (http://www.silverstonetek.com/product.php?pid=245&area=) could fit inside a premiere. It would need to be reprogrammed to redirect SATA reads after a specific amount of time (that time falling between the two presumed reads of the kernel partition: the first used during computation of the signature check, the second for done before handing off execution to the kernel), but I'm not sure how short that window is. Might be worth poking that device's firmware to see if it's easily modifiable.

AlphaWolf
02-16-2013, 12:47 AM
Or possibly remap new data as the original data is read.

Omikron
02-16-2013, 11:57 AM
I'd be curious to see some high resolution pics for any of the premieres. With and without chips removed, or one's that have traces annotated.

I have a good number of photos in the first few pages of this very thread... ;-)

Omikron
02-20-2013, 12:57 AM
Looks like someone finally came through and emailed me a bunch of photos of some Premiere 4 internals, and it still uses the same flash chip:

http://www.dealdatabase.com/forum/attachment.php?attachmentid=7549&d=1361502746

Considering all of the distributors I checked stopped carrying this part years ago, I did some extra digging and found that the company that the Intel subsidiary responsible for manufacturing the flash chip, Numonyx, was sold to Micron in 2010. The part still lives on under newer revisions, but apparently TiVo is still going through old stock because even recent TiVo's have flash chips with Intel markings on them.

7549

jonbig
02-21-2013, 06:50 PM
Hmm...so people are entertaining my disk spoofing idea from several years back it seems :D

Brushing that aside though, I am curious how practical it would be for the hard disk itself to handle all of this. From what I understand, newer disks basically have their own operating system which already does geometric remapping to fit the expected logical layout of the host controller, which is done to compensate for imperfections in the manufacturing process.


Initially it would be done by sticking the original TiVo drive into a Linux machine and connecting it to the TiVo, which would export the drive over aoe. Hack the linux aoe driver to do the kernel read redirection trick.

Unfortunately, I've just run across some information that suggests that Apple has broad patents on the use of target mode by a computer. :( That may explain the lack of hardware to do this with Linux.

karpodiem
03-13-2013, 06:20 PM
Good to see there's some activity on this topic; I have a Google Calendar reminder to check this thread every three weeks or so. Omikron, let us know if you need any additional equipment for research, I'm always willing to lend what I can.

You've inspired me to take MIT's introductory EE class on OCW; one day I wish to be able to contribute to TiVo development!

Omikron
03-14-2013, 01:43 AM
One of my friends finally found some time to break out the fuming nitric acid...

Here's a teaser for anyone who's curious...

http://www.dealdatabase.com/forum/attachment.php?attachmentid=7554&d=1363160790

blahman
04-11-2013, 01:58 PM
Not advertising but wondering if maybe borrowing a component from the Xbox 360 world might be an option for SATA redirection not directly linked: xk3y com/howitworks

Just thinking this might work because it has the ability to be programmed is already a device for capturing SATA traffic and redirecting it or emulating replies.

x360key consists of 2 parts, a motherboard and a remote.

The motherboard connects to the SATA bus inside the Xbox 360, and sits between the drive and the Xbox 360 motherboard. x360key is a full-fledged computer system running embedded Linux. It is capable of many things such as
- Emulating the Xbox 360 DVD drive
- Reading USB hard drives and other USB media with various file systems
- Updating itself and other hardware from USB media

# High speed USB2 interface
# Stylish USB control pad for selecting games and controlling your x360key
# Powerful embedded Linux system running from Micro SD card (included)
# Linux firmware fully updatable from USB media
# FPGA fully updatable from USB media via built-in, in-system JTAG programming
# Recovery mode - it is always possible to recover from a bad flash

Mods please remove if this post violates any rules as this one may be pushing.

GaveUp
04-12-2013, 04:04 PM
Not advertising but wondering if maybe borrowing a component from the Xbox 360 world might be an option for SATA redirection not directly linked: xk3y com/howitworks

Just thinking this might work because it has the ability to be programmed is already a device for capturing SATA traffic and redirecting it or emulating replies.



Mods please remove if this post violates any rules as this one may be pushing.

The problem with those would be the firmware. Anything like that is going to be locked down to not accept unsigned firmware so unless one of those teams wanted to pitch in it wouldn't be anything usable.

kmt
07-16-2013, 02:31 PM
Just the usual. Any news? Every new Tivo hardware announcement makes me jealous.

kmt
08-21-2013, 12:03 PM
The new Roamio Tivos have me salivating, but I guess its no go.

karpodiem
08-21-2013, 12:13 PM
They'reeee hereeeee

https://tivo.com/shop/roamio

topgun, are you still around? I'm willing to contribute what I can. 6-tuners/Slingbox-like functionality is a pretty nice feature-set.

philhu
08-22-2013, 11:44 AM
They'reeee hereeeee

https://tivo.com/shop/roamio

topgun, are you still around? I'm willing to contribute what I can. 6-tuners/Slingbox-like functionality is a pretty nice feature-set.

I am willing to bet that since we could not obtain a hack for S4 tivos, S5 tivos are way beyond reach. I'll keep my S3 tivohd for channels that are copy protected and live with it.

Someone in another forum sais that the software boot process boots a SD card. Are they blowing smoke, or is it true. It sure would make fixing a bad hd alot simpler (I assume).

GaveUp
08-23-2013, 01:39 PM
I am willing to bet that since we could not obtain a hack for S4 tivos, S5 tivos are way beyond reach. I'll keep my S3 tivohd for channels that are copy protected and live with it.

Someone in another forum sais that the software boot process boots a SD card. Are they blowing smoke, or is it true. It sure would make fixing a bad hd alot simpler (I assume).

Hard to say that. Given the S4 wasn't hacked the S5 could be very similar security wise or it could be a completely new implementation. Really until someone has their hands on it and starts tearing in to it you just don't know.

Based on a quick search for pictures there looks to be a head labeled UART which would be as good a place to start as any. Assuming no one beats me to the punch I'll probably pick one up in the next few months to do just that.

Omikron
10-30-2013, 07:27 AM
Does anyone have any good ultra-high res photos of some Roamio's?

Development will likely shift to the new platform directly, hopefully being able to re-use what we've learned from the S4 so far.

GaveUp
11-03-2013, 03:28 PM
Does anyone have any good ultra-high res photos of some Roamio's?

Development will likely shift to the new platform directly, hopefully being able to re-use what we've learned from the S4 so far.

The best I've run across so far are these (http://www.tivocommunity.com/tivo-vb/showthread.php?t=507711), but they are rather blurry.

Perhaps, before this thread gets muddled, a new thread for Roamio efforts is in order? If/When I get my hands on a Roamio I'll post up some better pics.

aerospaced
11-11-2013, 03:06 PM
dumb thought. Microsoft was tricked by a fake update, can you not imitate the the TIVO update mechanism? Let the TIVO think it is an official update?

AlphaWolf
11-11-2013, 09:07 PM
dumb thought. Microsoft was tricked by a fake update, can you not imitate the the TIVO update mechanism? Let the TIVO think it is an official update?

The updates themselves are digitally signed, and then when they actually deploy they do so with binaries that have also been signed (otherwise it won't boot.)

Unless we have a way of forging RSA signatures, it's not going to happen.

1fatboy
11-16-2013, 05:26 PM
The updates themselves are digitally signed, and then when they actually deploy they do so with binaries that have also been signed (otherwise it won't boot.)

Unless we have a way of forging RSA signatures, it's not going to happen.

Well you don't have to necessarily forge the RSA signature. You could re-use the original Tivo signature if the update payload has the same hash as the source so it will validate. If they're using a weak hashing algo, one where multiple inputs can have the same result, then maybe its possible. Attacking the hash is easier than the RSA private key. Given the industry has only recently started using SHA2 hashes, its possible that Tivo is using a SHA1 or MD5, but it still would take significant cpu to find the right padding to masquerade the update though.

Has anyone ever attempted a hack like this that actually keeps the chain of trust intact?

AlphaWolf
11-17-2013, 11:47 AM
Well you don't have to necessarily forge the RSA signature. You could re-use the original Tivo signature if the update payload has the same hash as the source so it will validate. If they're using a weak hashing algo, one where multiple inputs can have the same result, then maybe its possible. Attacking the hash is easier than the RSA private key. Given the industry has only recently started using SHA2 hashes, its possible that Tivo is using a SHA1 or MD5, but it still would take significant cpu to find the right padding to masquerade the update though.

Has anyone ever attempted a hack like this that actually keeps the chain of trust intact?

As far as I'm aware tivo uses full 80 round SHA1 everywhere, and there aren't any known 80 round SHA1 collisions in the world for anything period.

n3wb1e
05-08-2014, 06:21 PM
One of my friends finally found some time to break out the fuming nitric acid...

Here's a teaser for anyone who's curious...

http://www.dealdatabase.com/forum/attachment.php?attachmentid=7554&d=1363160790



Hi guys


super dooper nice thread you guys have here, just found out the thread on the big brother and decided to post due to my interest on similar equipment, so basically the newer generation BCM have a chipset protection mechanism.

this is common to all newer BCM cpus, they use the keyllader mechanism, i would love to get some workout study on them...

Basically everything is signed on cpu keyllader mechanism, so i guess the only way to go forward is to glitch the cpu in order to try to read out its contents right?

So looking on the keyllader mechanism

the CPU has got a OTP area, where chip id + ESCK (encrypted secret content key ) + decryption ESCK mechanism is stored.

Manufacturer does say that this content is programmed on CPU at factory stage and cannot be written back or read ( i have my doubts regarding read)

so this information mentioned above, will generate a decrypted SCK (Secret Content Key)

This Secret content key in return will be used to generate a ROOT KEY, them main key from the keyllader mechanism

This root key gets generated using a unknown algorithm (could be AES or 3DES) and it also contains as seeds a VENDOR ID + Module ID

So final stage will be a unique ROOT KEY = 16 bytes / 128bits key and this route key on CPU can also be described as K3 or eK3 depending on CPU models.. as this is the top key of keyllader it will be used to decrypt below keys such as K2 or eK2 (this K2 decryted data will be used to decrypt the below key on keyllader the K1 or eK1)

So basically in simple laymans terms we need to get in the cpu, so i am thinking of glitching techniques.. but for that we would need real BCM cpu datasheets so we could workout their pinouts..

We would also need to have busybox access CFE to one of the boxes to make some testing..

i do remember a few years back some flash models had some security protections to read certains areas with the universal programmer that could be simply resolved by lowering vcc and it would dump the full content of flash.....

Anyways nice readings here i hope the thread is not stopped, because we never know what might come out of it.

But its a known fact the keyllader mechanism is used on all BCM 7xxx series.. it contains challenge responses for jtag,flash read, flash write, ram read , rom read, so this could be a way..

by the way as anyone confirmed if this boxe have TTL por active, is CFE console also active on this units ??? as some newer generation units have CFE console blocked access amongst other things