Asus wl-500gp v2 e dd-wrt (settima parte): music server DAAP con Firefly Media Server (mt-daapd-svn)

music_is_my_religionIn questa settima parte vediamo come trasformare il nostro router Asus in un server DAAP con il quale potremo fare riprodurre la nostra libreria musicale dai client più disparati sia hardware che software. Io ho testato il funzionamento solo con Rhythmbox per linux, ma dovrebbe funzionare anche su iPod, iPhone, Roku, media player, games console e qualsiasi oggetto che supporti il protocollo daap.

La trasformazione del router in server daap avviene grazie al pacchetto mt-daapd-svn, ovvero Fireflay Media Server. I presupposti per l’installazioni sono sempre gli stessi: un sistema optware funzionante con uno hd esterno collegato via usb. Se avete letto Asus wl-500gp v2 e dd-wrt (terza parte): Nas con samba2, swat e optware e installato HDSamba2 avete gia tutto quello che serve.

Installazione e configurazione Firefly Media Server

Per eseguire l’installazione del server daap dobbiamo accedere al router via ssh/telnet e installare il pacchetto mt-daapd-svn:

/opt/bin/ipkg install mt-daapd-svn

A questo punto provvediamo a modificare il file di configurazione che è /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 = la_password_che_vuoi_tu
 
#
# 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 = /mnt/mp3
mp3_dir = /mnt/data/household/Musica
 
#
# 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
 
#
# 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
runas = household
 
#
# 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  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 = /opt/var/log/mt-daapd/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
always_scan = 1
 
#
# 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

Due parametri essenziali da modificare sono admin_pw e mp3_dir che rispettivamente indicano la password di accesso all’interfaccia web di configurazione e la directory contenente la libreria musicale. Per un’eventuale approfondimento sui vari parametri di configurazione vi rimando al wiki ufficiale http://wiki.fireflymediaserver.org/Config_File.

Completata la configurazione possiamo lanciare FireFly con il comando /opt/etc/init.d/S60mt-daapd.

Una volta lanciato FireFlay questo si annuncia ai client daap presenti sulla rete passando il proprio ip e la porta su cui è in ascolto il demone. Se utilizzate Ubuntu come sistema su cui fare girare un client daap, in alcuni casi potrebbe esserci problemi di sovrapposizione di indirizzi ip ahvai (zeroconf, bonjour o come dir si voglia), la solzione sta nel disabilitare l’interfaccia br0:0 di dd-wrt appena prima di lanciare Firefly e riattivarla subito dopo. Lo potete fare modificando il file /opt/etc/init.d/S60mt-daapd in questo modo:

#!/bin/sh

if [ -n "`pidof mt-daapd`" ] ; then
    killall mt-daapd 2>/dev/null
fi

# Disabilita l'interfaccia br0:0 per non fare annunciare il servizio su questa porta
ifconfig br0:0 down 

sleep 2
/opt/sbin/mt-daapd -c /opt/etc/mt-daapd/mt-daapd.conf

# Riabilito l'interfaccia br0:0
ifconfig br0:0 169.254.255.1 up

Avviato Fireflay sarà possibile accedere al pannello di configurazione/monitoraggio puntando il proprio browser alla porta 3689 dell’indirizzio ip o hostname del router Asus (es.: http://naps:3689) e dopo avere fornito l’utente (root) e la password (quella a cui fa riferimento il parametro admin_pw del file di configurazione) verrà visualizzata l’apposita interfaccia web:

firefly

firefly2

firefly3

Volendo fare avviare Firefly al boot del router è possibile inserire l’apposito comando in /mnt/HDsamba/scripts/daemon.load seguendo la falsa riga dell’esempio in esso contenuto. Lo stesso vale per la chiusura allo shutdown del router, in questo caso l’apposito script da modificare sarà /mnt/HDsamba/scripts/daemon.kill.

Rhythmbox come client daap

Se tutto è andato a buon fine potremo avviare Rhythmbox da un qualsiasi pc linux presente in rete a automagicamente dovrebbe comparire nella barra laterale sotto la sezione Condivisioni l’icona e il nome del server daap rilevato sulla rete, che a questo punto cliccandoci sopra sarà possibile sfogliare e riprodurre la nostra libreria musicale condivisa in rete.

rythmbox-firefly

Mel caso in cui Rhythmbox non rilevasse in automatico il server daap una causa può essere il conflitto di indirizzi ip che spiegavo prima, quindi se non volete modificare lo script di avvio di Firefly come spiegato precedentemente, potete provare ad aggiungere a mano l’accesso alla condivisione daap andando sul menu File/Connetti a condivisione DAAP e inserendo l’indirizzo ip o l’hostname del router Asus e la porta su cui è in ascolto Firefly (se non l’avete cambiata è la 3689) il tutto separato dai due punti (es.: naps:3689).

rhythembox_nuova_condivisione_DAAP

Altri client daap

Sinceramente oltre a Rhythmbox non ho provato altri client daap, ma google ripondera facilemente a questa domanda, uno su tutti penso sia iTunes che è il software che ha lanciato il protocollo. Sarebbe invece interessante avere un’elenco di media center hardware che supportino tale protocollo. Eventuali segnalazioni sono ben accette.

Per ora è tutto, a presto.

2 pensieri su “Asus wl-500gp v2 e dd-wrt (settima parte): music server DAAP con Firefly Media Server (mt-daapd-svn)

  1. Bell’articolo.
    Ho installato il media server e sembrava funzionare bene con Rhythmbox, quando ho scoperto che non riesce a riprodurre i files in formaro flac (che tra l’altro sono la maggioranza nella mia libreria). Credendo dipendesse da Rhythmbox, ho provato anche con il client in java che fornisce firefly, ma succede la stessa cosa. Sai se c’è un problema con quel formato?

  2. @alessadro
    Purtroppo come dicevo nel post Asus WL500gP v2 …… addio !!!non ho più il wl500gp v2 in funzione, ma guardando qui sembra che il formato flac sia supportato almeno nelle ultime versioni.
    Eventualmente proverei fare una ricerca con ipkg dei pacchetti che hanno a che fare con flac e poi a installarli, probabilmente firefly ha bisogno di qualche libreria che non è installata sul sistema.

    Mi farebbe piacere sapere se riesci nell’impresa.

    Ciao.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *