The TiVo LCD Project v.02
Updated: September 24, 2004
What does it do?
Displays the following information regarding your TiVo on an LCD screen:
TiVo - This script is tried, true and tested on an SA1 (Stand Alone version #1). People have attempted getting it to work on DTiVos and have been successful. [For you TiVo hacking geeks, my TiVo is a Phillips SA1 and has the original 40gb drive and another 40gb added on. Yes it has turbonet, TyTool, tivowebplus and of course, this hack.]
SA 1 - By far the easiest and most tested TiVo for this hack. Tested with the Crystal Fontz 634 (4 line display).
JPE has to be closed on the Crystal Fontz Display. Tested with Crystal Fontz 632 (2 line display).
1/8" Inch Headphone Plug - Say, you're not using the IR blaster that came with your TiVo? Perfect, lets use that. What? You threw it out? You're going to have to go to Radio Shack or cut one off of your grandfathers headphones...Radio Shack Part #274-284 or similar.
Wire - Some insulated 10awg or 12awg wire to hook all this stuff up with.
Torx Screwdriver & Misc Tools - You'll need these to get into TiVo, but if you've found this page, chances are you know what a Torx Screwdriver is and you don't even screw your TiVo back together...
Soldering Iron - Even if you've never soldered before, you can handle this project. It requires all of 4 or 5 solder points, all of which are hard to screw up. If you are still paranoid, contact a local electronics store, chances are for a small fee they'll take care of it for you.
TCL Scripts - These update the screen, more on them later.
1. Buying the LCD Screen
Easy you say...
well yes, but finding one that had the serial connection and was inexpensive was another story. Maybe I was thinking I could
get one for under $30, that was far from the truth. Since I wanted 4 lines I found out I would be paying a bit more. I stumbled
www.crystalfontz.com offering a wide variety of screens in
different sizes, colors and resolutions. I finally settled on the CrystalFontz
634 Serial LCD (
2. Hooking up the LCD Screen to TiVo
This by far was
the most enjoyable part of this project. If you are unfamiliar with the working guts of
TiVo, take a look at this site:
A. Power to the LCD Screen - Part I
This is by far the most critical portion of the project...The reason? Simple.. If you hook up the LCD screen to the wrong voltage, you'll burn it up in a matter of seconds. So listen up, I'm only going to explain this once. The HD Fan Pass through connector thingy that you have in your hands will by default put out +12v on the small red wire, that will fry your screen. So, taking a small jewelers screwdriver you can bend the tabs that hold the pins into the connector so that you can pull them out and re-arrange the wires so that the small red wire now carries +5v. See the before and after diagrams below. Notice that the red cable now carries +12v. I can't stress enough that you get this step correct. If it means checking your voltages with a voltmeter, by all means do it! I did!
If you followed my instructions properly, you can then place the connector between the power supply and one of your hard drives. You should end up with something like the photo below.
B. Power to the LCD Screen - Part II
A full schematic of the CrystalFontz LCD panel #634 is here: http://www.crystalfontz.com/products/634/634full.pdf I highly recommend reading over it so you understand the next few steps.
Now that you have the power connector hooked up properly you're going to want to solder the two leads to the proper place on the LCD's control panel. But before you do that, split the +5v line from the connector so that you can provide the power to the Light and board. See table below for J2 on the board, and the graphic below showing the solder points and wires.
J2 Configuration 7 6 5 4 3 2 1 Busy Flag Clock Chip
C. Signal to the LCD Screen
Remember that Head phone plug from the material list? Now you need to solder a single wire from spot #4 on the board (see above) to the tip of the headphone plug. Run the wire outside of TiVo through a ventilation hole in the bottom and into the Serial Jack on the back of TiVo. Now you are 100% hooked up.
D. Setting the Baud Rate
By default the LCD screen communicates at 19200 baud, a little too fast for our pokey TiVo. My SA1 TiVo worked at 4800 baud. DTiVos seem to run at 9600 or higher. See below for a table outlining the switch settings for SW1.
SW1 Configuration Baud Switch 1 Switch 2 19200 Up Up 9600 Down Up 4800 Up Down 2400 Down Down
E. Testing of the Screen.
Now for the moment of truth, well part one of it anyway. Still keeping all powers cables unplugged from TiVo, plug the HD Pass Through connector into one of the hard drive power supply leads. Plug TiVo into the wall, and within a few seconds your LCD should look like this:
If it fails to power up: Check your wiring, and your voltages. Don't say I didn't warn you about trying to shove +12v through the LCD screen. It WILL burn up.
F. Optional - Removal of 9Pin D Connector
The CrystalFontz 634 comes with a 9Pin D Connector soldered to the control board. You may want to carefully remove this from the board as it can interfere with the mounting procedure in step 3. To remove, use a small pair of pliers to unscrew the bolts & nuts. Then gently pry the metal casing up off the board. Then remove the pins one by one by trimming them or pulling them out with a pair of pliers.
E. DTiVos ONLY - Closing the JPE Jumper
For Direct TiVos ONLY, you may have to close jumper JPE with a bead of solder. Do this if you get NO data on your LCD screen.
3. Cutting the hole for the Screen
I then used a Dremel tool with a cutting wheel to make the hole in the plastic. The faceplate is about 1/8" thick, so any other method and you'll be there for quite some time. Cut from the inside out. You will have to remove some of the faceplate mounting tabs in order to cut the hole. Once I had the rough size, I used an X-acto blade to take away any excess plastic. When finished the LCD screen fit snug inside the hole. Don't worry about being perfect, you can make it look nice later with electrical tape & paint.
4. Mounting the Screen in the Faceplate
Since my LCD screen fit quite snug into the hole, I only had to use 4 dabs of hot glue at the corners to keep it from moving. I routed the wires through one of the tab holes (You may have to bend the tab up to get the Molex connectors through, be sure to bend it back down so it doesn't touch the board and cause a short) The fit will be very tight, but there is enough room in there. Note my TiVo has an insulation pad on the front of the steel. If you don't have this, you may want to cover the LCD board in electrical tape to prevent any types of electrical shorts. You can fill the gaps around the front panel and the screen by using electrical tape. Put it all back together, and you can now return TiVo to its home in your entertainment center. Don't forget to hook up your power connectors and the new cable we just made to your serial connector. See below for some mounting photos.
Before I re-attached the faceplate. Note the hot glue in the corners, and the fact that
the 9Pin D connector has been removed.
Inside, the wires coming in from the screen. Note the thick black cable running to the
left is my cable to the serial jack, I route my cable through the same hole that my
Turbonet uses, although during this process, I didn't have network cable hooked up.
I also made a border for my screen out of L shaped plastic strips I got from a hobby shop.
This gave the edge of my LCD screen a slightly cleaner look, but I wasn't happy yet,
You can't see it here, but afterwards I took some electrical tape to fill in the gaps and
as well as seal the case a bit from any light from the screen that "escaped".
5. Time to Test!
Ok, with out a doubt, you are excited at this point... After all, you just soldered few wires, breathed toxic fumes from the plastic when you cut it with a Dremel, and you successfully navigated around +5v DC! So now you want to see if all of your efforts worked. If you boot TiVo, your LCD screen should show a few lines of a Bash prompt if you've got it hooked up correctly. To test communication to the LCD panel, Download this test script, place it in your /var/hack directory, chmod 755 it, and execute it. You should see "This is a Test" on the LCD screen.
If you get garbled messages on your screen: You didn't set your baud rate correctly. Shut down your TiVo, Go back up a few steps and change the SW1 settings for your baud rate.
6. Installing the software I wrote (er...hacked...)
Give credit where credit where credit is due... so first, I didn't write this 100%myself. It is based off of the original LCD script written by someone in Denmark. Then to get the extra features I've used code from Chris Stennett's Jazzed Dailymail: http://www.deepinthejungle.com/TiVo/TiVoindex.htm
Disclaimers: First offal, my code ONLY works with CrystalFontz 634. There are NO plans to make this work for other manufacturers. You're welcome to do it, if you so choose. Second, with a little modification you could use this code on other CrystalFontz models. For instance, commenting out a few lines of the update.tcl script would get this working on a 2 line CrystalFontz display. I'm by no means programming expert, so I consider my ugly code, just that. Ugly. In fact, it probably isn't too efficient, and it could use complete overhaul. If you'd like to do that, by all means, go forint...
Requirements - TiVoLCD assumes you have TiVoweb installed in /var/hack/tivoweb-tcl. It uses the util.itcl and /modules/index.itcl scripts. If you have TiVoWeb installed to a different directory you'll have to modify udpate.tcl with the appropriate path. This has NOT been tested with TiVoWebPlus.
SA1 - For Crystal Fontz 634 only!
tivolcd.01.zip - Removed, original release (April '04)
tivolcd.02.zip - Updated script (May '04)
tivolcd.03.zip - New start script, minor bug fixes, quick.tcl - quick one time run of the script. (Sept '04)
DTiVo1 - For Crystal Fontz 632 only!
dtivolcd.03.zip - Coming soon, for CrystalFontz 632
To install - upload everything, including the directories to /var/hack. You'll have to chmod 755 the /var/hack/cron and /var/hack/etc directories, as well as their contents. Then add /var/hack/cron/cron & to your /etc/rc.d/rc.sysinit file, or whatever you use to boot.
To Configure - Update frequency, best & high record bit rate variables (for computation of free space) can be setup at the top of update.tcl
To Start - run /var/hack/lcd/update.tcl
To Stop - Delete /tmp/lcd.stop (process will stop in 1 to 5 minutes)
Here is how the code works...
update.tcl - The update.tcl script is the heart of the system. This script basically sits in a loop for 5 minutes (or whatever you set it to) doing nothing, however at the end of the 5 minutes it goes through and updates the information on the screen, then waits another 5 minutes. Once you start the script do NOT kill the process, that will reboot your TiVo. Instead, remove the file /tmp/lcd.stop The update.tcl process will notice this, and within 5 minutes, stop itself.
dim.tcl, dimmer.tcl, sleep.tcl, off.tcl - Dims the display; Dims the display even more; Displays "Shhh, I'm Sleeping..." on the screen; turns the LCD light off.
reboot_lcd.tcl - If your LCD screen gets stuck, run this script. You'll probably never have to use it.
quick.tcl - Just does a one-time screen update, good for testing if you want to see all data.
Cron jobs - Included in my distribution is cron and a crontab file that does the following. Chances are you'll have to update the crontab for your time zone, and when you want it on/off.
- Turn on LCD Light (Different times for M-F and S-S)
- Start update.tcl (Different times for M-F and S-S)
- Make screen go more dim in evening
- Stop update.tcl at 11pm EST
- Put Sleeping message on screen at 11:10pm EST
- Turn off LCD light at 11:30pm EST
- Remove Cron log every Monday
6. Questions? Comments?
I'm not sure how
much I'll be updating this software.. I wanted to get the screen to scroll the title if the title was over 20 characters, however
I have to be able to send "0x00" to the screen and TCL keeps interpreting it as end of string. If you know how to get
by this, email me: