This document lists the steps that I took to upgrade my TiVo, add network connectivity,
and install various hacks and self-written code ports.
The mirror ![]() Currently it includes the following sections :-
Stage 1 - Upgrade internal hard disk from 40Gb to 120Gb Please note, if you are trying to upgrade your UK TiVo and are using a disk that is greater than 120Gb then the steps below will not work as you will need to use a version of the MFSTools CD which handles larger drives. - Firstly I read and inwardly digested the "Hinsdale HowTo", located
at http://www.newreleasesvideo.com/hinsdale-how-to/index9.html
- Next I reviewed the posts at the UK TiVo communities forums, my key requirement was silence (the TiVo lives in the lounge which is often used for meditation and other things which need complete silence). After working through various suggestions from people, I decided on a Samsung Spinpoint SV1203N - a 120Gb, 5400 rpm drive with Acoustic management which is supposed to make the whole drive near-silent. I ordered one of these, from WhisperTec UK. - The drive arrived, and I installed it into a spare PC to test. I downloaded
Samsung's HUtil test from http://www.samsung.com/Products/HardDiskDrive/utilities/hutil.htm - Next I grabbed the MFSTools boot CD from http://hellcat.tyger.org/MFS/2.0/mfstools2noJ.iso - Before powering off the TiVo to pull the old drive, I checked System Information and the capacity was shown as 11h55m best/40h31m basic. - I Powered off the TiVo and then... - Undid the 3 screws at back of TiVo (with a Torx 10 bit)
- Next I connected the old Quantum drive and the new Samsung drive to
the spare PC (which already had its own IDE drive and an IDE CDROM drive).
This took far more time than it should have due to BIOS and cable wierdness
on the (pre-2000 BIOS'd) spare PC that I was using. In terms of connections
and settings,
- I booted from the mfstools CD. - The BIOS and Linux boot process reported the old TiVo Quantum drive as being sized 10Mb, i.e. locked, but mfstools automatically unlocked it. - Checking the Linux boot log showed that all 3 drives had been correctly recognised now. (If the size of hdc was reported as 10Mb still then I could have tried
changing the BIOS detection for the drive from 'auto' to 'normal'. If it
was still reported
- Hit Enter once or twice to get to the bash prompt. - Backup the old drive to the spare PC's current system drive. $ mkdir /mnt/dos $ mount /dev/hda1 /mnt/dos $ mfsbackup -l 32 -6so /mnt/dos/tivo.bak /dev/hdc (This takes a backup of the system,passes,thumbs,config,etc, but NOT programs. -s = Shrink backup set, -6 = Compression level 6, -o = Set output file) This process started at 13:37 and ended at 13:42, i.e. took 5 minutes (this was on a 900MHz Pentium Pro). mfsbackup said
The tivo.bak file produced was around 323Mb - Copy the entire old drive contents - programs and all - to the new drive $ mfsbackup -Tao - /dev/hdc | mfsrestore -s 127 -xzpi - /dev/hdb (Assumes existing TiVo A drive as Secondary Master and new larger upgrade A drive as Primary Slave, -a backup everything, -T backup all streams, -o output file -s set swap file size in meg, -i input file, -x expand dest.drive, -z zero out unused partitions, -p optimise partition layout) This process started at 13:43 and ended at 15:00, i.e. took 97 minutes. MFSTools said that it had copied 32 Gb. mfstools displayed the new drive size as "New size = 127 hours (88 more)". This made me a bit concerned, but the TiVo does correctly display the new size as 135 hours - presumably there's a short int limit somewhere in mfstools display code. - Power down, disconnect old and new TiVo drives. Pack old drive away in storage. - Rejumper new TiVo drive to Master - Attach to drive bracket and replace in TiVo - Boot TiVo - Checking System information shows capacity as
- Power off TiVo and replace lid. This was probably the hardest part !! - After this I let the new drive bed in for a week or so. I enabled
back doors after this and saw that my uptime had been 7 days, i.e. no reboots.
With my old Quantum drive I'd been seeing reboots once a day or two, so
this was an improvement...
- I ordered a Cachecard from www.9thtee.com, and a stick of 512MB PC133 value Ram from ebuyer.com. - I downloaded the Cachecard drivers. The SiliconDust forum at http://www.silicondust.com/forum/viewtopic.php?t=789
points to the newest Cachecard drivers, which were at http://www.silicondust.com/nic_install_pc_20040826.zip - I downloaded the NIC install CD image from http://www.9thtee.com/nic_cd_20030223.iso - Note, the above two items are what I did, this was when the Cachecard drivers were released on a seperate zipfile. For each release, Jafa now builds a bootable ISO with the drivers on it, so you just need to browse to the Silicon Dust forum at http://www.silicondust.com/forum/viewforum.php?f=1, find the latest "Driver Release" thread and, grab the ISO and burn it to a CDR. - I went through the now familiar process of opening up the TiVo, and pulling the drive. - The TiVo drive was installed into my spare PC as secondary master (it could have been anything EXCEPT primary master). - I booted off the NIC install CD, and hit Enter twice. $ mkdir /mnt/fd0 $ mount -t vfat /dev/fd0 /mnt/fd0 $ cd /mnt/fd0 $ chmod +x nic_install $ ./nic_install cachecard If you use the Cachecard drivers which come in the bootable ISO version then you can skip the first four line above, i.e. you just need to boot from the CD and do the "./nic_install cachecard" command. - nic_install asked for permission to disable initrd, I said "yes". - The Cachecard installer defaulted to IP=192.168.1.200 and GW=192.168.1.1 - I used option 5 from the menu to change the IP to 192.168.0.222 and GW to 192.168.0.1 - I double checked that the daily call was set to 'network'. - I used option 0 to save changes and exit, this then copied the Cachecard drivers to the TiVo system disk - I answered "Yes" to nic_install's request to allow it to clear the log file. - I put the TiVo drive back in the TiVo. - Next I installed the cachecard and RAM. Oh ... my ... god !! Was this hard or what!! This was probably the hardest card installation that I've done in 20+ years of building computers, the space is very limited and for those of us with big hands its not easy to gain leverage enough to get the card to seat squarely on the motherboard. In the end I....
Without a doubt this was the hardest card installation I ever did!! - Putting in the 512Mb RAM stick was a breeze in comparison... - Powered up the TiVo. - The red light on the Cachecard lit, indicating that the memory is being accessed. Shortly afterwards the SiliconDust drivers displayed a splash screen, and then tested out the Cachecard's RAM. - Bootup now takes an extra minute or two. - Once it had booted I checked that 192.168.0.222 was pingable, found that it was. - I then telnetted into the Tivo and got a bash prompt. I quit. - Yay me! Stage 3 - Installing basic utilities - Telnet into TiVo and do $ mkdir /var/hack Firstly I installed essential utilities (ls,etc) Grabbed Steve Jenkin's pre-done tarball from http://tivo.stevejenkins.com/downloads/tivobin.tgz $ cd /var/hack $ mv /tmp/tivobin.tgz . $ gzip -d tivobin.tgz $ cpio -idu -H tar <tivobin.tar $ mv tivo-bin bin $ cd /var/hack/bin $ chmod 755 * $ ./ls(LS works ok) Next I created a .profile to set the PATH to include /var/hack/bin $ cd / $ mount -o remount,rw / $ echo 'export PATH=$PATH:/var/hack:/var/hack/bin' >.profile $ mount -o remount,ro / $ sync To test this, I kept the telnet session open (just in case) and launched a new telnet session to the TiVo. $ echo $PATH /bin:/sbin:/tvbin:/devbin:/var/hack:/var/hack/bin To make the mount/remount steps easier, I did $ cd /var/hack $ mkdir scripts $ cd scripts $ cat >makero.sh #! /bin/bash mount -o remount,ro / && echo "File system is now READ ONLY." || echo "Remount Failed!" <Ctrl-D> $ cat >makerw.sh #! /bin/bash mount -o remount,rw / && echo "File system is now READ/WRITE." || echo "Remount Failed!" <Ctrl-D> $ chmod 755 *.sh $ ./makerw.sh $ cd / $ cat >>.profile alias rw='/var/hack/scripts/makerw.sh' alias ro='/var/hack/scripts/makero.sh' <Ctrl-D> This means that I can now make the root file-system read-write by typing "rw", make changes, and then return it to read-only by typing "ro" - Grabbed more useful utilities from http://www.xse.com/leres/tivo/downloads/ $ cd /var/hack/bin $ chmod 755 * tnlited, ping, and uptime were superceeded by TiVo/SiliconDust binaries so I renamed them to *.new to stop them from being used. - Added PS1='TiVo: {\w} % 'to .profile, so that I know I'm telnetted into the TiVo... $ rw $ echo "PS1='TiVo: {\w} %' >>/.profile $ ro - Grabbed less-s1 and unzip-s1 from http://prdownloads.sourceforge.net/tivoutils/
Ftp unzip-s1.gz to /var/hack/bin, telnet to tivo $ cd /var/hack/bin $ gzip -d unzip-s1.gz $ mv unzip-s1 unzip $ chmod 755 unzipFtp less-378-s1.tar.gz to /, telnet to tivo $ cd $ gzip -d less-378-s1.tar.gz $ cpio -i -H tar --make-directories </less-378-s1.tar $ rm /less-378-s1.tar $ rw $ echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/var/hack/lib' >>.profile $ ro $ less /etc/rc.d/rc.sysinit - Grabbed tivo series 1 tar from
ftp'd to tivo into /var/hack/bin $ cd /var/hack/bin $ mv tar.bin tar $ chmod 755 tar
- Grabbed elvis and sed/awk/grep from
ftp'd both files to /var/hack/tmp, and telnetted to tivo $ cd /var/hack/tmp $ gzip -d grep*gz $ tar -xvf grep-awk-sed_Tivo-1.tar $ cd grep-awk-sed_Tivo-1 $ mv *grep ../../bin $ mv *sed ../../bin $ mv *awk ../../bin $ cd .. $ rm -rf grep-awk-sed_Tivo* $ gzip -d elvis*gz $ tar -xvf elvis-1.4_Tivo-1.tar $ cd elvis-1-4_Tivo-1 $ chmod 755 elvis $ mv elvis /var/hack/bin $ cd /var/hack $ tar -xvf ./tmp/elvis-1.4_Tivo-1/terminfo.tar $ export TERMINFO=/var/hack/terminfo $ rw $ elvis /.profile (Add the above 'export TERMINFO=/var/hack/terminfo' line to /.profile) $ ro $ rm -rf /var/hack/tmp/elvis* $ cd /var/hack/bin $ ln -s mawk awk - Grabbed smartctl.gz $ cd /var/hack/bin $ gzip -d smartctl $ chmod 755 smartctl $ ./smartctl -a /dev/hda Phew, that's it for "basic utilities" ! Grabed Graham's bugfixed 1.1 jpegwriter, from http://www.cobb.uk.net/Tivo/Jpegwriter/jpegwriter-1.1.zip $ cd /var/hack/bin $ chmod 755 newtext2osd jpegwriter Grabed http://www.cobb.uk.net/Tivo/Screen/screen-3-9-8-1.zip $ chmod 755 /var/hack/bin/screen Grabbed tivovbi-1.03.zip $ chmod 755 /var/hack/bin/tivovbi $ tivovbi -xtcto show closed-captions Grabbed SendKey.zip $ chmod 755 /var/hack/scripts/SendKey $ SendKey tivo 0 1 2 3 <etc>See /tvlib/tcl/tv/sendkey.tcl for key codes Grabbed mailfile3.zip $ cd /var/hack/scripts $ chmod 755 mailfile.tcl $ elvis mailfile.tclChange set mailserver <my SMTP server's IP>; # the IP address of your ISP's SMTP server set domain <my domain>; # your domain set sender "<my email address>"; # Your email $ echo 'Hello there' >/tmp/test.file $ ./mailfile.tcl /tmp/test.file "This is the subject" <my email address> Grabbed nfs-kernelmod_TiVo25-1.tar.gz $ insmod /var/hack/lib/nfs-tivo25.o $ mount -t nfs 10.1.1.1:/share /var/hack/mountdirAdd "insmod /var/hack/lib/nfs-tivo25.o" to /etc/rc.sysinit.author Grabbed tivosmb.tar.gz $ telnet tivo $ rw $ mv /var/hack/lib/smb.conf /etc/rc.d/ $ elvis /etc/rc.d/smb.conf (Make changes as needed) $ ro $ chmod 755 /var/hack/lib/smbd $ chmod 755 /var/hack/lib/nmbd $ /var/hack/lib/smbd -D $ /var/hack/lib/nmbd -DThese both bitched about missing libraries, to workaround this for the short term, I did the tacky steps of .... $ cd /var/hack/lib/ $ cp -p libresolv.so libdl.so.2 $ cp -p libresolv.so libnsl.so.2 $ cp -p libresolv.so libnsl.so.1My /etc/rc.d/smb.conf reads... [global] interfaces = 192.168.0.222/24 workgroup = WORKGROUP netbios name = TIVO security = share guest account = root hosts allow = encrypt passwords = no [shared] path = /var guest only = yes guest ok = yes writable = yes read only = no browsable = yes Lastly, I added "/var/hack/lib/smbd -D" and "/var/hack/lib/nmbd -D" to rc.sysinit.author To fix the tacky hack above, once I was sure that samba was working
I built a dummy library - See http://www.planetbuilders.org/tivo/
for details of this.
$ cd /var/hack/lib $ rm libdl.so.2; ln -s libtivodummy.so libdl.so.2 $ rm libnsl.so.2; ln -s libtivodummy.so libnsl.so.1 $ rm libnsl.so.1; ln -s libtivodummy.so libnsl.so.1and then restarted smbd and nmbd Grabbed http://minnie.tuhs.org/TiVo/files/libresolv/libresolv-0.1-bins.tar.gz $ mv /var/hack/bin/libresolv.so to /var/hack/lib/ $ ln -s /var/hack/lib/libresolv.so /var/hack/lib/libresolv.so.2 $ echo $LD_LIBRARY_PATH :/var/hack/lib $ mv /etc/resolv.conf /etc/resolv.conf.old $ mv resolv.conf /etc $ elvis /etc/resolv.conf (update to have IPs of nameservers) $ cd /var/hack/bin $ mv arp arp.notresolving $ mv hostname hostname.notresolving $ mv netstat netstat.notresolving $ mv rarp rarp.notresolving $ mv traceroute traceroute.notresolving $ mv ../tmp/* . Stage 6 - Cron - See also my TiVo cron guide for more information on setting up cron on the TiVo. Grabbed cron-3.0pl1_TiVo-2.tar.gz $ cd /var/hack $ gzip -dc cron-3.0pl1_TiVo-2.tar.gz | tar -xvf - $ cd cron-3.0pl1_TiVo-2 $ chmod 755 cron $ sh ./cron-setup-tivo.sh $ mv cron ../bin $ mv crontab /var/hack/etc/crontab $ cd /var/hack $ rm -rf cron-3.0pl1_TiVo-2 $ /var/hack/bin/cron & Add "/var/hack/bin/cron &" to /etc/rc.d/rc.sysinit.author Grab TivoWeb from http://tivo.lightn.org/tivoweb-tcl-1.9.4.tar.gz $ cd /var/hack $ mkdir tivoweb-tcl $ put tivoweb-tcl-1.9.4.tar.gz $ put ui.itcl $ put ukgenre.js $ quit telnet tivo $ cd /var/hack $ gzip -dc tivoweb-tcl-1.9.4.tar.gz | tar -xvf - $ rm tivoweb-tcl-1.9.4.tar.gz $ cd tivoweb-tcl $ mv ukgenre.js ukgenre.js.old $ mv ../ukgenre.js . $ cd modules $ mv ui.itcl ui.itcl.old $ mv ../../ui.itcl . $ cd ../.. $ /var/hack/tivoweb-tcl/tivowebBrowse to http://tivo/ See TiVoWeb main menu, yay! Themes Grab blue.css Add password and set default theme telnet tivo
Add nice favicon.ico... Grab favicon.ico Add Whats-On "Grid" plugin telnet tivo
Do a TivoWeb quick reload
Add Showcase plugin Grab showcase.itcl Add "Search with rating", "Whats On" and "Now Playing with Sort and Folders" plugins Grab searchadv.itcl Add Sanderton's DigiGuide checker Register on digiguide
Grab digiguide0.1.zip Ah! www.mydigiguide.com has changed IP address. To fix this I changed Install the DisplayText plugin Grab displaytext.tar Install JpegWriter plugin Grab jpeg.zip Made loads of code fixes, as the default version doesn't properly list/parse
out the jpeg filenames. See my fixed version Install LJAY's Wishlists plugin Grab wishlists.v1.4.zip Install Sanderton's Reorder Season Passes plugin Grab reorder.zip Install ManualRecord plugin Grab manrec_0.1.2.zip Install Sanderton's NewEpisodes plugin Grab newepisodes0.2.zip Install Tivo Season Pass/Settings backup plugin Grab tivoweb-backup-1_00_0013.tar.gz Install ChannelGrid plugin Grab channelgrid_0.0.2.zip This caused my TiVo to reboot! I've rolled it out for now... Install Sanderton's DailyMail Grab dailymail.zip Grab LJ's summerzone.sh (Without summerzone.sh I had the following within /var/hack/etc/crontab
Install Sanderton's DailyMail_Jazz Grab dailymail_v0.35.6_beta.zip
ftp dailymail/dailymail.cfg to tivo:/var/hack/ Add to /var/hack/etc/crontab 20 7 * 1-3,10-12 * /var/hack/scripts/summerzone.sh && /var/hack/dailymail_jazz.sh & Install GuideChecker module Grab gdchecker-v1.01.zip Install Schedule module Grab schedule-0.0.3.zip Install new "Aerialplug" logos Grab aerialplug_logos_6.1.zip Do a FULL reload of TivoWeb. This crashed my TiVo ! :( I let it reboot.... Browse to http://tivo/logos/ and check for missing/wrong assignments. I was missing...
Some of these I didn't like, so I removed all user-uploaded logos via
the deletelogos.tcl
telnet tivo
then did a reboot of the TiVo. This left me with default TiVo-supplier
logos for
Make TivoWeb run automatically on startup $ mount -o remount,rw /
Add the HackMan plugin Grab hackman-V4.0.0.zip Unzip it Do a quick restart of TivoWeb Add the HackMan plugin Grab HiGuide
0.5a beta Unzip it Do a quick restart of TivoWeb TivoWeb stuff I haven't installed as there is no real benefit (for me that is)... Sanderton's Dual Tivo Resolution Utilities I haven't installed as there is no real benefit (for me that is)... Autospace I've tried various tools to extract and convert TiVo recordings into MPEGs and DVDs, currently my tools of choice are MFS_FTP, TyShow, TyTools, and Nero. There are three areas involved in TY video extraction
Grab mfs_ftp_1.2.9p.tar.zip Add "/var/mfs_ftp/mfs_ftp.tcl" to /etc/rc.sysinit.author FTPing to the TiVo on port 3105 now lets me log into mfs_ftp. CDing to the txt/xml directory allows retrieval of program information in plain text or XML format, and CDing into the /ty directory allows the retrieval of .ty streams. For example $ ftp tivo 3105 As you'll notice, the filenames are quite long (and full of characters that aren't on everyone's keyboard). So despite normally being a command-line user, I've started using the excellent FileZilla Windows graphical FTP client to transfer .ty files over to my media-editing PC. Originally I used the TiVo-supporting modified TiVo-mplayer to play .ty streams, as this can play local .ty files retrieved via MFS_FTP and ty files streamed directly from the TiVo. My
TiVo is connected via a WGE101 wireless bridge (B and G-mode capable), but
an ME101 AP which is only 802.11B capable. 11Mbps just can't cut it handle
real-time streaming from the TiVo, and so I drag .ty files off of it via FTP.
For reference though, here's what
I did to get TiVo-MPlayer working in streaming mode...
- To run MPlayer and stream directly from the TiVo requires that the TiVo have the server process running, so ... - Grab vserver-1.2.tar.gz - Unpack it, and do Add "/var/hack/extraction/vserver" to /etc/rc.sysinit.author To list and stream a program directly from the TiVo to my PC, I did ... $ mplayer -cache 8192 tivo://192.168.0.222/1418865
The mplayer syntax is ... mplayer [options] [url|path/]filename Basic options: (complete list in the man page)
Basic keys: (complete list in the man page, also check input.conf)
Next I installed the MFSStreamWeb module into TiVoWeb, this is another method of grabbing TY streams - this time via the browser. MFSStreamWeb Grab mfsstreamweb98.zip
Add "/var/hack/extraction/tyhttpd 2000 4 >> /dev/null &" to /etc/rc.sysinit.author
I still use mplayer-tivo when streaming from the TiVo to Linux, however under Windows I stopped using mplayer-tivo and switched to Windows Media Player and TyShow. - Grab http://prdownloads.sourceforge.net/tyshow/TyShow-BETA-0.15.rar?download Initially I started doing MPEG conversions for DVD using TyStudio. TyStudio
and TyTools are both powerful .ty conversion utilities, TyStudio is far quicker
to get to grips with but now I use TyTools for two reasons
Installation To install TyStudio I :- - Grabbed TyStudio 0.50b2 for Windows - Grabbed TyServer 0.50b2 for the TiVo The TiVo TyServer allows you to pull files directly from the TiVo into TyStudio's editor. I don't use this, I just ftp the ty files over, but if you do want to use the TyServer then see the TyServer installation file. - Run the setup.exe file. To edit a stream, I ftp the .ty file over to my PC, and then - Run TyStudio's editor.exe - Click on "Click here to load a local .ty file", and pick the .ty file from wherever you FTP'd onto. - TyStudio will index the file (for an hour of video, this takes about 45 seconds on a 900MHz Pentium). Apparently the advantage of TyServer is that it pre-indexes all of the files on the TiVo and so this stage gets skipped. - Use menu Tools|Options|Encoding Defaults|Video - Set it to "DVD" - Use menu Tools|Options|Encoding Defaults|Audio - Set to "48000 (DVD)" - The menu Tools|Options|File Locations lets you set the paths for .ty files, output files, and (if you use TyServer) the IP address of your TiVo. You will now be ready to edit your TY stream, and then transcode it to MPEG. You'll certainly want to trim any content before the start of the program, and after the end, i.e. where the TiVo has started recording early and/or run on past the program end, and might want to remove commercials. This is where you do both of these. - To move through the stream, you can click on the < and > buttons to play backwards and forwards, and the || button to stop play. - To fast-forward or move to the stream end, use the >> and >| buttons. Likewise the << and |< buttons to move fast-backwards or to the start of the stream. - To make a cut, i.e. remove a section of the stream (e.g. an advert), you need to mark a start and an end cut point. To do this... - Move to the start point where you want to cut FROM, and click on "Cut Start" - Move to the end point where you want to cut UP TO and click on "Cut Stop" After doing that, in the top right hand side of the editor window you should see a cut entry looking like Cut Start <nnnnnnn> <hh:mm:ss.cc> Cut End <nnnnnnn> <hh:mm:ss.cc> where "nnnnnnn" is a frame number, and "hh:mm:ss.cc" is a time value within the stream. - You need a end-point for each start cut point, else you cut to end of file. Likewise you need a start-point for each end cut point else you cut from the start of the file. - The menu File|Save as Image - allows you to save the current frame image to a PNG or BMP file for making DVD covers. - When you are done marking cut points, click on File|Process to produce a DVD-ready MPEG. TyTool is what I'm currently use to create DVDs. The notes that follow are still alpha-level and incomplete.. Installation To install TyTool I :- - Grabbed TyTool9r18.zip - Created "C:\Program Files\TyTools" and copied the two zip files there. - Unpacked TyTool9R18.zip and Cygwin-2-20-04.zip into the directory. - Within the TyTool zip archive there is a subdirectory called "TSERVER_Series1" which contains two files; "NowShowing.tcl" and "tserver". - ftp these files over to the TiVo, I created a subdirectory on my TiVo called /var/hack/extraction. - telnet tivo $ cd /var/hack/extraction (or wherever) $ chmod +x NowShowing.tcl $ chmod +x tserver - Run the TyTool9r18.exe within the TyTools subdirectory. This launches the TyTool shell - Under the "Server" menu, click on "Set Execute String". /var/hack/extraction/tserver -s /var/hack/extraction/NowShowing.tcl - Under the "Server" menu, click on "Set TIVO Shell Prompt". Enter the prompt
that is displayed when you first telnet into your TiVo. Then click "Ok". - You only need to set the Shell Prompt and Execute String once, they are saved across future TyTools sessions. - Type the IP address of your TiVo into the "Tivo Address:" box - Type the local working path (into which you want TiVo streams to be stored) into the "Local Dir:" box. Similarly, the TiVo IP address and working path are stored across sessions and so you don't need to enter them each time. - Ensure that the audio type (Options|Audio) is set to 5 for DVD ("48@192"). Alll being well, you should now be able to launch the tserver process... - Under the "Server" menu, click on "Start tserver". You should see a small window appear showing the output from the tserver process, all being well this should show "Doing the Lowest PriorityFix" and "Waiting for an incoming connection!" Using TyTool There are six steps to turning a .ty stream into a DVD via TyTool.
1 - Transferring a stream In the same way as for TyStudio, you can manually transfer TiVo streams over via ftp and mfs_ftp on the TiVo, or you can use the "tserver" transfer tool that is built into TyTool. Initially I was ftp'ing streams over manually, but I moved to using tserver for two reasons :-
To transfer via tserver :- - If you don't already have it running, run TyTool9r18.exe, and start the tserver process via the menu option. - You will see blank window area titled "Now Playing:" - Click on the "Refresh" button under this window. - After a couple of seconds you should see a list of available programs. - Click on and highlight one (or more) of them. - Click on the "Get" button which is under the second, grey-background, blank area which is beneath the stream list. - TyStudio will transfer the selected stream(s) into the "Local Dir" path. Time-wise, I'm not a good measuring-stick case by any means - as my TiVo is behind a wireless bridge and my media-editing PC is on the wired side of a wireless AP - and so I only get about 0.55MB/s, meaning that a 660Mb (35 minute, basic quality ) stream takes approximately 18.55 minutes to transfer, and a 3500Mb (95 minute, high quality) stream takes approximately 98 minutes to transfer. 2 - Parsing (splitting) a stream file The next step is parse (split) the .ty stream file, into video and audio components. To do this :- - Double-check that the audio setting is mode 5 (DVD) - Click on the "Parse File" button. - Select one or more .ty files - Click on "Ok" This will split each .ty stream file into video (".m2v") and audio (".m2a") streams. On a 900Mhz Pentium 3 with 256Mb RAM, this takes approximately <nnn> minutes for a <nnnn> Mb stream, i.e. <oooo> Mb/s. At the end of this stage you will have in your working directory :-
Size-wise, as an example an initial .ty file of <nnnnn> bytes gets turned into an m2v stream of <nnnnn> bytes and an m2a stream of <nnnnn> bytes. 3 - Making a Key file The next stage is to make a "key" file, this is required by the TyTool stream editor, and you will need to do it to make cuts in your stream. To make the key file for a stream :- - Click on Menu|File|Make Key file - Pick the .ty stream(s) - Click on "Ok". This creates a .key file which will be used in the next stage. On a 900Mhz Pentium 3 with 256Mb RAM, this takes approximately <nnn> minutes for a <nnnn> Mb stream, i.e. <oooo> Mb/s. At the end of this stage you will have in your working directory :-
As an example of the output file size, a .ty file of <nnnn> bytes creates a .key file of <nnnn> bytes. 4 - Editing the stream TBD 5 - Producing a DVD "VOB" file (multiplexing) TBD. This stage turns the split streams into a single DVD "VOB" file, creates a Chapter ".chp" file, and at the same time makes any cuts that you created in the above editing stage. To multiplex the files, click on "File|pppppppppp", click the "....." option, select one or more .ty files, and click "Ok". On a 900Mhz Pentium 3 with 256Mb RAM, this takes approximately <nnn> minutes for a <nnnn> Mb stream, i.e. <oooo> Mb/s. Size-wise, a .ty file of <nnnn> bytes, after trimming produces a .vob file of <nnnn> bytes. At the end of this stage you will have in your working directory :-
If you are short on disk space then you can now remove the .ty file, the .m2a file, the .m2v file, the .key file, and the .cut file (the .vob and .chp files are the most important things). (Need to check on removal order and .chp file creation stage). 6 - Creating a DVD file-system TBD Notes to be completed ...... On the 28th December I was woken up in the night by a power cut (my answerphone announces the time-of-day loudly after a power cycle). I got up to check the freezer and stuff, and found the lounge TiVo rebooting and the Cachecard drivers doing their tests. Just before they completed, the power dropped out and flicked back on again (gee thanks power company!) and the Cachecard drivers splashed up the "Possible hard disk failure" warning during the TiVo's reboot. Oh great! Sure enough /var/log/kernel showed kernel: cachectl: Caching.... 0% ....IDE: calling handler with dma_running, kernel: IDE: read command for sector 77519400 bailed with DMA running hda: unexpected_intr: status=0x59 { DriveReady SeekComplete DataRequest Error} hda: unexpected_intr: error=0x40 { UncorrectableError }, secCnt=2, LBAsect=10410542 kernel: Stopping immediate on Ide kernel: hda: tivo_dma_intr_direct: status=0x59 { DriveReady SeekComplete DataRequest Error } kernel: hda: tivo_dma_intr_direct: error=0x40 { UncorrectableError }, secCnt=2, LBAsect=10410542 which would seem like a pretty definitive disk sector error. I played a couple of recordings, and looked for any more errors. Nothing else showed up in subsequent log lines, and more interestingly smartctl showed no errors having been logged. So I pulled the drive and put it in a spare PC then let Samsung's HUtil run a full surface scan on it. 54 minutes later it completed without errors, and sure enough there was still nothing logged in the SMART logs/statistics. To retest it I then booted Linux on that box and did a dd if=/dev/hdc of=/dev/null bs=512 which again worked fine and completed ~53 minutes later without any errors. So fingers crossed maybe I dodged a bullet there I thought. My thoughts at the time were that either... (a) The drive's SMART statistics are not telling the truth and the drive remapped a bad sector, (b) There was no error and either the kernel or Cachecard drivers flagged a phantom, or (c) There was a soft sector error - the ECC bits were bad due to an in-progress write on that sector when the power dropped, and a subsequent write rewrote the sector correctly. Go figure! But then a few weeks later, I had to kill a wedged mfs_ftp and it caused the TiVo to reboot. The Cachecard drivers picked up the same error, same sector, but SMART still showed nothing. At this point I was still unsure if it was a real or phantom error, as I've generally trusted SMART implementations in the past. The TiVo seemed to run without any problems, barring the error warning on bootup, and so I left it alone. But then a month or so later I started getting random lockups when recordings were in-progress, the kernel log showing that the TiVo was basically looping attempting to write to that same sector. So I ordered an identical Samsung Spinpoint from Mark at Whispertec which arrived a couple of days later. The old and new drive were slightly different firmware versions but had the same drive geometry, and so rather than using mfsdump/mfsrestore I decided to dd the data over. I figured that regular dd was just going to die halfway and so I'd need to use dd_rescue. I put the old TiVo drive into a spare Linux pc as primary-slave (hdb) and the new one in as secondary-master (hdc) and booted up, checking that the drives and their sizes had been correctly probed. Then I turned on DMA on both drives by doing $ hdparm -d1 /dev/hdb; hdparm -d1 /dev/hdc Next I grabbed a copy of dd_rescue $ ./configure $ make $ make install To copy the drive, I then did :- $ ./dd_rescue -B 1b -b 2M -A -v -l /tmp/tivo.log /dev/hdb /dev/hdc This started off very nicely and was using a 2MB block size ("-b 2M"), and I was seeing a copy rate of 20MB/s - but then it hit the error sector and slowed down due to falling back to a 512 byte ("-B 1b") and due to retrying the bad sector. It eventually stablizied at 3M/s, slower than I'd hoped for but by that time it was half way through the copy and so there didn't seem to be any point in stopping and restarting it to try and speed things up. In the end it took just over 7 hours to copy the 120Gb drive. The output (summarized to show just the first of the 16 retries) is below. dd_rescue: (info): about to transfer 0.0 kBytes from /dev/hdb to /dev/hdc I powered down, put the new drive into the TiVo, and powered it up. It booted, TiVo-guy slid down his slide, and I successfully played a couple of recordings. Next I wanted to run an mfscheck command, but I couldn't telnet into the TiVo (this turned out to be a dodgy CAT5 f-f connector on the cable), so I left it alone while I ate dinner. Ten minutes later, I came back to find the TiVo displaying its GSOD (Green Screen of Death) display. I wasn't too surprised, as I was expecting some sort of fallout from the sector that couldn't be copied (dd_rescue would have written zeros to that sector on the new drive instead of the original data). 35 minutes later, TiVo rebooted and came back to life. Looking at the kernel log, the failure that brought it down and forced the GSOD was May 26 16:18:57 (none) FsNodeScanner[127]: Scanner hit inode with bad primary and secondary CRCs May 26 16:18:57 (none) last message repeated 7 times May 26 16:18:59 (none) DbGc[127]: saying 822 isn't garbage 'cuz never visited it! May 26 16:19:04 (none) DbGc[127]: saying 1894861 isn't garbage 'cuz never visited it! May 26 16:19:05 (none) DbGc[127]: saying 1954864 isn't garbage 'cuz never visited it! May 26 16:25:56 (none) FsNodeTable[127]: Inode page 130244 has bad CRC in primary May 26 16:25:56 (none) FsNodeTable[127]: Inode page 130244 has bad CRC in secondary May 26 16:25:57 (none) FsVolume[127]: Assert failed: 0 at fsnodetable.C line 807 in int FsNodeTable::GetPage(long unsigned int, class FsBuffer *&) May 26 16:25:59 (none) TmkAssertionFailure[127]: 0 (int FsNodeTable::GetPage(long unsigned int, class FsBuffer *&), line 807 (fsnodetable.C)) May 26 16:25:59 (none) dbgc-mcp[127]: Tmk Fatal Error: Thread dbgc-mcp <127> died due to signal -2 which was pretty-much to be expected given that empty-sector. After this, I sorted out the Ethernet connection, telnetted into the TiVo and did a :- TiVo: {/} % /tvbin/mfscheck EventSwitcher stopped mfscheck scan begins Checking reference counts All reference counts are OK. mfscheck scan ends mfscheck: 0 fatal errors, 0 severe errors, 0 warnings. You must manually restart the EventSwitcher I then rebooted the TiVo and so far (fingers crossed) all seems well. MFSExtractTivoWeb (TivoWeb module) - http://www.dealdatabase.com/forum/showthread.php?s=&threadid=8092
TivoApp (OBSOLETE) src/bins from http://home.earthlink.net/~garyw90/TivoApp.html
Tivoweb Modules
Graphic stuff
TivoTitle from http://www.dealdatabase.com/forum/showthread.php?t=8084&page=6&pp=15&highlight=TivoTitle
Extensions
For cross-compilation on spare linux box (debian woody), $ adduser tivodev
Grab libtivohack from http://www.xse.com/leres/tivo/downloads/libtivohack/ Grab http://minnie.tuhs.org/TiVo/files/tivotime/tivotime-bin.tar.gz
and http://minnie.tuhs.org/TiVo/files/tivotime/tivotime-src.tar.gz
Build a dummy library routine The stock TiVo nmbd/smbd wanted various library routines, e.g. libdl.so.<n>
- where they had been built
Port Jeff Lawson's datapipe to TiVo See http://www.planetbuilders.org/tivo/ Port Matt Johnston's Dropbear SSH server TiVo |