FUPPES Revisited
So after a bit more Googling, I took another look at FUPPES. The "release" (SVN-578) seems quite a bit more stable. The version I was working with is SVN-634, which is the latest from the author's subversion repository. It still has the mostly the same pros and cons. The stable version doesn't automatically watch directories, though. So the pros and cons balance out again.
I also read on the uShare site that development has stopped there.
FUPPES does seem the most promising out of all of them, but Ulrich Völkel hasn't been doing too much with it lately. There was even a fork of FUPPES proposed in the forums so people want to contribute, but not much has become of that, either. I may try to debug some of the segfaults myself, we shall see...
UPnP Media Servers
After doing quite a bit of research on media players in 2007, I convinced Jessica to get me a D-Link DSM-520 for Christmas that year. Since then, I've made most of our DVD collection and all of our music "on-demand". Well, sort of.
Things still have a long way to go in the whole "digital entertainment" arena. The focus of this post, however is the Media Servers that serve the content. Being geeks, we've acquired several media players in the house over the years. This includes my now aborted MP3 Box project as well as off the shelf products. We have a Netgear MP101, a MacSense HomePod and the aforementioned D-Link MediaLounge DSM-520. They each have their strengths and weaknesses.
The idea behind them all was to have a central location that we store our content. That I've got covered without a problem. Shortly after getting the MediaLounge, I put together a file server to hold all of our media. This includes all of my MP3's, Jessica's MP3's and a big chunk of our DVD collection. Its a Centos 5.2 box with the content exported via NFS and CIFS/Samba. Being geeks, Jessica and I each have a Linux machine and a windows machine that we each use. For me, I use the Music Player Daemon on my Linux (Fedora 10) box to play my music, Jessica uses Amarok on hers (Fedora 7). All of our music is stored on the file server. Neither of us use Windows to play music. We do use Windows to play videos, but not very often, thats what the MediaLounge is for. The file server provides everything in a consistent way to us on both our Windows and Linux machines.
So far, so good, right? Not really. Amarok and MPD both store their playlists differently, so we can't share playlists. Not a big deal. Until, that is, we want to hear music in the dining room, the entertainment room, or our bedroom. I still haven't figured out a good way to do that.
That brings us to the topic of this post, UPnP Media Servers. The idea behind them a UPnP Media Server is brilliantly simple: Given a collection of media, listen for connections on the network from Media Renderers and serve them the content. The implementation, however, leaves much to be desired.
I've experimented with about half a dozen different media servers. They each have their pros and cons. What I would like to see is something that will only expose audio files (MP3's mainly with a few OGG files thrown in for good measure) to the Netgear and Homepod and expose video (mostly XViD) and audio files to the MediaLounge. The containers that they expose should be consistent with the file system hierarchy I've setup on the file server.
Part of the reason for the MediaLounge is for playing TV shows. For example, show's like Las Vegas are really annoying to play on the DVD player because the disks are double sided. After watching a show, I have to go and flip the disk, wait for the DVD player to read, go through all the annoying notices, etc, etc,. Some of the DVD's take nearly 10 minutes from the time you put in the disk to the time you can actually watch the content. On the file server I've got the directory structure laid out in a tree like so (for example):
/SharedMedia
- Movies (non-series movies are here)
- Star Trek
- TV
- Las Vegas
- Season 1
- Season 2
- etc.
- Mash
- Season 01
- etc.
- Las Vegas
- Music
- Jessica
- Celtic Women
- tATu
- Marc
- Nevermore
- Soilwork
- Jessica
(No our musical tastes don't really match, which is another reason that we've both wanted this type of setup.) Within these directories are the actual video files or audio files. This makes it very easy with the MediaLounge to find a movie or TV show and watch whatever season/episode that we want.
So here is the list of pro's and cons for each of the Media Servers I've tried:
uShare
This is the one that I'm currently using. It is very basic, though.
Pros:
- Reliable - it has never crashed.
- Easy to configure. The entire configuration consists of about 10 options.
- Follows my container/directory layout.
- If I tell it to add "/SharedMedia/TV", then it will present "TV" to the MediaLoung as a top level menu, complete with all of the subdirectories. This is probably the biggest reason I stick with uShare.
- Fast. It keeps its entire directory structure in memory, so it doesn't have to scan the disk when a renderer is asking for the content.
Cons:
- A little too basic at times. There is no way that I have discovered to server an Internet Radio Station (i.e. Shoutcast/Icecast) to the MP101 or the DSM-520. I can stream from MPD to Icecast, but I can't get uShare to serve the URL in a way that either of these devices will recognize.
- Adding or removing media requires either a restart or a "killall -HUP ushare" to get it to rescan. This also means that any connections to the server will reset. Since I add and remove media from it via Windows or a different Linux machine, it would be nice if it could automatically see the changes and not require me to login to the file server to issue additional commands to get it to recognize the changes.
- Playlists don't seem to be able to be seen by the MP101. Perhaps that is because the file system is different from either of the media players, but perhaps a "playlist transcoder" would help. Again, we would be talking about extra scripts or more commands each time a change was made to a playlist. Now that would be a pain.
GMediaServer
I've probably got the capitalization wrong on that, but it doesn't matter. If I remember correctly, uShare is a fork of GMeidaServer. GMediaServer is almost the same as uShare, but it is unmaintained. I wouldn't even bother with it at the moment. It did have one pro over uShare, in that it has an MP101 mode that gives the Netgear its "Artist", "Genre", "Playlist", etc menus. Nice, but not necessary. I'm not even going to bother with a pro/con list for GMediaServer since the project seems dead.
MediaTomb
This one I keep coming back to ever few months and after fiddling with it for a couple hours end up going back to uShare.
Pros:
- Stable. This is another one I haven't had crash.
- Easy to add files to share via the web interface.
- Transcoding. MediaTomb claims to be able to transcode media. This would be great if I had a bunch of ogg files that I wanted to play on the Netgear, it could theoretically transcode them to MP3 on the fly. I've not tried it though.
Cons:
- It has its own container structure when serving files. What was once "TV" on the root menu of the MediaLounge is now buried 3 layers deep and it exposes "SharedMedia" as well. That means I have to drill down at least 4 levels before I even get to the "TV" or "Movies" directory. Supposedly this can be changed, but the default display configuration is about 2000 lines of Javascript code and not something I want to mess with. It tries to organize things in a reasonable manner, but it seems very "music-centric" with meta-containers for artist, album, etc, that don't work well for video files.
- Slow. It takes hours for it to scan the 10,000 or so files I've got shared. This is the meta-data scanning, but its still slow.
- Couldn't get it to serve an "Internet Radio" item for my icecast server.
FUPPES
I just discovered FUPPES on Saturday, which is partially what prompted me to write this article. I would describe FUPPES as somewhere between MediaTomb and uShare. It supposedly can transcode (though I didn't test it) and have virtual containers that can be laid out in the way that I want. The default presentation of the containers is exactly what I wanted though.
I can't use FUPPES at this point though. First, when I tried compiling it from the latest subversion code, I had to go in and fix a typo in one of the functions before it would even build. Second, I had to manually configure the configure script to support the taglib for meta-data in audio files. These first two things didn't bode well for it. The killer was that it kept segfaulting and crashing every time I did a database update or refresh. That was the deal breaker. I can't and won't run something thats not stable. The last thing I want to do is be sitting and watching Blazing Saddles and have the server die for no reason, get up, restart the server and then try to get the MediaLounge to fast forward or jump to where I left off. The 15 minutes that would take would kind of ruin my enjoyment of the movie.
Pros:
- Quite configurable. More configurable than uShare or GMediaStreamer and much easier to configure than MediaTomb, though perhaps not quite as tweakable as MediaTomb. Since I don't want to spend 40 hours configuring MediaTomb, this is a big plus.
- "Virtual" folders. A bit tricky to setup, and not very well documented, but pretty cool. With just a bit of massaging, you can set up a virtual folder layout that will list music by Artist, Genre, etc.
- Per-device Virtual folders. This is what really drew me to FUPPES. This would, in theory, allow me to present only the audio files to the Netgear MP101 and Homepod while still presenting all media to the MediaLounge. To make this work, I would have had to give the MP101 a static IP address on the network, and then have FUPPES use that to identify it, but thats a minor thing and really speaks more to limitations in the MP101 than it does to FUPPES.
- Quick. By quick, I mean in comparison to MediaTomb. uShare and GMediaStreamer don't pull the meta-data in so they are very fast. FUPPES loaded the 10,000 or so files in just about 10 minutes, which isn't bad. You only need to do this scan once, so the speed is kind of a moot point, though.
- Automatically rescans directories for new content.
Cons:
- Crashes whenever a database update or rescan is started. I did a bit of debugging and a couple gdb backtraces on it to see if it was one file that it didn't like, but it wasn't reproducible. It just crahsed. This was my deal breaker for FUPPES.
- Lost directories for no apparent reason. In my Music directory, I have three sub-directories, marc, jessica and playlists. Playlists dropped and I had to remove and re-add Music to get it back. It crashed when I did this, too.
- Building FUPPES is not for the feint of heart. I didn't have any trouble with it, but not everyone is going to be able to figure out subversion and fix typos in source files. The authors would go a long way by getting it added to the RPM Forge repositories for Fedora and Centos, or even Fedora Extras.
- Couldn't get it to serve an "Internet Radio" item for my icecast server.
TVersity
TVersity gets more of an honorable mention here. Mostly because it actually meets all of my requirements, save one: Its Windows only. I'm not the type of person that will run a Windows server. Say what you will, but you'll never convince me otherwise, Windows is not well suited for being a server. I can't NFS mount from a Windows machine without all kinds of extra (buggy or expensive) software, I can't SSH in to manage it remotely, etc, etc.
Pros:
- Easy to setup. Very easy, its a Windows program with a wizard.
- Was able to add an Internet Radio feed to my Icecast server and feed it successfully to the MP101. The way that worked was I had my Music Player Daemon set to stream to the Icecast daemon on the file server. I setup the URL in TVersity and added it as an Internet Radio feed. On the MP101 I selected that from the list and it worked. None of the others seem to be able to do that. I don't know if its a mime-type setting or what, but I haven't been able to figure out how to make any of the others do that.
- The folder heirarchy was for the most part preserved.
- Has the ability to transcode.
- Can pull RSS and other video feeds from places like YouTube and stream them to the MediaLounge.
- TVersity is the only free Windows server I came across that was quite complete and good.
Cons:
- Windows only. This is a deal breaker for me.
There are a few others that I haven't tried, but they're all similar in function to uShare, GMediaServer, MediaTomb or FUPPES. Most of them aren't as mature as these four are. There is a pretty extensive list on Wikipedia but most of them are tied to other projects such as MythTV (uShare) and are not designed to be generic enough for my needs.
I've got high hopes for FUPPES, but development there seems stalled, too. Surely there are more people out there with a setup similar to mine, who don't want all of the "active content" and just want to serve their files to their devices simply and easily.
I'm still looking for a playlist solution, but that seems elusive too without resorting to writing another program or some other scripts.
My search continues...
First update of 2009
Well, the last two years have been.....Interesting.
This is just a quick update to give the site a recent post and start to get back into the whole blogging thing again. Things have been extremely hectic for the last two years. Some good things have happened, some bad, but mostly just busy. I haven't wanted to spend much of my "off-time" behind the computer, but things are settling down a bit and I find myself wanting to post more.
I decided to update the site with the latest version of WordPress, give it a new look and move it to a different server. The servers that the old site was on were no longer under my direct control. Moving things around gives me the ability to keep it maintained a bit more than I had been. The old site also had a few vulnerabilities that let spammers in. I lost a few posts and a bunch of my posts had hidden link spam in them. Its all cleaned up now, still a few lost posts. They weren't that important or interesting.
I've also decided to add a couple more categories in the near future, too. There are some articles that I want to write about coding as well as contribute some of my code to the OSS community.
Stay tuned...
Fedora 9 and KDE4 – I wanted to love them
I've been running Linux as my primary desktop since about 1996 (switching from OS/2 when IBM started dropping support for it), and running Linux servers since early 1994 (my first Slackware system was running Linux Kernel 0.99pl15). Over the years I've tried many of the various distributions including Slackware (which is what I started with), Caldera, Debian, SuSE, and of course RedHat. Back around RedHat Linux 3 I switched and have been using RedHat distros for my desktop almost exclusively since then. There have been a lot of frustrations with RedHat over the years, but with the Fedora Project things have gotten much better. The switch to Yum for package management and 3rd party repositories such as Livna have made things very easy to upgrade and maintain. Every 6 months I watch to see what's new in the latest Fedora release. Typically I'm a version or two behind since I want my computer to be stable. Right now at home I'm on Fedora 7 and Fedora 8 at the office.
I've switched window managers quite a few times over the years, too. The first one I really started using was fvwm, then I found AfterStep. I used AfterStep for several years. KDE was still too bloated back then and not quite feature rich enough, Gnome 1.x was in the same boat as KDE at the time. AfterStep stayed out of my way and was customizable-enough to let me get my work done. I like keyboard hot-keys for just about everything and AfterStep fit the bill. The only thing really lacking in AfterStep was a good way to interact with the desktop. I still missed a lot of the features that I had in OS/2's Workplace Shell. When KDE 3.x and Gnome 2.x came out I switched back and forth between the two as each started advancing beyond the other. About 2 years ago I finally switched and stayed with KDE. My biggest reason was one that may sound silly, but when you're managing dozens of servers and have everything hot-keyed it makes a big difference: Smart Window Placement. With Gnome 1.x I ran sawfish as the underlying window manager. With the 2.x series they made it very difficult to run anything except Metacity which has almost brain-dead window placement.
Back in February I looked at the road map for Fedora 9 and noticed that KDE 4 was going to be in there. I started looking at the some of the cool new features, specifically Plasma, the framework for allowing active widgets (plasmoids) to be running on the desktop or the panel. Its a big step beyond the little docklets that Gnome, KDE and even Windows have now. From what I understand its a bit more Mac-like (I've never used OS X so I can't say for sure).
So I waited for about 2 weeks after Fedora 9 was released to let the first round of patches and bug-fixes to make it out. On Thursday I took the plunge and upgraded to Fedora 9 and KDE 4. I finished the install and started using it by mid-afternoon, exploring the new aspects of it and trying to figure out how to re-implement some of the things I use the most with KDE or Gnome. On Friday at about noon I re-installed Fedora 8 with KDE 3.5.
KDE 4 is not ready for widespread use. I probably would have left Fedora 9 on there and used Gnome instead, but Metacity is still retarded about its window placement.
KDE 4 is gorgeous to look at. Very smooth and clean with lots of eye-candy and desktop effects -- when they work. I crashed various KDE components a number of times. Many of the crash issues I could live with since the apps restarted. It would have been an annoyance, but I could have suffered through a few more update cycles.
What I couldn't live without, though was a way to either hot-key or mouse click to get the list of active windows. I hate the taskbar window list. Its one of the first things I turn off. I prefer to either hit a hotkey or more often, middle click on my desktop or click on the window list icon in my panel and then pick the window. Its how I've worked for the last 10 years and its something I can't live without. In KDE 4 there is no way to show the open windows except for the taskbar. There are no plasmoids that will provide this same feature, and with the architecture of KDE 4, I don't think there ever will be. The concept of the desktop has been turned into a second workspace for running programs on. The only difference is that application windows will always cover them and there is only one place where plasmoids run for all of your virtual desktops. The concept is promising, but I think they're headed in the wrong direction.
I don't have any problem with improving the appearance of the desktop. Far from it, I like the cool widgets and the flash. But not if its going to hamstring functionality.
With how different KDE 4 is from its predecessors, and how much it is lacking in features compared to the much more mature KDE 3.5, it shouldn't have been called KDE 4. I expect a new desktop project to emerge from this, either renaming KDE 4 or a fork of KDE 3 by another group, but this won't be embraced by business or power users/programmers like myself (I've been programming since 1982).
There were a long list of annoyances that drove me to going back, both with the distro itself, KDE 4 and Gnome. I know that my productivity would have dropped just by running this on my desktop, and thats bad.
In the 14 years I've been running Linux on my computers this was the first time I've ever downgraded to a previous OS. I won't run Fedora 9 and won't recommend it to anyone. I hope that the Fedora, KDE and Gnome teams can learn from this and not just trudge forward.
Frivolous Litigation
From Wikipedia on Frivolous litigation there is a great quote from Lawyer Danial B. Evans:
[W]hen a judge calls an argument "ridiculous" or "frivolous," it is absolutely the worst thing the judge could say. It means that the person arguing the position has absolutely no idea of what he is doing, and has completely wasted everyone's time. It doesn't mean that the case wasn't well argued, or that judge simply decided for the other side, it means that there was no other side. The argument was absolutely, positively, incompetent. The judge is not telling you that you were "wrong." The judge is telling you that you are out of your mind.
Very well put, IMO.
