I'm presenting the information here for users outside of the US who wish to upgrade their software releases, or those of us whom for whatever reason TiVo won't send the command to upgrade software to (i.e. my S1 SA TiVo had been sitting at v2.0 for a week after restoring it.) I will not provide you with the necessary slice files, nor will I tell you how to get them.

The following is a transcript of me doing this on a 2.0 system. It should be an identical procedure for any other release. Text highlighted in green are commands you type. Anything in red is a note from me. I assume you already have the slice files in /var/packages (hint: copy them there now if they don't already exist). And of course, I hold no responsibility if you hose your TiVo doing this. If you screw something up, it's your responsibility to fix it, not mine.

Note: If you need to perform any modifications to the new system's boot sequence (i.e. enabling tnlited, or such) remount your current root drive rw (mount -o rw,remount /) and edit /tvbin/installSw.itcl. Somewhere you'll see a line that says "reboot". Comment that out (by prepending a #), save the file, and remount the drive ro (mount -o ro,remount /). Once you have completed all the steps here, instead of the system rebooting it'll return you to a bash prompt. Here you can mount your new root drive, make any necessary changes, and then manually reboot the system.

With all that being said, lets begin:


bash-2.02# cd /var/packages
bash-2.02# tivosh
% set db [dbopen]
db1
% foreach file [glob -nocomplain *.gz] {
exec /bin/gzip -d $file
}
% foreach file [glob *.{cpio,slice}] {
dbload $db $file
}
% mls /SwSystem
Directory of /SwSystem starting at ''

    Name                      Type        FsId      Date  Time   Size    
    ----                      ----        ----      ----  ----   ----    
    2.0.1-001-000             tyDb       44503  09/01/01 16:08   1476    
    3.0-01-1-000              tyDb       79520  12/21/02 03:53    628    
    ACTIVE                    tyDb       44503  09/01/01 16:08   1476 

(Note: If you don't see your new version listed here, stop. You're either missing the swsystem slice file, or you somehow managed to screw up.)
% exit
bash-2.02# /tvbin/tivosh /tvbin/installSw.itcl 3.0-01-1-000
12/21:04:12:42: /tvbin/installSw.itcl:  id of /SwSystem/ACTIVE is 3528061
12/21:04:12:42: /tvbin/installSw.itcl:  id of /SwSystem/3.0-01-1-000 is 6406306
12/21:04:12:45: /tvbin/installSw.itcl:  Installing "3.0-01-1-000".
12/21:04:12:45: /tvbin/installSw.itcl:  Removing old package files
12/21:04:12:45: /tvbin/installSw.itcl:  Getting packages from database
12/21:04:12:56: /tvbin/installSw.itcl:  Executing jpm install of utils-1-1.cpio
12/21:04:13:02: /tvbin/installSw.itcl:  Executing updateroot /dev/hda /install /var/packages
Path prefix is /var/utils/

Searching /etc/fstab for current root

Old root is on /dev/hda4, new one goes on /dev/hda7

Creating new filesystem on /dev/hda7

Mounting new root filesystem on /install

Building basic filesystem skeleton on /install

Build directories
Uncompressing /var/packages/GZbin-1-1.cpio
Uncompressing /var/packages/GZetc-1-1.cpio
Uncompressing /var/packages/GZkernel-1-1.cpio
Uncompressing /var/packages/GZlib-1-1.cpio
Uncompressing /var/packages/GZprom-1-1.cpio
Uncompressing /var/packages/GZsbin-1-1.cpio
Uncompressing /var/packages/GZtvbin-1-1.cpio
Uncompressing /var/packages/GZtvlib-1-1.cpio
Install /var/packages/GZbin-1-1.cpio into /install
Install /var/packages/GZetc-1-1.cpio into /install
Install /var/packages/GZkernel-1-1.cpio into /install
Install /var/packages/GZlib-1-1.cpio into /install
Install /var/packages/GZprom-1-1.cpio into /install
Install /var/packages/GZsbin-1-1.cpio into /install
Install /var/packages/GZtvbin-1-1.cpio into /install
Install /var/packages/GZtvlib-1-1.cpio into /install
Install /var/packages/utils-1-1.cpio into /install
Checking /install/etc/fstab

   newroot is 7, copying fstab from fstab.alternate
Creating symlink for /install/etc/mtab
Dismounting /install and checking its integrity


Remounting /install read-only for comparison

pretend to Verify /var/packages/GZbin-1-1.cpio in /install
pretend to Verify /var/packages/GZetc-1-1.cpio in /install
pretend to Verify /var/packages/GZkernel-1-1.cpio in /install
pretend to Verify /var/packages/GZlib-1-1.cpio in /install
pretend to Verify /var/packages/GZprom-1-1.cpio in /install
pretend to Verify /var/packages/GZsbin-1-1.cpio in /install
pretend to Verify /var/packages/GZtvbin-1-1.cpio in /install
pretend to Verify /var/packages/GZtvlib-1-1.cpio in /install
pretend to Verify /var/packages/utils-1-1.cpio in /install
Dismounting /install


Modifying bootparams to point to /dev/hda7

Flipping root, setting boot parameters to 'root=/dev/hda7 '

OK, reboot the system to use the new root filesystem

12/21:04:16:25: /tvbin/installSw.itcl:  Attempting reboot...

At this point, the system should reboot, and you'll see a pleasant screen like:
Updating database. This will take a long time.

After that's complete, you should be running your new version.