Config File
This documents all valid entries in the config file. Generally, the server should ship with a good config file (in contrib/mt-daapd.conf, or the default config on Windows or Mac). Should you need to change the behavior of the server to better suit your needs, however, you may find that you have a need to modify various config values. This page can be used as a reference for that purpose.
The configuration is generally laid out like a windows .ini file. The file is split into sections, which are denoted by a value in brackets. Each section has zero or more key/value pairs, in a "key=value" format.
Values that are multivalued (as noted below) can have multiple values for each key. These multivalued keys can be specified in a comma separated format, or with multiple keys:
[section_name] key = value1,value2,value3
or
[section_name] key=value1 key=value2 key=value3
Note that this page documents the current state of the config entries, and many of these values will likely change in future versions of the server
"General" Section
servername
This is the name of the server, as it appears in iTunes or when browsed from a remote client. There are two substitution variables:
- %h: hostname
- %v: version (e.g. "svn-1735")
The default servername (if not specified in the config file) is "firefly %v on %h"
web_root
This is the directory that holds the web interface. You can disable the web interface by deleting the files in this directory, and replacing them with an "index.html" that presents an error message.
port
Port to listen to for non-ssl connections. This port is used by the web interface, the daap interface, and the UPnP interface. This port must be unfirewalled, obviously.
logfile
Where to dump log information. On windows installs, this defaults to "firefly.log" in the application directory. For non-windows installs, it is typically commented out. To use on a unix machine with log rotation, set up your log rotate script to create a blank log file owned by the "runas" user, and sighup the /var/run/mt-daapd.pid process.
runas
This is ignored on Windows hosts, but on unix hosts, it defines the user to drop privs to after starting.
admin_pw
Password for the administrative pages.
password
Password for the music library.
compress
Whether or not to compress the DAAP stream. This is currently not used, as the DAAP code no longer has gzip encoding enabled.
truncate
Whether to truncate the logfile at startup.
debuglevel
Verbosity of log file (or stdout, if running in foreground (-f)). Debug levels correspond to:
- 0 - E_FATAL
- 1 - E_LOG
- 2 - E_WARN
- 5 - E_INF
- 9 - E_DBG
- 10 - E_SPAM
Debug level 5 shows most errors, while 9 shows up detailed info about those errors. 10 is overkill. When reporting bugs, or trying to track down problems, debuglevel 9 is probably the best debuglevel to run.
mp3_dir
Comma separated list of directories to search for audio files.
extensions
Comma separated list of file extensions to add to the database (e.g. .mp3,.m4a)
playlist
Unused.
process_m3u
Unused. See scanning/process_playlists
compdirs
Comma separated directory fragments under which to mark songs as compilations. This is to assist in iTunes compilation browsing. These are partial matches on the full path, so something like "/Various Artists/" would match anything under any folder (or subfolder) named "Various Artists"
db_type
Kind of backend database to use. Currently, this can be sqlite or sqlite3.
db_parms
Specific parameters for the backend database. For sqlite and sqlite3, this is the directory to drop the database in.
scan_type
Determining song duration for mp3 files is difficult. When the server can't authoritatively determine the length of a song, it can use brute force heuristics to try and figure out the song length. This setting decides how hard it should try and determine correct song length
- 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 or a TLEN 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.
rescan_interval
How often to rescan the mp3_dir for new or changed files. In seconds.
always_scan
Whether scans should be skipped if there are no users connected. With always_scan=1, every time rescan_interval passes, the library is rescanned. With always_scan=0, the scan only happens when there are connected users. This allows the drive to spin down when no users are connected.
ssc_prog
This is the shell script that the ssc-script plugin runs when attempting to transcode a file.
ssc_codectypes
This is a list of codectypes that the ssc-script plugin can transcode.
never_transcode
Added in r1417, keeps the server from transcoding a codec type even if the client shouldn't be able to play it. Some linux clients use an iTunes user-agent, and appear to the server to be a legitimate iTunes client. The server knows that iTunes clients can't play ogg, for example, so normally the server would transcode the file to wav. To force the server to send a file natively that it thinks should be transcoded, the "never_transocde" setting can be used. In the example given, to force the server not to transcode ogg files (presumably because a Linux client that understands ogg format is connecting), the proper configuration value would be "never_transcode=ogg". See also [Codec_Types]
always_transcode
Added in r1526, forces the server to transcode a codec type even if the client should be able to play it natively. For example, some apple lossless files caused early Roku SoundBridge firmware versions problems decoding. By setting "always_transcode=alac", it allowed the transcoding to be performed on the server and passed to the client as wav, rather than sending it as an Apple Lossless file. See also [Codec_Types]
"Scanning" Section
process_xml
Deprecated. Remapped to "scanning/process_itunes".
case_sensitive
Should be set to 1 if the underlying file system is case sensitive (unix). Defaults to 1. This can cause duplicate songs to appear on Windows and OSX. Try setting this to 0 if you observe that.
ignore_appledouble
This ignores ".AppleDouble" files that get dropped by the OSX finder. Why you would ever want to scan for these, I don't know, but you can turn it back on if you want to. Defaults to 1.
ignore_dotfiles
Ignore files and directories that start with "." (Unix considers these to be hidden files), and the OSX finder drops dotfiles around that can irritate mt-daapd. Defaults to 0.
concat_compilations
This remaps the tags on songs marked as a compilation. Title gets remapped to "Artist - Title", and artist gets remapped to "Various Artists". This is help browsing on platforms that don't include proper compilation browsing (Soundbridge, etc).
Note that this configuration value will go away when the scripting plugin is in place.
follow_symlinks
Should the scanner follow symlinks? Default is 1.
skip_first
Should the first scan be skipped? Default is 0. This is mostly for devices that must startup quickly. (Car player, for example).
process_playlists
Added in r1523, this is a global enable/disable for playlist support.
process_m3u
Added in r1523, this controls whether or not .m3u files should be imported as playlists. Previously to r1523, this was general/process_m3u.
process_itunes
Added in r1523, this controls whether or not "iTunes Music Library.xml" and "iTunes Library.xml" files should be parsed for playlist importing. Previously to r1523, this was scanninf/process_xml.
"Scan" Section
correct_order
This controls whether playlists should be returned to a DAAP client in the order they are defined in the playlist. This is an expensive query in SQLite, so it is turned off by default.
"DAAP" Section
empty_strings
Sometimes tags have empty values -- artist, album, etc. Normally the DAAP server doesn't bother emitting empty strings, as it takes 8 bytes per field to emit a null string. iTunes, Roku, and most other clients don't care, but some clients are annoyed by this, and should be set to 1. At some point this will always be set, and the configuration option will be removed.
supports_update
iTunes can send update notifications when the library changes. The DAAP server doesn't support this, but it may at some point. This defaults to 0.
supports_browse
Whether or not to advertise browse support. This defaults to 1. I'm frankly not sure why this configuration value is present.
correct_order
In r1523, scan/correct_order was moved here, as it is more properly a DAAP option. See scan/correct_order for details.
"Plugins" Section
plugin_dir
Directory to search for plugins. All .so, .dylib, and .dll files are attempted to be loaded as firefly plugins.
plugins
Deprecated. All plugins in plugin_dir now load automatically.
... the Media Server.