Wednesday, September 23, 2009

EON + ZFS Storage + iTunes/Firefly server equals?

What happens when you combine your EON ZFS storage with Firefly's media server/mt-daapd, the opensource iTunes server? Music to everyone's ears!

I previously covered apps to make your EON ZFS storage work for you and someone stated mt-daapd would be nice. So here it is. You can download the 32-bit mt-daapd svn_1696 here (md5sum: 6aafee73058f7628cbf3fb0199a5c162). This version supports mp3, flac, oggvorbis, mdns and more. To install and start mt-daapd after transferring mt-daapd-1696.tgz to your zpool (substitute your zpool name wherever abyss is seen), repeat the following:
(cd /abyss ; mkdir media)
(cd /opt ; ln -s ../abyss/media .)
This creates the symlink /opt/media to the location for mt-daapd (/abyss/media in this case). Now let's unpack the mt-daapd-1696.tgz package. In this case my file was located in /tmp/mt-daapd-1696.tgz.
cd /opt/media
gzip -dc /tmp/mt-daapd-1696.tgz | tar -xf -
That should've unpacked the following structure in /opt/media, as seen by ls -al
drwxr-xr-x   8 admin    stor           8 Sep 23 14:54 .
drwxrwxrwx 12 root root 21 Sep 23 13:57 ..
drwxr-xr-x 2 root root 13 Sep 23 13:55 bin
drwxr-xr-x 2 root root 3 Sep 23 13:00 etc
drwxr-xr-x 5 root root 49 Sep 23 13:55 lib
drwxr-xr-x 2 root root 3 Sep 23 13:55 sbin
drwxr-xr-x 4 root root 4 Sep 23 14:15 share
Now let's start the server as user, root. This will create an additional var directory with the proper permissions:
To check and configure it, point your browser to the EON storage IP address as http://eonstorageIP:3689. You should be greeted with a login window. Enter the user: admin and password: mt-daapd. These are the default account credentials which you should change after logging in. Now, all that is left, is to go to the configuration tab, enter the path to your music library and allow the Firefly media server to rescan. This could take a while depending on the size of your music collection. You can now use iTunes and Roku Soundbridge to unleash the music kept on your EON ZFS storage. If you have zerconf or multi-cast DNS clients on your network you can optionally advertise your Firefly server to the network by running the multi-cast DNS server on EON
and to view http services on your network
dns-sd -B _http._tcp .
Browsing for _http._tcp
Timestamp A/R Flags if Domain Service Type Instance Name
22:14:01.525 Add 2 2 local. _http._tcp. Firefly svn-1696 on eon
You should see the Firefly media server listed. For now, let the music play!


Lola said...

A 64-bit version of the mt-daapd would be great too. Any hope?


Andre Lue said...


The challenge for a 64-bit mt-daapd lies in getting access to a proper working 64-bit gcc compiler.

It's being worked on.

Odd-Jarle said...

A BIG thank you for providing this info and the necessary files. I have been trying to compile from source using a bunch of methods, but always failed. Now I finally have Firefly on my OpenSolaris too :) THANKS!

Andre Lue said...


You are welcome.

James said...

Hi Andre

Has libgcc_s been dropped from the EON binary kit 130? I get a fatal error running mt-daapd and from

ldd sbin/mt-daapd

I get => (file not found)


Andre Lue said...

Hi James,

The binary kit (contains libgcc and more) must be installed before you can use mt-daapd.

Anonymous said...

I've just installed this yet as soon as I reboot the service does not start automatically. Everything in /mnt/eon0/.exec looks ok. The link to my zpool is being made, i.e. /opt/media -> /userbin/media. It just won't autostart on reboot. Any ideas? I can start it manually after I log in though.

Anonymous said...

Hey Andre!

I've been trying to figure this out trying to run it on my system at boot but to no avail. I can run the mt-daapd as root on a command line, but uncommenting just the lines on .exec file doesn't do the trick. i've the system and rebooted but still nothing. Here's the error I get: mt-daapd: fatal: open failed: No such file or directory

I don't get such error when running it on a shell. I've even made a SMF service for it but even with method_credential='root', it still won't load and gives me the same error. Would you have any idea?