CuriousMark's Kurobox becomes a TiVo MediaServer Page
I have had a Kurobox for some time now and it has served well as a basic file server. I have been wanting to upgrade it to act as a media server for my TiVo, but didn't know enough Linux to feel comfortable attacking the task. Also, the thought of putting together all the pieces seemed a bit daunting. With the recent advent of nearly automatic upgrades to uboot and modern Debian distributions, plus the arrival of pyTiVo on the scene, it seems like now is the time to quit procrastinating and get started.
- Update Kuro to uboot and debian
- Create Samba shares compatible with TiVo Desktop (may be unnecessary)
- Install Python and PyTiVo, strip out transcoding functions from PyTiVo since Kuro isn't powerful enough to do that.
- Fiddle with things to improve performance and behavior
- Log it all here as I go
The primary resource is NAS-Central and the wonderful people who are behind it. I started by asking in the forums. Here is the thread that this page is based on. It shows the false starts and mis-steps that I will leave out here in order to keep things readable and usable. My thanks to Andre, mindbender, and davy_gravy for their help and patience with this Linux newbie. This wiki is also a treasure trove of information and searches have often led me to a page with just the information I needed. It is good to see it growing and maturing.
Here are Mindbender's directions from the forum thread with annotations and hints based on my experience added.
Things to do to get the Kurobox ready and software needed.
This may be where to install a new bigger drive in the Kuro. It will wake up in EM-Mode and you should be able to work from there. I didn't do it that way, I had a working box, but planned on expanding the size of the boot partition. I didn't think about expanding it until I was well into the process and found that expanding it when I did, later on, may have been better than doing so before starting. Your results may differ, you could do it now. I will describe what I did when I get to that point in the upgrade process.
Next we need the uboot, flash kernel, and Freelink code. Mindbender shows getting it like this:
cd /mnt/<br> wget http://downloads.nas-central.org/LS1_PPC/Bootloader/Uboot/Precompiled/u-boot-lsppchd-flash-1.2.0-r2.bin<br> wget http://downloads.nas-central.org/ALL_LS_KB_PPC/Bootloader/UBoot/FirmimgBins/linux-220.127.116.11-list.mg.2-v3/firmimg.bin<br> wget http://downloads.nas-central.org/LS1_PPC/Distributions/Freelink/TmpImages/tmpimage-FL-1-21-LS1.tgz
That is downloading the uboot binary + the 18.104.22.168 firmimg.bin and the freelink rootfs to /mnt/ which should be the point to which /dev/hda3 should be mounted.
Since my kurobox was only slightly updated, wget was not available to me. Instead I downloaded those files to my PC and then put them on the share drive of the kuro using windows networking. I then logged into the Kuro using telnet and moved them to the suggested directory. If you are working with a new drive, this may not be an option. The Kurobox supports ftp, and that is another way to get the files onto the box.
cd /mnt/<br> mv /mnt/share/u-boot-lsppchd-flash-1.2.0-r2.bin u-boot-lsppchd-flash-1.2.0-r2.bin<br> mv /mnt/share/firmimg.bin firmimg.bin<br> mv/mnt/share/tmpimage-FL-1-21-LS1.tgz tmpimage-FL-1-21-LS1.tgz<br>
Now the code is where it belongs.
Here is a link to the flash map of the LS1/kurobox original.
There you will see the bootloader-device is "/dev/fl2" and the firmimg.bin device is "/dev/fl1".
Updating Flash Memory and the boot partition
You can install the latest uboot without compiling by flashing the binary to /dev/fl2
see http://buffalo.nas-central.org/index.php?title=U-boot_bootloader#Flashing_U-Boot_from_Linux for the full up directions and warnings. This process was too daunting for me to try previously, so I am very glad that Mindbender provided the software and isntructions to just do it.
This is the critical part of this guide. in case anything goes wrong when flashing uboot you will need jtag to recover the box. Be warned! It worked for me on three boxes. It worked for me with no trouble either, but you should know you are doing this at your own risk, you really can brick your Kurobox.
installing uboot to /dev/fl2
dd if=u-boot-lsppchd-flash-1.2.0-r2.bin of=/dev/fl2 bs=1k
In case you have cmp on board of your currently installed execute the cmp command also to be completely sure that it worked.
I did not have cmp and did not compare. I ran into issues later and was able to compare from Freelink (as installed below) and found that Flashing worked flawlessly. If you do wish to compare, install it to your kurobox before beginning.
:# cmp u-boot-lsppchd-flash-1.2.0-r2.bin /dev/fl2<br> :cmp: EOF on u-boot-lsppchd-flash-1.2.0-r2.bin
EOF on the file means it was a good comparison. The flash device doesn't end at the end of file, so this result is expected. Everything up to the end of file compared successfully.
installing the 22.214.171.124 firmimg.bin to /dev/fl1
If you do this uboot update, I also recommend you flash the 126.96.36.199/telnet/ftp-enabled firmimg.bin to flash. This has the functionality you are used to having on your kurobox. This is an updated flash kernel that has some nice features that really makes many tasks a breeze compared to the kuro's old EM-Mode
This is the kernel that will be used in EM-Mode and when you do a two flash uboot startup.
dd if=firmimg.bin of=/dev/fl1 bs=1k
Again, if you have cmp onboard, use it to make sure everything was written correctly.
Do both of the above flash operations at the same time without rebooting. Then when you reboot you will see the box behaving differently. It should behave as shown in this youtube video by Mindbender:
Watch the video closely keeping your eyes on the disk fault light. It will blink 1, 2 or 3 times to indicate which boot mode it will execute when the entry timer expires. Each time you press the power button, the number of flashes will increment. If you do nothing it will boot "single flash". At this point in the upgrade you effectively can only boot to 2 and 3 blink mode as you only have a bootable kernel in flash, but not on the hard drive in the /boot directory (thats why you are flashing the 188.8.131.52-firmimg.bin, btw. If you don`t install the flash kernel, and reboot uboot will have problems finding a kernel to boot. The 1-blink mode will work as well, but in reality it will be 2 blink mode as it defaults to the flash kernel if no kernel is found in /boot on the hard drive. The Kurobox software does not have a /boot directory, so this is exactly what happens. A blank disk would also do the same.
Installing freelink to /dev/hda1
Once you have booted into EM mode with uboot (three flashes of the Disk Fail light during the uboot portion of startup), you can install freelink to /dev/hda1. Login via telnet, seeing the above welcome screen, and then you can do several things. The first thing I did was to repartition the hard drive. I used fdisk and mke2fs to create a 5GiB root partition, a 256MiB swap partition and left the rest of th 200GB hard drive for the working partition. Good generic directions can be found at Convert your PPC LinkStation into a full-blown Debian system. Once the partitions are right, it was necessary to ftp the tmpimage-FL-1-21-LS1.tgz file to the kuro again as shown in the pre-requisites above. Now it is time to install freelink on the hard drive.
mount_disk<br> cd /mnt/hda1<br> rm -r *<br> tar xzvf ../hda3/tmpimage-FL-1-21-LS1.tgz<br>
That should be all, when you reboot again you will be running Freelink.
This is now the beginning, Freelink needs configuring and addition of all the software you will want to make the box functional as a NAS and media server. I had tried to configure it using freelinkomatix but had some troubles and had to back up to the step shown here and start over using the manual direction at Freelink - Convert the LinkStation into a Full-fledged Debian Linux Server, starting with step 3.
Installing U-Boot on a Kurobox HG
Here are Mindbender's directions.
how to install LNI uboot + 184.108.40.206-firmimg.bin to the kuroboxHG/LS HG/LS HS
This section is taken from Mindbender's post, but I have not tried it given that I only own an original Kurobox. It should work just as well as the standard update did for me.
(thats downloading the uboot binary + the 220.127.116.11 firmimg.bin to /mnt/ which should be the point where /dev/hda3 should be mounted to)
ok, here is the flash map of the LS HG/LS HS/kuroHG original. http://nas-central.org/index.php/Information/HGFlashROM there you see the bootloader-device /dev/mtd1 and the firmimg.bin device /dev/mtd0.
you can install the latest uboot without compiling by flashing the binary to /dev/mtd1 http://buffalo.nas-central.org/index.php?title=U-boot_bootloader#Flashing_U-Boot_from_Linux
this is the critical part of this guide. in case anything goes wrong when flashing uboot you ll need jtag. be warned. it worked for me on three boxes...
installing uboot to /dev/mtd1
dd if=u-boot-lsppchg-flash-1.2.0-r2.bin of=/dev/mtd1 bs=1k
in case you have cmp on board of your currently installed execute the cmp command also to be completely sure that it worked.
installing the 18.104.22.168 firmimg.bin to /dev/mtd0
if you do this, i recommend to flash the 22.214.171.124/telnet/ftp-enabled firmimg.bin to flash....this has the functionality you are used to on your kurobox.
dd if=firmimg.bin of=/dev/mtd0 bs=1k
again, if you have cmp onboard then use it to make sure everything got written correctly.
do both at the same time without rebooting. then you can reboot the first time...you ll see the box behaving differently...hopefully that way: http://www.youtube.com/watch?v=pTPrrUYd8O8
then you effectively can only boot to 2 and 3 blink mode as you only have a bootable kernel in flash (thats why you are flashing the 126.96.36.199-firmimg.bin btw...if you don`t and reboot uboot will have problems to find a kernel to boot). the 1-blink mode will work as well, but in reality it will be 2 blink mode as it defaults to the flash kernel if no kernel is found in /boot
Update to latest 2.6-kernel last desirable thing to do is to update to a late 2.6 by running andre`s webinstaller with variant-uboot mode: http://hvkls.dyndns.org/downloads/documentation/README-webinstaller.html
This did not go well for me at first. Here is my expanded set of directions that worked better.
Update Freelink before updating the kernel to 2.6
I found that the web installer failed and asked me to reinstall several items using apt-get when I ran it on a virgin Freelink installation. When I tried to do the re-installs, apt-get cried foul and failed saying I needed to run apt-get update first. Upon running that, it had a failure and recommended running it again. the second apt-get update worked with no error messages and then the re-installs worked fine. After all of that, the web-installer ran without a hitch. Here is a summary of the command lines and the order that should get things up and running quickest.
foonas is easier for testing you can between also test http://downloads.foonas.org/foonas/alpha/lsppchd/foonas-bootstrap-image-1.0-dev-lsppchd.rootfs-svn-1062.tar.gz it has the advantage that you do not need to provide a 2.6-kernel as it already has one included...and /etc/fstab is already modified the right way.....so you would only need to untar it to /dev/hda1 and then reboot to 1 blink mode.
Things left to do when upgrading to 2.6 remember that if you update to a 2.6 kernel using foonas you will have to modify /dev/fstab...in 2.4 all devices were called /dev/hdaX , in the current foonas 2.6-kernels they use the /dev/sdaX device. The 2.6 kernel installed by Andre's web installer uses hdaX and no modification to /def/fstab is required when using it.