Warning: Can't synchronize with the repository (Unsupported version control system "git": Can't find an appropriate component, maybe the corresponding plugin was not enabled? ). Look in the Trac log for more information.

SubFolders Branch

The subfolders branch was created after the bug introduced in the TiVo 8.3 Software. TiVo has as of yet failed to fix this bug and it is still present in the 9.2 version of TiVo software.

The SubFolders Solution

KRKeegan created a solution which allows the TiVo folders to function as they did before the 8.3 Software bug. The solution works nearly flawlessly, however the solution can at times cause the TiVo to reboot. However under the most recent builds the reboot issue has been limited to at most once a month for most users.

Because of the slight risk of rebooting this alteration was separated from the original pyTivo to give users the option of selecting the best version for them. However any updates made to the base pyTivo distribution are also incorporated in the SubFoldersBranch. Therefore the SubFoldersBranch is just as current and sometimes more current than the base program.

Downloading, Configuring and Running the SubFoldersBranch

You can download the SubFoldersBranch from the CurrentRelease page. To enable SubFolders support enable the hack83 setting in the pyTivo.conf file.

How the Solution Works

This problem was solved with relative ease. We assume that you will browse folders in order and we can filter out any odd requests. Everytime pyTivo gets a request for a "erroneous folder" it responds with a HTTP 302 code redirecting TiVo to the correct folder. The requests look like this:

  1. TiVo requests the proper subfolder.
  2. pyTivo responds with correct info.
  3. Then almost instantaneously TiVo requests the "erroneous folder"
  4. pyTivo responds with a HTTP 302 code redirecting TiVo to the proper folder
  5. TiVo follows the 302 and requests the proper folder again.
  6. pyTivo responds with correct info.

I have seen steps 1 and 3 reversed. This is why I was sleeping in my branch before sending the 302. To make sure we got the correct request. - Armooo

This works decently well. I tried to send TiVo a HTTP 301 error which means permanent redirection as opposed to a 302 which means temporary redirection, but TiVo doesn't seem to understand a HTTP 301.

So we can safely go up folders now. But the real problem is coming back down from them. When you exit a folder to return to the parent folder TiVo sends a request for the "erroneous folder" ONLY. Thats it, it doesnt send any request that has any information to help us determine that it is going back the parent folder.

So I added a timer, if a request for an "erroneous folder" comes within 2 seconds a valid request, we assume it is just extraneous. And if it comes after 2 seconds we assume it is a request to go to the parent folder. This works, but I have found that of you enter a folder, then exit it, then try to return to it quickly TiVo just requests the "erroneous folder" and nothing else, so it looks like we are trying to go down a folder, when in fact we are not.

Additionally, I found that attempting to play a file that is in the first subfolder crashes the TiVo. I assume this is an error on our end, but I haven't gotten far enough to figure that out yet.

Possible Solutions:

  1. Just tell people they have to move gingerly through the folders?? i.e. no jumping back to a folder you were just in without pausing for a few seconds.
  2. Try and change the GUID of pyTivo. I haven't looked to see if TiVo uses the same "erroneous folder" for other servers. Maybe we can artificially cause it to reset the cache?

I have seen the TiVo send a good request to one server and the "erroneous" to a server on a different port or a diffrent PC. - Armooo

  1. See if there is ANYTHING different in the request for the "erroneous folder" that would help us figure out where TiVo is.