PDA

Bekijk de volledige versie : HOW-TO: Compile/run Fuppes media server on WL700ge



neil
21-01-2008, 16:03
My first How-To, so if its not right, just nag me until I change it ;)

So why fuppes? One of the attractive uses of the Wl700ge is as a media server, using my newly acquired Xbox360 as the player. Now, there's a bunch of UPnP media servers out there which will play nice with the Asus box, but principally there are 3 key players:

1) TwonkyMedia: haven't tried, but everyone who uses it says its good. Search these forums for instructions on getting it running, but it costs money. Not much money, but that's still more than I can afford right now.

2) Ushare: I've tried this, there's an optware package available, its easy to configure, and it worked real nice with my Xbox360. Free. However, it presents all my music as one big huge file list. I want it broken down into albums, even genres/artists etc. According to the author of ushare, it's because it doesn't support metadata extraction, and he says there's no plans to do so.

3) Fuppes. The new kid on the block, there's an optware package available, and it has xbox360 support builtin. Further, it has virtual folder creation support built in, meaning it should be able to organise the files according to album/artist/genre etc as desired.

For me, its a no-brainer. Use Fuppes. And then the problems begin...the optware package in the normal ipkg place is old (0.7.1) and is pre-box360 support, and pre-virtual folder support. So I need to compile my own version, and having never done so before on the asus, I thought this would serve as a useful tutorial for others - and hopefully you can return the favour by fixing some of my outstanding issues (see later).

(I'm assuming you're running KFurge custom firmware 1.0.4.6)

Firstly, get the compiler and support:



ipkg install -force-overwrite buildroot
ipkg install -force-overwrite optware-dev
ipkg install mktemp


Then, get the latest Fuppes source code (I used SVN586) from subversion repository. I used subversion on the PC to get it, and then copied the files onto my Asus, but I noticed there is an SVN optware package ("ipkg install svn" ?) if you wanted to go that route.



cd /shares/MYVOLUME1/MYSHARE1
mkdir fuppes
svn co http://fuppes-svn.ulrich-voelkel.de/trunk fuppes


For me, this gets the code into my default share, so I can access from Windows machine. Before configuring/compiling, go this 'fuppes' source directory, and change all instances within the files of /bin/sh to /opt/bin/bash (assuming you have bash shell installed). Then, create the config files to get ready for 'make'



autoreconf -vfi


And this is where the fun starts. Chances are you'll get a bunch of 'not found' stuff on doing this. You'll need to go through many of the tools in /opt/bin and change the start lines from (#!/bin/sh to #!/opt/bin/bash) - these will be e.g. 'autoreconf' 'libtool' etc etc - I'd list exactly which they are but I've changed them now, so don't really want to go back to fresh machine at this point! (maybe if you follow this, you could list for others). Eventually it will succeed. I had a bunch of warnings such as something to do with split files or some such, but these never bothered me. You might need to repeat the process until its all done with no errors.

Then, it will have created config scripts etc - go through any new files in the fuppes directory and again change these for /bin/sh instances to /opt/bin/bash. When ready do:



./configure --prefix=/opt --disable-transcoding


(This is for building without transcoding: don't fancy the idea of runing transcoding on our humble asus - if anyone else gets it working, and you'll need further tools such as ffmpeg/lame/imagemagick, then please let me know)

This should (SHOULD) now create the Makefiles you'll need. It may also give 'not found' errors - as before, try and work out what /opt/bin tools need their shells changing to /opt/bin/bash, and list here if need be.

Eventually you'll get a Makefile in this directory and a subsequent one in the 'src' directory. Any other files created, again change /bin/sh instances to /opt/bin/bash. In the two makefiles, you'll need to get rid of the -O2 compile flags from the CXXFLAGS lines (keep the -g and the -DISABLE_TRANSCODING though!). If you don't do this you'll get an 'internal compiler error' when compiling UPnPAction.cpp - i.e. the first file ;)

Now, you should be ready to go: enter the fuppes directory and do



make


and after about 1hour 45mins, it'll have built you a copy of fuppes.
Do



make install


to finish up, and then you can run fuppes (or fuppesd the daemon version) - see the documentation at http://fuppes.ulrich-voelkel.de/wiki/index.php/Main_Page for further info on setting it up (the config file is /opt/.fuppes/fuppes.cfg and you'll want to copy the vfolder.cfg file from the fuppes dir into /opt/.fuppes).

With a bit of luck, and enabling the xbox360 sections in both fuppes.cfg and vfolder.cfg you should be able to get the 360 to see it. Note: you need to add the <description_values> section to fuppes.cfg (see http://fuppes.ulrich-voelkel.de/wiki/index.php/Microsoft_Xbox_360) for the 360 to see it properly. Go to dashboard, media 'blade', do pictures/music and change source (x button). Worked for me.

This is as far as i've got: run fuppes, rebuild the database/virtual folders, and it works: the 360 sees it, and i can see some music in the 'songs' section. But a couple of issues remain:

1) I can't see any of my photos, or avi videos: These are all from a copy of my iPhoto library from my mac onto the shared asus drive.

2) My music is just one big mess of various albums together - the config of the virtual folders doesn't seem right to me).

3) I can't seem to run fuppes as a daemon, so that it starts nicely from rc.local. I'm sure this is a bit of linux trickery, but simply doing 'fuppes &' or 'fuppesd > /dev/null' didn't seem to work for me. Must be missing something - if you get it working in rc.local let me know!!

Reading from various forums, people have got it working nicely, but I'm a bit stumped. It seems like just a configuration issue now (apart from '3' above) but i've not had success thus far. All help really appreciated right now!

And that's it: if you try it, post comments and let me know: i'll update this 'how-to' with your experiences so hopefully we get the definitive media server for the asus box.

~neil

Henrikh
21-01-2008, 20:56
Seems interesting, and thank you for riding a so detailed how-to :)

Anyways, right now it seems that their are some pretty big disadvantages compared to uShare, but there is definitely potential :)

mumsoft
21-01-2008, 22:41
Hi,

Interesting stuff! I will definitly give it a try, but I will wait for K.C.Furge's upcoming firmware, as that does away with the need of changing every #!/bin/sh to #!/opt/bin/bash.
see:
http://wl500g.info/showthread.php?p=78326#post78326


My new firmware image coming out really soon solves this problem. I made an application that looks for a KCSHELL environment variable. If that environment variable is set, then calling /bin/sh executes the shell referenced by KCSHELL, normally /opt/bin/bash. If it is not set, then calling /bin/sh executes the busybox shell. This approach guarantees Asus compatibility and eliminates annoying problems like what you're experiencing.:)

Marc

neil
22-01-2008, 09:40
Henrikh: ta! yes, as it stands today, its much the same as ushare (although i'd say not big disadvantages) - if I can get it config'd correctly it should be leaps and bounds further on (unless you know more about ushare than I've found: certainly the author is more geared to the ps3 he owns, and has stated that he doesn't intend to support the meta data requried for nice folder access on xbox360) - tried again last night, but still no progress. And ushare doesn't support transcoding whereas fuppes does - but as before, I'm not convinced our asus has the grunt for it!

mumsoft: i hadn't realised that KFurge was planning that: I was going to post that very recommendation today! If that's the case, and judging by his recent comments the new firmware isn't a million miles away (less than a month Kfurge?) then probably worth waiting, although if anyone else tries and can fix the config for xbox360 then i'd REALLY appreciate it!!

Henrikh
22-01-2008, 17:05
Henrikh: ta! yes, as it stands today, its much the same as ushare (although i'd say not big disadvantages) - if I can get it config'd correctly it should be leaps and bounds further on (unless you know more about ushare than I've found: certainly the author is more geared to the ps3 he owns, and has stated that he doesn't intend to support the meta data requried for nice folder access on xbox360) - tried again last night, but still no progress. And ushare doesn't support transcoding whereas fuppes does - but as before, I'm not convinced our asus has the grunt for it!

mumsoft: i hadn't realised that KFurge was planning that: I was going to post that very recommendation today! If that's the case, and judging by his recent comments the new firmware isn't a million miles away (less than a month Kfurge?) then probably worth waiting, although if anyone else tries and can fix the config for xbox360 then i'd REALLY appreciate it!!

Well i think i was able to make my Xbox see my AVI files when i had uShare up and running, dont know about the photos.

But i messed around with the router and right now, i'm just sharing it from my PC :0). If the problems with fuppes can be sorted out, it will be really nice, especially the virtual folder thing, since its pretty useless to have them all listed as one big mess, if you have more than just a couple of hundred songs :)

Unfortunately, i can't even gain access to my router as it right now, and i don't bother to fix it, since Kfurges new firmware is just around the corner. But when it comes, i will definitely be giving your tutorial a try :)

neil
28-01-2008, 10:54
Ok, compiling fuppes under 1.0.7.8 is a bazillion times easier thanks to the KCSHELL modification in this version. once again, thanks K.C.

I now have files organised according to albums/genre/artist etc - which is a big step on from ushare for me (>100 albums = 1 big mess of files under ushare which isn't practical for me). still no photos/videos - but i know why at least the photos don't work (more later).

so, to compile fuppes, you'll need to install the following ipkgs



ipkg install optware-devel
ipkg install buildroot
ipkg install sqlite
ipkg install pcre
ipkg install ffmpeg
ipkg install pcre


First, you'll need taglib (google it, download source)

compile by doing



autoreconf -vfi
./configure --prefix=/opt
make
make install


this is necessary for the 'by album/artist' vfolder searches. i seem to remember getting an error in the 'make install' part, but by this stage its already created the libtaglib files necessary and put them in the right place, so its probably ok.

then, get latest fuppes (i use 586, but a 587 was released last night), and compile as in the original post i made. note: you don't need to do any of the pesky changing /bin/sh to /opt/bin/bash now! woohoo!

...but you still need to drop the -O2 flag as before from the two makefiles.

then make/make install as before and all shoudl work.

NOTE: does anyone know how to cross-compiling for the wl700ge ? ie it would be loads quicker to compile on a windows machine (running cygwin say?) or a linux box (although i don't have access to one right now)

This gets me a working, semi-organised music folder udner fuppes. Why no video? no idea - working on that, but i believe its down to libavformat issues - will try and compile latest/greatest and try again.

photos? well, it seems that fuppes needs to use imagemagick to extract the meta-data from the jpgs for resolution etc - the 360 needs these to work correctly. the imagemagick package under optware repository doesn't seem to cut-it (fuppes needs ImageMagick++) and i've no success with compiling it from source yet (hence why i need cross-compiling option, cos its easier/quciker to work with)

hope this helps - if anyone else is interested in working with me on getting fully-working fuppes up and running under the wl700ge i'd appreciate it: i still think its the best non-twonky route for media serving to the xbox360 available at present

Henrikh
29-03-2008, 15:45
So i finally had some spare time to play around with this thing :). Unfortunately, it didn't went as smooth as i had hoped for.

What version of taglib did you compile? The autoreconf and configure seems to work (all through i did encounter some of the "split value" errors while doing autoreconf) but when i run make i encounter the following error:


tstring.cpp: In member function 'int TagLib::String::toInt() const':
tstring.cpp:436: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
make[3]: *** [tstring.lo] Error 1
make[3]: Leaving directory `/shares/MYVOLUME1/taglib/taglib-1.5/taglib/toolkit'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/shares/MYVOLUME1/taglib/taglib-1.5/taglib'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/shares/MYVOLUME1/taglib/taglib-1.5'
make: *** [all] Error 2


Did you encounter this error?

*Update*

So far so good. The problem was the O2 flag in the CXXFLAGS part of the makefiles. Now the "make" part completes without error, but make install gives the following error:



make[3]: Entering directory `/shares/MYVOLUME1/taglib/taglib-1.5/bindings/c'
test -z "/opt/lib" || /opt/bin/mkdir -p "/opt/lib"
/bin/sh ../../libtool --silent --mode=install /opt/bin/install -c -p 'libtag_c.la' '/opt/lib/libtag_c.la'
libtool: install: warning: relinking `libtag_c.la'
/opt/bin/ld: cannot find -ltag
collect2: ld returned 1 exit status
libtool: install: error: relink `libtag_c.la' with the above command before installing it
make[3]: *** [install-libLTLIBRARIES] Error 1
make[3]: Leaving directory `/shares/MYVOLUME1/taglib/taglib-1.5/bindings/c'
make[2]: *** [install-am] Error 2
make[2]: Leaving directory `/shares/MYVOLUME1/taglib/taglib-1.5/bindings/c'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/shares/MYVOLUME1/taglib/taglib-1.5/bindings'
make: *** [install-recursive] Error 1

UncleX
23-05-2008, 14:43
Hai

I am using the recent version 1.9.2.7-9 of Oleg's optware on my WL-500gx (deluxe).

I can easily install fuppes using <ipkg install fuppes>. However when I execute the command or scriptfile <fuppes> I get the error message

"[ContentDatabase] create database at Fri May 23 14:36:17 2008
terminate called after throwing an instance of 'EException'
what(): 10EException"

I have the file <fuppes.cfg> and <fuppes.db> in root/.fuppes, however no process Fuppes is not part of my process list (ps). I treid several times but it does not seem to help

Can somebody help please?

Mr big
28-09-2008, 03:35
So i finally had some spare time to play around with this thing :). Unfortunately, it didn't went as smooth as i had hoped for.

What version of taglib did you compile? The autoreconf and configure seems to work (all through i did encounter some of the "split value" errors while doing autoreconf) but when i run make i encounter the following error:


tstring.cpp: In member function 'int TagLib::String::toInt() const':
tstring.cpp:436: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
make[3]: *** [tstring.lo] Error 1
make[3]: Leaving directory `/shares/MYVOLUME1/taglib/taglib-1.5/taglib/toolkit'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/shares/MYVOLUME1/taglib/taglib-1.5/taglib'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/shares/MYVOLUME1/taglib/taglib-1.5'
make: *** [all] Error 2


Did you encounter this error?

*Update*

So far so good. The problem was the O2 flag in the CXXFLAGS part of the makefiles. Now the "make" part completes without error, but make install gives the following error:



make[3]: Entering directory `/shares/MYVOLUME1/taglib/taglib-1.5/bindings/c'
test -z "/opt/lib" || /opt/bin/mkdir -p "/opt/lib"
/bin/sh ../../libtool --silent --mode=install /opt/bin/install -c -p 'libtag_c.la' '/opt/lib/libtag_c.la'
libtool: install: warning: relinking `libtag_c.la'
/opt/bin/ld: cannot find -ltag
collect2: ld returned 1 exit status
libtool: install: error: relink `libtag_c.la' with the above command before installing it
make[3]: *** [install-libLTLIBRARIES] Error 1
make[3]: Leaving directory `/shares/MYVOLUME1/taglib/taglib-1.5/bindings/c'
make[2]: *** [install-am] Error 2
make[2]: Leaving directory `/shares/MYVOLUME1/taglib/taglib-1.5/bindings/c'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/shares/MYVOLUME1/taglib/taglib-1.5/bindings'
make: *** [install-recursive] Error 1


I have the same problem with "/opt/bin/ld: cannot find -ltag".
Does anyone know how to solve this?

gmar234
20-01-2009, 21:25
Just installed fuppes SVN-578-1 via "ipkg install fuppes". And if I state specific paths at the rc.local it also runs a separate process(es):

fuppes --config-file /opt/etc/fuppes/fuppes.cfg --database-file /opt/etc/fuppes/fuppes.db --vfolder-config-file /opt/etc/fuppes/vfolder.cfg 2>&1 >/dev/null &

Unfortunately it seems that the downloaded fuppes does not evaluate the ID3-tags of my MP3s. Looking at the web status screen it tells me "build options: taglib false". Wonderful.

So is anybody out there owning a ipkg of fuppes built including the taglib option and be so kind to make it publicly available?

Michelasso
06-04-2009, 19:25
Just installed fuppes SVN-578-1 via "ipkg install fuppes". And if I state specific paths at the rc.local it also runs a separate process(es):

fuppes --config-file /opt/etc/fuppes/fuppes.cfg --database-file /opt/etc/fuppes/fuppes.db --vfolder-config-file /opt/etc/fuppes/vfolder.cfg 2>&1 >/dev/null &

Unfortunately it seems that the downloaded fuppes does not evaluate the ID3-tags of my MP3s. Looking at the web status screen it tells me "build options: taglib false". Wonderful.

So is anybody out there owning a ipkg of fuppes built including the taglib option and be so kind to make it publicly available?

Did it work? I did install SVN-578-1 as well with "ipkg install fuppes" using the nslu2 repository, but it keeps crashing. I tried everything. Got the .cfg files as well from a web site just in case.

I have an ASUS WL500GPv2 with Koppel (Oleg) fw 1.9.2.7-10-USB-1.70