Upgrade TiVo Premiere XL to 2TB and 317 hours of HD

Upgrading a TiVo Premiere or Premiere XL to 2TB and 317 hours of space is quite easy thanks to the jmfs tool by Comer of the TiVo Community. So I upgraded last week. It took 7 hours just to copy the data, but it was worth it. My TiVo went from always on the edge of full to 48%!

Here is how to do it without a CDROM drive or Windows machine.

Select a Disk Drive

It seems that the 3 most common Western Digital drives used to upgrade a TiVo to 2TB are:

I went with the WD20EARS. It is not pre-tuned for DVR use, but it can be with 1 or 2 tweaks. It's actually fine with no tweaks at all. I didn't make any.

Create JavaMFS Slax Linux Bootable USB Stick

Starting from a Fedora Linux laptop or workstation; configure a blank USB stick to boot the JMFS tools image. These instructions assume the USB stick is /dev/sdb.

Partition the USB stick, and set the partition as type '83 Linux' and flag it as bootable.

echo '0,+,0x83,*' | sfdisk /dev/sdb

Create a filesystem to hold the JMFS files.

mke2fs /dev/sdb1
e2label /dev/sdb1 jmfs

Mount the disk under /media/jmfs. An unplug and replug should do that automatically.

Copy grub to the USB stick

mkdir -p /media/jmfs/boot/grub/
# adjust path below if your aren't on 64bit
cp -p /usr/share/grub/x86_64-redhat/* /media/jmfs/boot/grub/

Create a grub entry to boot Slax / JMFS tool

cat <<EOF > /media/jmfs/boot/grub/grub.conf
title jmfs
 kernel /boot/vmlinuz ramdisk_size=6666 root=/dev/ram0 rw
 initrd /boot/initrd.gz

Install grub boot loader to the partion. Note hd1 corresponds to sdb. Sdc would be hd2 for example.

grub> device (hd1) /dev/sdb
grub> root (hd1,0)
grub> setup (hd1)
grub> quit

Copy jmfs ISO contents to USB

mkdir jmfs
mount -o loop jmfs.iso jmfs
cp -rp jmfs/* /media/jmfs/
umount jmfs

Unmount and safely remove the USB stick.

Now you can install both the old and new TiVo hard drives in the computer, and boot from the USB stick. Continue with the upgrade or tweak the disk first.

Perform the Upgrade

If you chose not to modify the drive, or you are already done with that, boot from the USB stick and follow the prompts to perform the upgrade. It's a menu driven set of 3 steps.

  • Copy the old drive to the new drive. Mine took 7 hours.
  • Expand the drive to 287 hrs.
  • Supersize the drive to 317 hrs.

See the original Premiere Drive Upgrade Instructions - and all-in-one jmfs Live CD image, and another set of TiVo Premiere instructions here.

You're done! Enjoy!

Optionally Test and Tune the Disk for DVR Use

The tools to test and adjust drive settings are:

The cheapest disk, WD20EARS, is not pre-tuned for DVR use, because the AAM acoustic settings are not optimized for silence over performance. Even though it is very quiet already, you can adjust this setting to match the WD20EVDS for example by setting AAM to 128 with the Hitachi Feature Tool. I tried to do this, but the tool failed to detect the drive. Rather than fight it, I just put it in the TiVo. It's very quiet already anyway.

Create DOS Bootable USB Stick

To optionally adjust the acoustic settings and the intellipark feature, you need to boot into DOS.

Create a bootable DOS USB stick. You could add another partition to the previous USB stick, but to keep it simple grab another blank stick.

echo '0,+,0x0e,*' | sfdisk /dev/sdb
dd if=/dev/zero of=/dev/sdb1 bs=512 count=1

Create a label a DOS filesystem on the partition.

mkdosfs -F16 /dev/sdb1
dosfslabel /dev/sdb1 wdtools

Copy FreeDOS to the disk. Let's boot up the image in QEMU and use XCOPY.EXE to place the contents on the USB stick and make it bootable with the SYS.COM command.

wget http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/unofficial/balder/balder10.img 
qemu-kvm -boot a -fda balder10.img -hda /dev/sdb
xcopy /E /N a: c:
sys c:

Destroy the QEMU machine and mount the disk under /media/wdtools. Unplug and replug should do that automatically.
Copy grub files to the disk.

cd /media/wdtools
mkdir grub 
cp /usr/share/grub/x86_64-redhat/* grub/

Create an entry to boot FreeDOS where you can run the disk tools.

cat <<EOF > grub/grub.conf
title FreeDOS
	chainloader +1

Install grub boot loader to the partion. Note hd1 corresponds to sdb. Sdc would be hd2 for example.

grub> device (hd1) /dev/sdb
grub> root (hd1,0)
grub> setup (hd1)
grub> quit

Test the USB stick. You can boot from the USB stick in a window to test it.

qemu-kvm -hda /dev/sdb

Copy DOS Tools to Disk

Download Western Digital's Data Lifeguard Diagnostic for DOS (CD) and copy the executable to the USB stick.

mkdir wd-diag504f
mkdir -p /media/wdtools/tools
mount -o loop Diag504fCD.iso wd-diag504f
cp wd-diag504f/DLGDIAG*.* /media/wdtools/tools/
umount wd-diag504f

Download Hitachi Feature Tool v2.12 and copy the contents to the USB stick.

mkdir hitachi
mount -o loop hitachi-featuretool-ftool_211.iso hitachi
mkdir -p /media/wdtools/tools/
cp -r hitachi /media/wdtools/tools/
umount hitachi

Download WDIDLE3.EXE v1.05 and unzip to the USB stick.

cp wdidle3_1_05.zip /media/wdtools/tools/
cd /media/wdtools/tools
unzip wdidle3_1_05.zip 

I had to adjust the path in autoexec.bat to make the Hitachi tool run, and run 'subst a: c:' to make the WD tool happy. Blast from the past...

SET PATH=C:\;c:\tools\hitachi;c:\tools\hitachi\dos
subst a: c:

Test the Drive

The WD tool failed with an unknown error 0141, so I wasn't able to do this. It's probably a good idea to test the drive before upgrading to it, rather than rolling the bones like I did.

Configure the Drive

You may want to adjust AAM and turn off intellipark. But you don't have to.

Automatic Acoustic Management

Set AAM to 128 using the Hitachi Feature Tool. I wasn't able to do this. For some reason the tool did not detect my drive.

This may be done from Linux instead with hdparm, so you may try that while booted from the jmfs tool.

hdparm -k 1 -M 128 /dev/sda


Intellipark may already be off depending on which model and the date of manufacture. Reboot the TiVo using the menu, as opposed to pulling the power, and if it does not hang on boot up then intellipark is either off or delayed enough to not matter. Do not use this if you do not have to.

Apparently intellipark is now off by default or is no longer a problem, but if it is on and you want to turn it off, use WDIDLE3.EXE.

I didn't bother with this.



Subscribe to Syndicate