Make your NAS Compatible with TiVo Desktop

Introduction
NOTE: This article is only compatible with TiVo desktop versions older than 2.6 (or 2.6.1). The newest versions of TiVo Desktop will not connect to a NAS shared drive even with this workaround installed. I am disappointed, but hope ful that a future update will reverse this and allow home users to store their programs directly to their NAS.

TiVo Desktop is the software provided by TiVo that runs on your PC and allows you to stream MP3 audio and JPG photos to your TiVo. It also allows you to Transfer (copy) Television programs from the TiVo to your hard drive, where you can watch them with WMP or Burn them to DVD using Roxio MyDVD or VideoRedo TV Suite. With the Plus option you can also transcode and transfer video, such as DivX and WMV back to the TiVo so that it can be watched on the big screen instead of a small computer monitor. It is easy to use and works pretty well for what it does. There are also third party alternatives available that offer more features in exchange for more complexity in their use.

The Problem
This article addresses one bug (or Feature) of TiVo Desktop. It will not allow you to set the directory to which it stores the transferred television programs on your NAS. Attempts to do so result in repeated error messages that the folder was moved or changed, even though neither occurred. Whether it is intentional, or just a bug, it has not been fixed in three updates to the software. The problem has to do with TiVo Desktop attempting to set DOS Attributes of files in the selected folder and failing to allow you to use that folder if it can't set them the way it wants. The newest versions of TiVo Desktop, starting with 2.6 will not even allow a network drive to be selected, graying out the OK button on the folder selection dialog box if a network drive is highlighted. Thus this workaround is now only effective if you use an older version of TiVo Desktop.

Workarounds
One workaround is to place shortcuts in the folder on the PC to a folder on the NAS. This works fine for sending content to the TiVo, but not for transfers from the TiVo to the computer. Those will get placed in the PC directory and have to be moved manually to the NAS. That works fine, but some people want more.

Another is to use a program such as TiVo VideoRedo Autorpocessor Program (TVAP) and VideoRedo which automate converting *.tivo files transfered from the TiVo into MPEG-2 files, stripping commercials using VideoRedo, and saving the files. I have not tried this, though I plan to use it in the future, but it should be able to save the files to the NAS without difficulty.

Then there is the workaround of hacking your NAS to make it TiVo Desktop compatible. While it shouldn't be necessary to do this in the first place, this is after all a NAS hacking site, so we will discus this option in this article.

Hacking your NAS
The changes needed to make your NAS compatible with TiVo Desktop are actually fairly simple and straightforward. You do not need to be Linux expert, but you should have some acquaintance with the operating system, at least as a user. What we will do here is modify SAMBA on your NAS to make the share that you want to put *.tivo files onto handle DOS Attributes in the same way that windows does. Most NASes based on Linux do not do this. I presume this is due to performance issues, but don't know for sure. So if this slows your NAS down unacceptably, back out the changes and charge the exercise off as a learning experience. Linux and Samba can be configured to work this way, it is simply a matter of turning the feature on. There are a few prerequisites, the main being that the Linux kernel of your NAS supports extended attributes. I am using Freelink on an Original Kurobox and have upgraded the kernal to 2.6 using Andre's Web Installer. See Upgrade to the 2.6-kernel (ppc only) for details. You may need to ask around, to find out if your kernel is capable, or simply try this to see if it works.

Assumptions

 * 1) You have Telnet or SSH access to your NAS and can log in as root.
 * 2) You are familiar with the basic file structure of Linux on your NAS.
 * 3) You are familiar with editing configuration files.
 * 4) Your Kernel has support for extended attributes compiled into it.
 * 5) Your NAS doesn't use a RAID array and the file system containing the share supports the user_xattrib option.  See the section on your file system's options on the Mount Man page to find out if it supports the option.

Risks
I am not sure what all the risks are, or how to fix them if they occur, but I will list the ones I can think of. I hope more knowledgeable users will provide some guidance here.
 * 1) If your kernel doesn't support extended attributes, there might be a problem.  The worst case scenario is failure to boot, although it is more likely to just throw an error in a log and continue booting without enabling the option.
 * 2) If you apply the option to the wrong file system it probably won't work and may cause problems on that file system.

How To
Log into your NAS a root and Edit /etc/fstab to add the "user_xattr" option to the file system containing the share you want to make TiVo Desktop compatible. Here is my modified fstab as an example. Yours may show /dev/sdaX instead of /dev/hdaX which is fine. The X may differ on your NAS, it is 3 for me. Make sure you add the attribute to the correct file system.

Serenity:/etc/samba# cat /etc/fstab /dev/hda1      /               ext3    defaults,noatime,errors=remount-ro      0 0 proc           /proc           proc    defaults                        0 0 none           /dev/pts        devpts  gid=5,mode=20                   0 0 /dev/hda2      swap            swap    defaults                        0 0 /dev/hda3      /mnt            ext3    defaults,noatime,user_xattr             0 0 Serenity:
 * 1) /etc/fstab: static file system information.

At this point you can restart the NAS or continue with the next step. This change will not take effect until the NAS is restarted, as far as I know. (If a Linux guru wishes to edit in a command that allows this without a restart, feel free)

Next, edit your /etc/samba/smb.conf file to add the "store dos attributes = yes" line to the share you want to make TiVo Desktop compatible. Below is an example of my modified smb.conf with the addition. Your shares will be different, and you may have other options which are different. Most likely you will have settings that provide security for the share instead of the ones shown below which leave my shares wide open. (I may add some security later).

Serenity:/etc/samba# cat /etc/samba/smb.conf [global] security = share workgroup = global create mode = 777 directory mode = 777

[share] comment = Serenity Share path = /mnt/share read only = no public = yes guest ok = yes

[tv] comment = Folder for Television Shows path = /mnt/tv read only = no public = yes guest ok = yes store dos attributes = yes

Serenity:/etc/samba#

If you have done both file edits in one session, simply restart the NAS for all changes to take effect. If you restarted the NAS after editing fstab, you can do the following here to force samba to re-read the configuration file and not need to restart again.

Serenity:/etc/samba# /etc/rc.d/init.d/samba restart Stopping Samba daemons: nmbd smbd. Starting Samba daemons: nmbd smbd. Serenity:/etc/samba#

Now go to TiVo Desktop, select File/Preferences and try to change the location to your NAS. After doing this it works fine for me.

CuriousMark