Posted by cc:
Here's how to add a B drive to your TiVo by "blessing" it. This is approximately how we did it. We've only done it a few times so far. We will be refining the process. We simply wanted to get the initial information out quickly.
This has only been verified to work on a few units so far. A HDR112 has been upgraded to 52 hours with a 30 gig Quantum, another HDR112 has been upgraded to 40 hours with a 20 gig Quantum, and a Sony 30 hour unit has been upgraded as well with a Maxtor B drive, although the newer Sony/Phillips units have a drive locking mechanism that makes it very hard to mount their A drives in a non-TiVo Linux box.
WARNING: This modification is not "easy". You take all responsibility for modifying your TiVo in this way. It does involve opening the case and breaking the warranty sticker. Do not call TiVo support if you make a mistake and break your TiVo. If you break it, you own both pieces. If you mess up, don't expect us to fix it for you either. Maybe some day someone will release a utility that will just bless a drive in 1 easy command on your PC, but at this point, it's pretty tricky. It requires that you have various technical knowledge about Linux and other software tools. You could easily render your TiVo inoperable and possibly unrecoverable.
WARNING 2: There hasn't been a lot of testing so far on this procedure of course. Mine seems to be working perfectly at 52 hours, but you must accept the risk that something bad may happen down the road. We suggest that you back up your original A drive in some fashion in case you make a mistake. How to do that we leave up to you.
PDISK DISCLAIMER: We had to modify the source code to pdisk. Use it at your own risk. There may be bugs. We're not responsible for any loss of data.
And PLEASE - be careful when you open the unit. It's power supply is unshielded. Stay away from it.
In short - if you don't _understand_ what is going on below, don't do it. Just being able to read a list of steps may not be enough at this point.
When I refer to hard drive partitions on the Linux box, I'll use hdX where X is whatever letter is appropriate for that drive.
I used a Quantum lct10 30 gig drive (part number QML30000LB-A) that I bought from
http://www.onsale.com
My off the shelf Quantum seems to have the Quickview and TiVo extensions in it, perhaps they all do. It is the same drive used in HDR31202's and presumably the newer Sonys. Any drive may work as a B drive, but I've only tried my Quantum. Also be aware - the version of Linux on the TiVo doesn't seem to support drives larger than 33.8 gig. I don't know if TiVo patched their older kernel to support them. Set the B drive's jumper to slave.
You need to be able to access the original A drive and new B drive from another Linux box. To do this on an x86 box, you need to integrate TiVo's modifications to the Mac partition code. There are some patches on
ftp://ftp.curry.org/pub/tivo
ftp://ftp.rotorway.org/incoming/tivo
http://www.wasteland.org/tivo
Please, if anyone can mirror these few files it would be very helpful. If we get hit too hard, we'll have to take the files down. You also need to be able to turn on byte swapping for those 2 drives (hdX=bswap). I had the most luck with Linux 2.4.0-test1. You also need to enable the Mac partitioning in the kernel.
If that all works, you'll see the TiVo's partitions on the A drive hooked to your Linux box. There should be 11 of them. Mount partition 4 (hdX4) somewhere, it's an ext2 filesystem. Edit the bottom of etc/rc.d/rc.sysinit so it starts a bash shell on /dev/ttyS3.
Also you need to blank out the first few sectors on the new B drive, with this command: "dd if=/dev/zero of=/dev/hdX bs=512 count=32".
Get the hard drives back in the TiVo (both of em) and hook up the DSS serial cable to your computer. You'll need a null modem adapter and gender changer at the minimum. The terminal settings are 9600,8N1. You should get a bash prompt shortly after the "please wait a few more seconds" screen. Run this command: "/sbin/bootpage -D /dev/hdb". Then shut down your TiVo and hook the B drive back up to the Linux box.
Now you need a modified version of pdisk which is available on the sites I mentioned above. Compile it if necessary (it's in RCS format). With the B drive in the Linux box, run "pdisk /dev/hdX" and type in these commands:
i
w
y
q
Then run: "pdisk -d /dev/hdX" and type these commands:
C 2p 4M "Second MFS application region" MFS
C 3p 3p "Second MFS media region" MFS
x
m
3
x
w
y
q
That will create the new partitions. Shut down the Linux box now and mount the B drive in the TiVo permanently. Turn the TiVo back on and get into the bash shell on it again.
You need to mount the diagnostics partition next. Type this on your TiVo: "mount -t ext2 -o ro /dev/hda7 /mnt". Then run this to add the magic bit sequence to your new B drive: "/mnt/diag/genAddDiskTiVoID /dev/hdb3". Type "umount /mnt" to unmount that diagnostics partition, and reboot your TiVo. That should do it. Check the system information and see if your capacity increased. If not, you can try this one last thing that I don't believe is necessary, but it might be: mount the diagnostics partition again, and run "/mnt/diag/setkeys -globalkeys /dev/hdb".
That's it. If you want to now, you can edit the rc.sysinit to stop the bash shell from starting (or if you were smart, you made a backup copy when you started and can just copy the backup over the modified one).
Credit for figuring out this procedure goes to cc, Peter Creath, TivoTechie, and Ron Curry.