The Update

DISCLAIMER: This walkthrough is solely for my reference. If you fuck-up anything doing it, you are on your own ! Love, peace and best wishes.

Back to revival

mt-daapd

Firefly media server is the one I know which serves music to my Pinnacle Soundbridge M1001, actually two of them. The version which is included in the synology doesn't seem to work. Might be that the compatibility list is only for the Roku version and not for the Pinnacle version. There is a difference and hence the need for the newer version of the firefly server which supports the Roku Control Protocol for the SoundBridge the excerpt below is from the wikipedia.

Outside the United States, SoundBridge models are manufactured and sold by Pinnacle, under license from Roku. Although some Pinnacle models are similar or identical in hardware, Pinnacle does not have a license for the DAAP protocol, so Pinnacle models cannot connect directly to iTunes. Pinnacle and Roku promote the Firefly Media Server as an alternative that offers similar functionality.

The latest mt-daapd svn version is available through the optware feeds. To find the right one you just have to grep for mt-daapd

Poseidon> ipkg list|grep daap
mt-daapd - 0.2.4.2-1 - A multi-threaded DAAP server for Linux and other POSIX type systems. 
                                Allows a Linux box to share audio files with iTunes users
mt-daapd-svn - 1696-1 - A multi-threaded DAAP server for Linux and other POSIX type systems. 
                                   Allows a Linux box to share audio files with iTunes users

Installation is pretty straight-forward. Just use ipkg install mt-daapd-svn and you are done. The only additional changes I have done is the configuration and the start/stop script. For the start/stop script do

rm -f /opt/etc/init.d/S60mt-daapd
vi /opt/etc/init.d/S60mt-daapd

Press i and use the copy/paste to insert the new start/stop script.

#!/bin/sh
# Now on to usual bussines
DAAP=/opt/sbin/mt-daapd
NAME=S60mt-daapd
DESC="Firefly media server"
RUNDAAP=no
PIDFILE=/var/run/mt-daapd.pid
# Include amule defaults if available
if [ -f /opt/etc/default/$NAME ] ; then
    . /opt/etc/default/$NAME
fi
if [ "$RUNDAAP" != "yes" ];then
  echo "$NAME not to be started. Edit /opt/etc/default/$NAME first."
  exit 1
fi
set -e
case "$1" in
  start)
    echo -n "Starting $DESC: "
    $DAAP -c /opt/etc/mt-daapd/mt-daapd.conf
    echo "$NAME."
  ;;
  stop)
    echo -n "Stopping $DESC: "
    cat $PIDFILE|xargs kill
    rm $PIDFILE
    echo "$NAME."
  ;;
  restart|force-reload)
    echo -n "Restarting $DESC: "
    cat $PIDFILE|xargs kill
    sleep 2
    $DAAP -c /opt/etc/mt-daapd/mt-daapd.conf
    echo "$NAME."
  ;;
  *)
    N=/opt/etc/init.d/$NAME
    echo "Usage: $N {start|stop|restart|force-reload}" >&2
    exit 1
  ;;
esac
exit 0

Now press the escape key ESC and type :wq! to save the script
Change the attributes chmod 0755 the /opt/etc/init.d/S60mt-daapd so it is possible to run the script. It will be run automagically by the rc.optware script at every startup. It will run as user nobody.
Create the directory for the default scripts if it doesn't already exist with mkdir /opt/etc/default and the default script itself echo "RUNDAAP=yes" > /opt/etc/default/S60mt-daapd. If you ever replace the yes in the /opt/etc/default/S60mt-daapd file it will stop starting the mt-daapd.
Now the start/stop script is ready
You have to configure the mt-daapd prior to first running it by modifying the /opt/etc/mt-daapd/mt-daapd.conf file. Basically you have only to set the location of the mp3 files. On the ds106 this is expected to be /volume1/music. I have also changed the server name and the password to access the web gui. There is no password to protect the mp3 music but you can configure it later using the webgui. Again just copy/paste the config below.

rm -f /opt/etc/mt-daapd/mt-daapd.conf
vi /opt/etc/mt-daapd/mt-daapd.conf

Press i and use the copy/paste to insert the new start/stop script.

# $Id: mt-daapd.conf.templ 1660 2007-09-12 13:08:04Z rpedde $
#
# This is the mt-daapd config file.
#
# If you have problems or questions with the format of this file,
# direct your questions to rpedde@users.sourceforge.net.
#
# Questions and discussions about the format and content of this
# config file can probably be obtained by consulting the wiki:
#
Poseidon> head -20 /opt/etc/mt-daapd/mt-daapd.conf
# $Id: mt-daapd.conf.templ 1660 2007-09-12 13:08:04Z rpedde $
#
# This is the mt-daapd config file.
#
# If you have problems or questions with the format of this file,
# direct your questions to rpedde@users.sourceforge.net.
#
# Questions and discussions about the format and content of this
# config file can probably be obtained by consulting the wiki:
#
# http://wiki.fireflymediaserver.org/Config_File
#
# Or by asking questions on the forums at
#
# http://forums.fireflymediaserver.org
#
#

[general]

Poseidon> head -50 /opt/etc/mt-daapd/mt-daapd.conf
# $Id: mt-daapd.conf.templ 1660 2007-09-12 13:08:04Z rpedde $
#
# This is the mt-daapd config file.
#
# If you have problems or questions with the format of this file,
# direct your questions to rpedde@users.sourceforge.net.
#
# Questions and discussions about the format and content of this
# config file can probably be obtained by consulting the wiki:
#
# http://wiki.fireflymediaserver.org/Config_File
#
# Or by asking questions on the forums at
#
# http://forums.fireflymediaserver.org
#
#

[general]

#
# web_root (required)
#
# Location of the admin web pages.
#
# If you installed from .RPM, .deb, or tarball with --prefix=/usr, then
# this is correct.
#
# If you installed from tarball without --prefix=/usr, then the correct
# path is probably /usr/local/share/mt-daapd/admin-root.
#

web_root = /opt/share/mt-daapd/admin-root

#
# port (required)
#
# What port to listen on.  It is possible to use a different
# port, but this is the default iTunes port
#

port = 3689

#
# admin_pw (required)
#
# This is the password to the administrative pages
#

admin_pw = mt-daapd

#
# db_type (required)
#
# This is what kind of backend database to store the song
# info in.  Valid choices are "sqlite" and "sqlite3".
#

db_type = sqlite3

#
# db_parms
#
# This is any extra information the db needs to connect.
# in the case of sqlite and sqlite3, this is the name
# of the directory to store the database in
#
# If you installed from RPM or .deb, this path likely already
# exists.  If not, then you must create it.  The directory itself
# must be writable by the "runas" user.
#

db_parms = /opt/var/cache/mt-daapd

#
# mp3_dir (required)
#
# Location of the mp3 files to share.  Note that because the
# files are stored in the database by inode, these must be
# in the same physical filesystem.
#

mp3_dir = /volume1/music

#
# servername (required)
#
# This is both the name of the server as advertised
# via rendezvous, and the name of the database
# exported via DAAP.  Also know as "What shows up in iTunes".
#

#servername = Firefly %v on %h
servername = Firefly

#
# runas (required)
#
# This is the user to drop privs to if running as
# root.  If mt-daapd is not started as root, this
# configuration option is ignored.  Notice that this
# must be specified whether the server is running
# as root or not.
#
# This is also ignored on Windows.
#

runas = nobody

#
# password (optional)
#
# This is the password required to listen to MP3 files
# i.e. the password that iTunes prompts for
#

#password = mp3

#
# extensions (optional)
#
# These are the file extensions that the daap server will
# try to index and serve.  By default, it only indexes and
# serves .mp3 files.  It can also server .m4a and .m4p files,
# and just about any other files, really.  Unfortunately, while
# it can *attempt* to serve other files (.ogg?), iTunes won't
# play them.  Perhaps this would be useful on Linux with
# Rhythmbox, once it understands daap.  (hurry up!)
#
# Failing that, one can use server-side conversion to transcode
# non-standard (.ogg, .flac) music to wav on the server side.
# See the ssc_* options below.
#
# To be able to index .ogg files, you'll need to have configured
# with --enable-oggvorbis.  For .flac, --enable-flac, for .mpc,
# --enable-musepack.
#

extensions = .mp3,.m4a,.m4p

#
# ssc_codectypes (optional)
#
# List of codectypes for files that the daap server should
# perform internal format conversion and present to clients
# as WAV files.  The file extensions that these codectypes correspond
# to must also be present in 'extensions'
# configuration value, or files are not probed in the first
# place.
#
# Valid codectypes:
#
# mp4a - for AAC (.aac, .mp4, .m4a, .m4p)
# mpeg - for mp3
# wav - for wav
# wma - for wma
# ogg - for ogg
# flac - for flac (.flac, .fla)
# mpc for musepack (.mpc, .mpp, .mp+)
# alac for alac (.m4a)
#

ssc_codectypes = ogg,flac,alac

#
# ssc_prog (optional)
#
# Program that is used in server side format conversion.
# Program must accept following command line syntax:
#     ssc_prog filename offset length ...
# Parameter filename is the real name of the file that is
# to be converted and streamed, offset is number of bytes
# that are skipped from the beginning of the _output_ file
# before streaming is started, length is length of the song
# in seconds (or zero).  All other possible arguments must
# be ignored.  The resulting wav file (or the rest of
# the file after initial seek) is written to the standard
# output by the ssc_prog program.  This is typically
# a script that is a front end for different conversion tools
# handling different formats.
#

ssc_prog = /opt/bin/mt-daapd-ssc.sh

#
# logfile (optional)
#
# This is the file to log to.  If this is not configured,
# then it will log to the syslog.
#
# Not that the -d <level> switch will control the log verbosity.
# By default, it runs at log level 1.  Log level 9 will churn
# out scads of useless debugging information.  Values in between
# will vary the amount of logging you get.
#

#logfile = /var/log/mt-daapd.log

#
# rescan_interval
#
# How often to check the file system to see if any mp3 files
# have been added or removed.
#
# if not specified, the default is 0, which disables background scanning.
#
# If background rescanning is disabled, a scan can still be forced from the
# "status" page of the administrative web interface
#
# Setting a rescan_interval lower than the time it takes to rescan
# won't hurt anything, it will just waste CPU, and make connect times
# to the daap server longer.
#
#

#rescan_interval = 300

# always_scan
#
# The default behavior is not not do background rescans of the
# filesystem unless there are clients connected.  The thought is to
# allow the drives to spin down unless they are in use.  This might be
# of more importance in IDE drives that aren't designed to be run
# 24x7.  Forcing a scan through the web interface will always work
# though, even if no users are connected.

# always_scan = 0

#
# scan_type
#
#
# This sets how aggressively mp3 files should be scanned to determine
# file length.  There are three values:
#
# 0 (Normal)
#   Just scan the first mp3 frame to try and calculate size.  This will
#   be accurate for most files, but VBR files without an Xing tag will
#   probably have wildly inaccurate file times.  This is the default.
#
# 1 (Aggressive)
#   This checks the bitrates of 10 frames in the middle of the song.
#   This will still be inaccurate for VBR files without an Xing tag,
#   but they probably won't be quite as inaccurate as 0.  This takes
#   more time, obviously, although the time hit will only happen the
#   first time you scan a particular file.
#
# 2 (Painfully aggressive)
#   This walks through the entire song, counting the number of frames.
#   This should result in accurate song times, but will take the most
#   time.  Again, this will only have to be incurred the first time
#   the file is indexed.
#

scan_type = 2

#
# compress
#
# Whether to use gzip content-encoding when transferring playlists etc.
# This was contributed as a patch by Ciamac Moallemi just prior to the 0.2.1
# release, and as such, hasn't gotten as much testing as other features.
#
# This feature should substantially speed up transfers of large databases
# and playlists.
#
# It will eventually default to 1, but currently it defaults to 0.
#

#compress = 0

[plugins]
plugin_dir = /opt/lib/mt-daapd/plugins

[scanning]

# should playlists be processed at all?
#
process_playlists = 1

# should itunes xml files be processed?
#
process_itunes = 1

# should m3u files be processed?
#
process_m3u = 1

You must set the configuration file writable by anyone to be able to change the setup from the web interface since the mt-daapd is running with the account nobody. To achieve this you have to run the command chmod 0666 /opt/etc/mt-daapd/mt-daapd.conf
When you are done you can manually start the firefly by issuing the command /opt/etc/init.d/S60mt-daapd start. Now you can connect via http to the webgui (see below)

syno_002.PNG

You can play the music with webbrowser if you point it at http:/ /<ip-of-your-ds106-nas>:3689/applet.html

syno_004.PNG

When you start the soundbridge it should find the firefly server. You can use a ssh tunnel to forward the port 3689 anywhere in the world, if your ds106 is accessible by ssh from the outside. It is then possible to play your music at work, friends, foes, wherever using just the browser.

To play your music for example through the Wii console you can use a flash based player. This has to be installed additionally. The player is called FirePlay.

  • download the zip file from the link
  • extract the files to a temporary directory
  • open a separate explorer window (file explorer not IE) and type in \\<ip-of-your-ds106-nas>\public
  • copy (drag and drop) the 3 files (AC_RunActiveContent.js, FirePlay.html and FirePlay.swf) to the ds106 (window you just opened)
  • ssh to the ds106
  • execute the code
cp /volume1/public/AC_RunActiveContent.js /opt/share/mt-daapd/admin-root
cp /volume1/public/FirePlay.html /opt/share/mt-daapd/admin-root
cp /volume1/public/FirePlay.swf /opt/share/mt-daapd/admin-root

Now you will be able to start the http:/ /<ip-of-your-ds106-nas>:3689/FirePlay.html in your browser (also Wii browser). You just have to insert the login (admin) and the password (default is mt-daapd). The flash player is depicted on the picture below.
syno_010_fireplay.PNG

Back to revival

References
[http://forums.fireflymediaserver.org/viewtopic.php?t=6863]

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.