ScanMan
03-17-2006, 05:10 PM
Since it seems a rite of passage to post one's experiences/results, here are mine. I had to glean information from various threads and I figured it might help some folks embarking on this to have most of it in one place. My specific unit is the 24004A with software rev. 7.2.1 but this will work for 240040 and any other tivos that begin with 240.
I don't want to preach but some words of wisdom. Read, learn, understand what you are doing. Read the killhdinitrd release thread here (http://www.dealdatabase.com/forum/showthread.php?t=36692) and also the killhdinitrd support thread here. (http://www.dealdatabase.com/forum/showthread.php?t=36693)
Map out your plan, make notes. Make sure you have a FAT/FAT32 partition on your PC. This pre-planning will make things a LOT easier. Some familiarity with linux/unix helps too. You will need a boot cd and a proper kernel that already has killhdinitrd applied to it or one you will apply yourself. The folks at PTVUpgrade have a boot disk with pre-modded kernels for $5 here (http://www.ptvupgrade.com/products/software/lba48/index.html) Or if you already have the correct kernel you can use the free lba48 boot disk at the same URL. You will also need some tools - one great source is Alphawolf's All-In-One binaries for the series2 found here. (http://www.dealdatabase.com/forum/showthread.php?p=189482&highlight=crond) You also might want some other utilities found at sourceforge here. (http://tivoutils.sourceforge.net/)
The following assumes you already have the boot cd, tools and most importantly the kernel you will be using. You surely should have made a backup image and tested it before you start - see Hinsdale's howto here (http://www.newreleasesvideo.com/hinsdale-how-to/) for pointers. Also, since we are installing telnet and ftpd, I assume you have a USB ethernet adapter. I have used the older Linksys 100M and also the Netgear FA120. For a list of compatible adapters see tivo.com. (http://customersupport.tivo.com/knowbase/root/public/tv2006.htm?) Some details may have been left out, you are hereby warned...
I chose to use a 3.1.5 kernel that already had killhdinitrd applied to it; many are now using the newer "7.2.2-oth.K1" killhdinitrd kernel which supports DHCP without additional modules. See notes below on DHCP.
Now on to the goods...
-----Hack TiVo SA S2 "240"-----
1. Attach your tivo hard drive to your pc as "secondary master" and boot from ptvlba48 cdrom; your tivo hard drive should show up as /dev/hdc in the boot messages (dmesg). The following is based on my tivo hard drive located in the secondary master position (/dev/hdc); if you have your tivo drive in another location, edit accordingly. You can generally mount the 4th, 7th and 9th partitions on a tivo drive; sometimes either the 4th or 7th doesn't exist (especially after an mfstools backup/restore).
Check what your current "root" is:
bootpage -p /dev/hdc
*output will either be hda4 or hda7 - mine was /dev/hda4 and we'll use that throughout; if your root is /dev/hda7 you will need to adjust accordingly.
Make a mount point and mount the drive
mkdir /mnt4
mount /dev/hdc4 /mnt4
2. Now dd in the killhdinitrd kernel to the appropriate partition
If result of Step 1 was "/dev/hda4" then dd if=/path/to/vmlinux.px of=/dev/hdc3
If result of Step 1 was "/dev/hda7" then dd if=/path/to/vmlinux.px of=/dev/hdc6
3. Write new bootpage params to kernel
bootpage -P "root=/dev/hda4 dsscon=true console=2,115200 upgradesoftware=false" -C /dev/hdc
--those are capital P & C; it should be hda4 or hda7 depending on bootpage -p output; the 'root=/dev/hda[4or7]' should always be hda as it is the Primary Master IN THE TIVO! It should never be any letter other than a. The /dev/hdc after the -C is the letter of tivo hard drive when it is installed in your PC.
4. Edit IPTABLES
Two ways to do this:
a.
cd to /sbin on mounted "root" partition; i.e., cd /mnt4/sbin
mv iptables iptables.old
echo -e '#!/bin/bash\nexit 0' > iptables
chmod 755 iptables
*That's a zero above - \n (newline) exit 0 - your file should look like this when done:
#!/bin/bash
exit 0
*Doublecheck it, this is the source of many errors...
b. Easier way to "fix" iptables...
insert the command:
iptables -FEarly in your rc.sysinit.author - see below...
5. Create rc.sysinit.author
cd to /etc/rc.d on mounted "root"; i.e., cd /mnt4/etc/rc.d
touch rc.sysinit.author
chmod 755 rc.sysinit.author
vi rc.sysinit.author
#!/bin/bash
export PATH=$PATH:/hacks
iptables -F
tnlited 23 /bin/bash -login &
setsid /bin/bash --login -i</dev/ttyS2&>/dev/ttyS2&
tivoftpd&
6. Move in some hacks
--I like to have my utils right in bin--
cp /path/to/ls /mnt4/bin
cp /path/to/vi /mnt4/bin
cp /path/to/setsid /mnt4/bin
chmod 755 (all of the above) --do this for each
--Make a directory for your hacks on the root partition--
*Most people recommend you put your hacks in the root because the /var directory can be overwritten by tivo
mkdir /mnt4/hacks --this name should match what you typed in rc.sysinit.author
cp tivoftpd /mnt4/hacks
chmod 755 /mnt4/hacks/tivoftpd
7. Notes on USB network drivers and 8.x Software
With the release of 8.x software, there is an apparent incompatibility between the stock tivo network drivers and the killhdinitrd kernels - reference 8.1 and my NIC (http://www.dealdatabase.com/forum/showthread.php?t=51874) thread. The incompatibility can be resolved by using Jamie's Backport Drivers (http://www.dealdatabase.com/forum/showthread.php?t=38167). You'll need to copy the "host" drivers as well as the specific driver for your USB NIC. Read Jamie's README and look at your /etc/hotplug/usb.map for more info.
*Finish
cd /
umount -f -a -r
halt
You should now have tivo booted with serial bash, telnet and tivoftpd running. Whatever else you want to do you should be in good shape.
**Notes on DHCP
The DHCP client (dhclient) does not work correctly with a killhdinitrd 3.1.5 kernel on 7.X software; read why here. (http://www.dealdatabase.com/forum/showthread.php?t=48150)
Two solutions, use a static IP address entered in the Tivo GUI - navigate through "Network Settings" and enter a static ip address that matches your subnet. Or, if you would like to regain DHCP functionality with the 3.1.5 kernel, read how here. (http://www.dealdatabase.com/forum/showthread.php?t=51000)
You can can also use the "7.2.2-oth.K1" killhdinitrd kernel with built-in DHCP support.
***Notes on Serial Bash/Channel Changing***
If you plan on using the tivo serial port + cable to change channels, as with the Motorola cable box, you will need to disable the 'setsid /bin/bash --login -i</dev/ttyS2&>/dev/ttyS2&' line by placing a comment symbol (#) in front of this line or deleting it all together. Directing /bin/bash to the serial port will screw up your channel changing and cause the tivo to reboot when you try to change channels.
***Last but not Least - Serial Output***
I spent more time working on getting serial cable output than anything else. Here's what finally worked for me - I used the serial cable from 9th tee (http://www.9thtee.com/tivoreplacementparts.htm), with a radioshack null modem adapter plus a radioshack female-to-female gender changer. You could also make your own serial cable with instructions here. (http://www.dealdatabase.com/forum/showthread.php?t=9724) I had a lot of problems getting output and it only worked when I used the "setsid" utility in Alphawolf's binaries (link above) and included the line above in rc.sysinit.author. For general help with serial console output see here; (http://www.dealdatabase.com/forum/showthread.php?t=45059) The specific thread I used in reaching my solution with setsid is here. (http://www.dealdatabase.com/forum/showthread.php?t=45244) The bonus is you end up with serial bash in case someday you need to get in for repairs and you don't have telnet...
Best of luck, hope it helps and feel free to question, comment, etc.
Peace, out.
I don't want to preach but some words of wisdom. Read, learn, understand what you are doing. Read the killhdinitrd release thread here (http://www.dealdatabase.com/forum/showthread.php?t=36692) and also the killhdinitrd support thread here. (http://www.dealdatabase.com/forum/showthread.php?t=36693)
Map out your plan, make notes. Make sure you have a FAT/FAT32 partition on your PC. This pre-planning will make things a LOT easier. Some familiarity with linux/unix helps too. You will need a boot cd and a proper kernel that already has killhdinitrd applied to it or one you will apply yourself. The folks at PTVUpgrade have a boot disk with pre-modded kernels for $5 here (http://www.ptvupgrade.com/products/software/lba48/index.html) Or if you already have the correct kernel you can use the free lba48 boot disk at the same URL. You will also need some tools - one great source is Alphawolf's All-In-One binaries for the series2 found here. (http://www.dealdatabase.com/forum/showthread.php?p=189482&highlight=crond) You also might want some other utilities found at sourceforge here. (http://tivoutils.sourceforge.net/)
The following assumes you already have the boot cd, tools and most importantly the kernel you will be using. You surely should have made a backup image and tested it before you start - see Hinsdale's howto here (http://www.newreleasesvideo.com/hinsdale-how-to/) for pointers. Also, since we are installing telnet and ftpd, I assume you have a USB ethernet adapter. I have used the older Linksys 100M and also the Netgear FA120. For a list of compatible adapters see tivo.com. (http://customersupport.tivo.com/knowbase/root/public/tv2006.htm?) Some details may have been left out, you are hereby warned...
I chose to use a 3.1.5 kernel that already had killhdinitrd applied to it; many are now using the newer "7.2.2-oth.K1" killhdinitrd kernel which supports DHCP without additional modules. See notes below on DHCP.
Now on to the goods...
-----Hack TiVo SA S2 "240"-----
1. Attach your tivo hard drive to your pc as "secondary master" and boot from ptvlba48 cdrom; your tivo hard drive should show up as /dev/hdc in the boot messages (dmesg). The following is based on my tivo hard drive located in the secondary master position (/dev/hdc); if you have your tivo drive in another location, edit accordingly. You can generally mount the 4th, 7th and 9th partitions on a tivo drive; sometimes either the 4th or 7th doesn't exist (especially after an mfstools backup/restore).
Check what your current "root" is:
bootpage -p /dev/hdc
*output will either be hda4 or hda7 - mine was /dev/hda4 and we'll use that throughout; if your root is /dev/hda7 you will need to adjust accordingly.
Make a mount point and mount the drive
mkdir /mnt4
mount /dev/hdc4 /mnt4
2. Now dd in the killhdinitrd kernel to the appropriate partition
If result of Step 1 was "/dev/hda4" then dd if=/path/to/vmlinux.px of=/dev/hdc3
If result of Step 1 was "/dev/hda7" then dd if=/path/to/vmlinux.px of=/dev/hdc6
3. Write new bootpage params to kernel
bootpage -P "root=/dev/hda4 dsscon=true console=2,115200 upgradesoftware=false" -C /dev/hdc
--those are capital P & C; it should be hda4 or hda7 depending on bootpage -p output; the 'root=/dev/hda[4or7]' should always be hda as it is the Primary Master IN THE TIVO! It should never be any letter other than a. The /dev/hdc after the -C is the letter of tivo hard drive when it is installed in your PC.
4. Edit IPTABLES
Two ways to do this:
a.
cd to /sbin on mounted "root" partition; i.e., cd /mnt4/sbin
mv iptables iptables.old
echo -e '#!/bin/bash\nexit 0' > iptables
chmod 755 iptables
*That's a zero above - \n (newline) exit 0 - your file should look like this when done:
#!/bin/bash
exit 0
*Doublecheck it, this is the source of many errors...
b. Easier way to "fix" iptables...
insert the command:
iptables -FEarly in your rc.sysinit.author - see below...
5. Create rc.sysinit.author
cd to /etc/rc.d on mounted "root"; i.e., cd /mnt4/etc/rc.d
touch rc.sysinit.author
chmod 755 rc.sysinit.author
vi rc.sysinit.author
#!/bin/bash
export PATH=$PATH:/hacks
iptables -F
tnlited 23 /bin/bash -login &
setsid /bin/bash --login -i</dev/ttyS2&>/dev/ttyS2&
tivoftpd&
6. Move in some hacks
--I like to have my utils right in bin--
cp /path/to/ls /mnt4/bin
cp /path/to/vi /mnt4/bin
cp /path/to/setsid /mnt4/bin
chmod 755 (all of the above) --do this for each
--Make a directory for your hacks on the root partition--
*Most people recommend you put your hacks in the root because the /var directory can be overwritten by tivo
mkdir /mnt4/hacks --this name should match what you typed in rc.sysinit.author
cp tivoftpd /mnt4/hacks
chmod 755 /mnt4/hacks/tivoftpd
7. Notes on USB network drivers and 8.x Software
With the release of 8.x software, there is an apparent incompatibility between the stock tivo network drivers and the killhdinitrd kernels - reference 8.1 and my NIC (http://www.dealdatabase.com/forum/showthread.php?t=51874) thread. The incompatibility can be resolved by using Jamie's Backport Drivers (http://www.dealdatabase.com/forum/showthread.php?t=38167). You'll need to copy the "host" drivers as well as the specific driver for your USB NIC. Read Jamie's README and look at your /etc/hotplug/usb.map for more info.
*Finish
cd /
umount -f -a -r
halt
You should now have tivo booted with serial bash, telnet and tivoftpd running. Whatever else you want to do you should be in good shape.
**Notes on DHCP
The DHCP client (dhclient) does not work correctly with a killhdinitrd 3.1.5 kernel on 7.X software; read why here. (http://www.dealdatabase.com/forum/showthread.php?t=48150)
Two solutions, use a static IP address entered in the Tivo GUI - navigate through "Network Settings" and enter a static ip address that matches your subnet. Or, if you would like to regain DHCP functionality with the 3.1.5 kernel, read how here. (http://www.dealdatabase.com/forum/showthread.php?t=51000)
You can can also use the "7.2.2-oth.K1" killhdinitrd kernel with built-in DHCP support.
***Notes on Serial Bash/Channel Changing***
If you plan on using the tivo serial port + cable to change channels, as with the Motorola cable box, you will need to disable the 'setsid /bin/bash --login -i</dev/ttyS2&>/dev/ttyS2&' line by placing a comment symbol (#) in front of this line or deleting it all together. Directing /bin/bash to the serial port will screw up your channel changing and cause the tivo to reboot when you try to change channels.
***Last but not Least - Serial Output***
I spent more time working on getting serial cable output than anything else. Here's what finally worked for me - I used the serial cable from 9th tee (http://www.9thtee.com/tivoreplacementparts.htm), with a radioshack null modem adapter plus a radioshack female-to-female gender changer. You could also make your own serial cable with instructions here. (http://www.dealdatabase.com/forum/showthread.php?t=9724) I had a lot of problems getting output and it only worked when I used the "setsid" utility in Alphawolf's binaries (link above) and included the line above in rc.sysinit.author. For general help with serial console output see here; (http://www.dealdatabase.com/forum/showthread.php?t=45059) The specific thread I used in reaching my solution with setsid is here. (http://www.dealdatabase.com/forum/showthread.php?t=45244) The bonus is you end up with serial bash in case someday you need to get in for repairs and you don't have telnet...
Best of luck, hope it helps and feel free to question, comment, etc.
Peace, out.