View Full Version : Building vserver 1.2 for series 2 direct tivo

05-02-2004, 02:07 PM
I'm trying to build vserver 1.2 for my series 2 direct tivo but I'm running into make errors. I'm hoping someone might be able to point me in the right direction.

I'm using the tivo-mips_bu213 cross compiler installed into the /usr/local/tivo-mips directory. I've unpacked vserver-1.2.tar.gz and edited the makefile to point to my copy of the compiler.

When I do "make tivo" I get the following output:

gcc -Wall -g -c mfs.c -o i386/mfs.o
gcc -Wall -g -c object.c -o i386/object.o
gcc -Wall -g -c schema.c -o i386/schema.o
gcc -Wall -g -c query.c -o i386/query.o
query.c:28: warning: 'memdup' defined but not used
gcc -Wall -g -c util.c -o i386/util.o
gcc -Wall -g -c bitmap.c -o i386/bitmap.o
gcc -Wall -g -c io.c -o i386/io.o
gcc -Wall -g -c partition.c -o i386/partition.o
gcc -Wall -g -c crc.c -o i386/crc.o
gcc -Wall -g -c export.c -o i386/export.o
/usr/local/tivo-mips/bin/gcc -Wall -DTIVO -02 -msoft-float -c mfs_ls.c -o tivo/mfs_ls.o
In file included from mfs_ls.c:7:
mfs.h:214: parse error before "__extension__"
make: *** [tivo/mfs_ls.o] Error 1

Can anyone give me a clue why this isn't working properly? I've tried adding the compiler to my path but I seem to get further without it.


05-02-2004, 03:00 PM
Dear sir,

Try using the cross compiler you installed instead of the i386 gcc.


05-02-2004, 03:28 PM
hmm, I thought that might be occuring. I assume you see the issue with the .o files being created in the i386 target folder. I was curious why this was happening when I specified my make target as "tivo". I've added the /usr/local/tivo-mips/bin folder to my path. When I do a "gcc -v" I get the following:

Reading specs from /usr/local/tivo-mips/lib/gcc-lib/mips-TiVo-linux/3.0/specs
Configured with: ../gcc-3.0/configure --target=mips-TiVo-linux --prefix=/usr/local/tivo-mips --enable-languages=c,c++,objc,java : (reconfigured) ../gcc-3.0/configure --target=mips-TiVo-linux --prefix=/usr/local/tivo-mips --enable-languages=c,c++
Thread model: single
gcc version 3.0

Is there another way I can determine if I'm using the proper compiler? I'm still getting the same make error even with the additional path.

I'm sorry if this post belongs in the newbie section, I realized that I probably misposted right after I clicked submit :)


05-02-2004, 03:55 PM
Just for clarification, I'm doing a "gcc -v" from the /home/chris/vserver directory. This is the same directory that I'm doing "make tivo" from.

05-02-2004, 05:19 PM
is there a reason why you're re-inventing the wheel (http://www.dealdatabase.com/forum/showthread.php?t=33369&highlight=vserver+1.2)?

I can't recall what I did to compile it myself, but I think I had to modify the source somewhat.

05-02-2004, 06:43 PM
Thank you :) I'd seen that there was a compiled binary posted before but it didn't specify a version. I've been seeing WMP shut down unexpecedly mid stream and figured I'd give it a go and compile the latest vserver myself just to remove that variable (and of course introduce a number of new ones!)

I'll give your binary a shot

07-18-2004, 11:37 PM
When attempting to use the noted vserver binary I got the infamous "Not a TiVo Super Block" error. After some research I found that this was because of a wrong definition in mfs.h for large hard drives (I upgraded to a 120GB drive).

Since I was unable to find a version of vserver which would work for my SD-DVR40 with upgraded drive I decided to compile one for myself. I had the same problem you have here, but was able to overcome it.

For those who care, to get this to compile correctly for my SD-DVR40 running 3.1.1c, I did the following:

0) Created a cross compiler based on http://prdownloads.sourceforge.net/tivoutils/build_mips_x_compiler.sh?download but modified to use the 3.0 Tivo sources and binutils-2.14 (attached).

1) Downloaded the vserver-1.2.tar.gz from http://tivo-mplayer.sourceforge.net/ as suggested by davejp (http://www.dealdatabase.com/forum/showthread.php?t=35590).

2) Updated the mfs.h file with the new values for O_LARGEFILE as described by ronnythunder (http://www.dealdatabase.com/forum/showthread.php?p=145314)

3) Updated to the new utils.c file provided by alldeadhomiez (http://www.dealdatabase.com/forum/showthread.php?t=34943)

4) Commented out some unneeded printf statements which were causing some problems and an unneeded function definition which was causing the wierd __extension__ error message.

After this it compiled correctly and runs correctly on my machine.

I've attached the modified xcompiler script, the modified vserver source. The source contains all the tivo binaries that were created by running "make tivo" in the /tivo subdirectory for those of you who would like those binaries without having to compile them for yourself.

I've also attached the vserver binary for those who would just like to download that.

Hope this helps someone besides me. Many thanks to those mentioned above for steering me in the right direction.

07-19-2004, 02:16 AM
Very cool! Thanks for the info. I actually solved my problem by taking a different route. I modified tyshow to ignore the problem packets which actually fixed both vserver and mfsftp.


I'm going to try your fix though, it will be nice to have a properly working vserver. I remember someone patching mfsftp but that's a moving target so I'm not going to fret about that one right now.

07-23-2004, 05:26 PM
Hope this helps someone besides me. Many thanks to those mentioned above for steering me in the right direction.

I actually was having trouble to run the compiled vserver on my RCA DVR40 tivo and had no luck compiling either.

Thanks victor, now it works.

However I have a different problem now. I am getting linker errors when I try to build the MPlayer (mplayer-1.0pre1-tivo-0.19.tar.gz) that has support for the tivo:// protocol from http://sourceforge.net/projects/tivo-mplayer/

The standard (latest) MPlayer http://ftp5.mplayerhq.hu/mplayer/releases/MPlayer-1.0pre5.tar.bz2 does not seem to suport it, but I am able to compile it just fine.

All the mfs_* tools work fine. I can run vplay too.

I am wondering: Is there a way to pipe the output of vplay to mplayer?

Some additional details:
On my Linux box I am running Suse 9.1 (Kernel 2.6), gcc is 3.3.3