Goal: Stream the contents of Tivo’s “Now Playing” to any machine on the network (wireless too!).
Tools needed: A network enabled Tivo (telnet, FTP, Tivoweb), the Tivo vstream binaries. A copy of VLC for your OS of choice, the tystream plugins for your version of VLC.
Bonus Settings: Configure “1-click” playback from your browser (IE on Windows).
I’m assuming at this point that you’ve already installed a network card in your Tivo, and that you can telnet to a bash prompt, FTP to Tivo, and have got Tivoweb installed. If not, go and read this excellent guide.
On the Tivo
You need to install the vserver software. You can get this from the tivo-mplayer sourceforge page.
I used this link: http://prdownloads.sourceforge.net/tivo-mplayer/vserver-1.2.tar.gz
Installing vstream:
- Uncompress the archive and copy the vserver binary to /var/hack on the Tivo (or wherever your hacks live).
- Configure vserver to run on tivo startup by editing your rc.sysinit.author (or if you’re brave, the rc.sysinit file directly):
I just added /var/hack/vserver & to the end of the file. - Execute the binary:
# ./vserver
Hacking Tivoweb:
Tivoweb is great, and you can use it to work out which ty stream to connect to (vstream takes urls of the format: tivo://tivo.ip.addr.ess/tystreamid) but wouldn’t it be nicer to just click a link in Tivoweb and have VLC just load and start playing? Of course it would!
In your tivoweb-tcl/modules directory you’ll have a ui.itcl file - this contains the code we need to mess with - specifically the code that generates the nowshowing list. Somewhere around row 2880 is a line:
You need to add a line before that. This whole chunk is towards the end of a function, the next function is action_nowshowing, if it helps you find it! So, the line you’re adding before that if statement is:
Note where I’ve lazily hard coded my Tivo’s IP address. I could have done this properly with a variable, but really couldn’t be arsed. Change this to whatever IP your Tivo has!
Save ui.itcl, and do a full restart of Tivoweb - the now showing list should have your View link now:

On your PC
- Install VLC - it is available for multiple platforms.
- You’ll need the VLC vstream binaries - these enable tivo streaming in VLC. They’re available for OS X, Windows and Linux. They need dropping into the plugins directory in the VLC installation folder.
You’re now in a position to test it. Open Tivoweb and the Now Showing page. Right click the View link and copy the link to the clipboard. Open VLC and hit open file, paste the URL (It should start tivo://). Click Open, and it should start streaming video to your machine! Horrah!

Finally:
- Configure IE to launch VLC from tivo:// urls
Here’s the registry settings to get Internet Explorer to open “tivo://” links in VLC. Double-click the .reg file to import it into the registry. Restart IE, and now clicking that View link will launch an instance of VLC and play your chosen video. Yay! Job’s a good’un. If anyone can work out how to configure helper actions for Safari or Firefox on OSX, let me know!
Update 15/11/2006:
Thanks to helpful folks in the comments, I realised that in cutting and pasting the example Tivoweb code above, I made an error (now fixed). Hope that didn’t cause too many people any hassle!
When I run through and do this my TivoWeb page doesn’t look like your example. I don’t have a link ‘Veiw’ on mine next to the shows. Only the name of the show, day and date. I have installed all the programs and have updated the files like instructed but no luck. Any ideas?
I have inserted the line:
set delete_td “$delete_td [td [html_link “tivo://192.168.0.240/$fsid” “
But I get the following error:
INTERNAL SERVER ERROR
–cut here–
action_nowshowing ” ”
quoted string doesn’t terminate properly
while compiling
“set delete_td “$delete_td [td [html_link “tivo://192.168.0.240/$fsid” “”
(compiling body of proc “print_nowshowingrow”, line 143)
invoked from within
“print_nowshowingrow $chan $rec $nstype $rcount”
Have I got the syntax wrong ?
Thanks for any help.
Dave
I too had the problem with the syntax - I got it working with:
set delete_td “$delete_td [td [html_link "tivo://192.168.30.200/$fsid" "View"]]”
I had problems with the syntax too. I fixed it by opening the ui file in notepad and it appeared that some of the quotes from the line above (which I’d copied and pasted) were different from the others. I changed them all to be the simple-type quotes, restarted tivoweb and it worked. (NB: don’t use MS Word to edit - use a text editor!)
Hope that makes sense and hopefully it’ll help someone out there!
Thanks for posting the corrected code - much appreciated!
How can this be done for a series 2??
Okay, it took me ages to get the line added to ui.itcl, like many others, it does not translate too well to an internet page, particularly spacing was an issue for me which you can’t see properly!
Whilst I finally did get tivoweb updated, I never even got close to getting any streams appear in VLC
When I do file open and paste in the link, e.g.
tivo://192.168.1.198:8079/839688
VLC just comes up with an error:
[00000288] main input error: no suitable access module for `file://tivo://192.168.1.198:8079/839688′
[00000269] main playlist: nothing to play
Have now given up.
you probably did what I did and were using the 082 modules with a newer version of VLC. Download the old version (theres a full archive) and it works.