#LyX 1.4.3 created this file. For more info see http://www.lyx.org/ \lyxformat 245 \begin_document \begin_header \textclass docbook \language english \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \use_geometry true \use_amsmath 0 \cite_engine basic \use_bibtopic false \paperorientation portrait \leftmargin 1cm \topmargin 1cm \rightmargin 1cm \bottommargin 1cm \secnumdepth 3 \tocdepth 3 \paragraph_separation skip \defskip medskip \quotes_language swedish \papercolumns 1 \papersides 1 \paperpagestyle plain \tracking_changes false \output_changes true \end_header \begin_body \begin_layout Title MediaTomb - UPnP MediaServer \end_layout \begin_layout Standard \begin_inset ERT status collapsed \begin_layout Standard \end_layout \begin_layout Standard 2005 \end_layout \begin_layout Standard Gena Batsyan \end_layout \begin_layout Standard Sergey Bostandzhyan \end_layout \begin_layout Standard \end_layout \begin_layout Standard \end_layout \begin_layout Standard 2006-2007 \end_layout \begin_layout Standard Gena Batsyan \end_layout \begin_layout Standard Sergey Bostandzhyan \end_layout \begin_layout Standard Leonhard Wimmer \end_layout \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard This documentation is valid for MediaTomb version 0.9.0. \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status collapsed \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK! \end_layout \begin_layout Standard \begin_inset ERT status collapsed \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Section Introduction \end_layout \begin_layout Standard MediaTomb is an open source (GPL) UPnP MediaServer with a nice web user interface, it allows you to stream your digital media through your home network and listen to/watch it on a variety of UPnP compatible devices. \end_layout \begin_layout Standard MediaTomb implements the UPnP MediaServer V 1.0 specification that can be found on \begin_inset LatexCommand \url[http://www.upnp.org/]{http://www.upnp.org/} \end_inset . The current implementation focuses on parts that are required by the specificat ion, however we look into extending the functionality to cover the optional parts of the spec as well. \end_layout \begin_layout Standard MediaTomb should work with any UPnP compliant MediaRenderer, please tell us if you experience difficulties with particular models, also take a look at the Supported Devices list for more information. \end_layout \begin_layout Paragraph* WARNING! \end_layout \begin_layout Standard The server has an integrated file system browser in the UI, that means that anyone who has access to the UI can browse your file system (with user permissions under which the server is running) and also download your data! If you want maximum security - disable the UI completely! Account authenticatio n offers simple protection that might hold back your kids, but it is not secure enough for use in an untrusted environment! \end_layout \begin_layout Description Note: since the server is meant to be used in a home LAN environment the UI is enabled by default and accounts are deactivated, thus allowing anyone on your network to connect to the user interface. \end_layout \begin_layout Subsection Currently Supported Features \end_layout \begin_layout Itemize browse and playback your media via UPnP \end_layout \begin_layout Itemize metadata extraction from mp3, ogg, flac, jpeg, etc. files. \end_layout \begin_layout Itemize Exif thumbnail support \end_layout \begin_layout Itemize user defined server layout based on extracted metadata (scriptable virtual containers) \end_layout \begin_layout Itemize automatic directory rescans \end_layout \begin_layout Itemize sophisticated web UI with a tree view of the database and the file system, allowing to add/remove/edit/browse your media \end_layout \begin_layout Itemize support for external URLs (create links to internet content and serve them via UPnP to your renderer) \end_layout \begin_layout Itemize support for ContentDirectoryService container updates \end_layout \begin_layout Itemize Active Items (experimental feature), allows execution of server side scripts upon HTTP GET requests to certain items \end_layout \begin_layout Itemize highly flexible configuration, allowing you to control the behavior of various features of the server \end_layout \begin_layout Itemize support for Linux, FreeBSD, Mac OS X \end_layout \begin_layout Itemize runs on x86, Alpha, ARM, MIPS, Sparc, PowerPC \end_layout \begin_layout Subsection Planned Features \end_layout \begin_layout Itemize transcoding of audio and video \end_layout \begin_layout Itemize playlist support \end_layout \begin_layout Itemize various UPnP improvements \end_layout \begin_layout Section \noindent Requirements \end_layout \begin_layout Description \noindent \align left Note: remember to install associated development packages, because development headers are needed for compilation! \end_layout \begin_layout Description \noindent \align left Note: libupnp is now a part of MediaTomb and does not have to be installed separately. We base our heavily patched version on libupnp 1.4.1 from http://pupnp.sf.net/ \end_layout \begin_layout Description \noindent \align left Note: you need at least one database in order to compile and run MediaTomb - either sqlite or mysql. \end_layout \begin_layout Standard \noindent In order to compile MediaTomb you will have to install the following packages.: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard sqlite (version > 3.x) \begin_inset LatexCommand \url[http://www.sqlite.org/]{http://www.sqlite.org/} \end_inset \emph on REQUIRED (if mysql is not available) \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard mysql client library (version > 4.0.x) \begin_inset LatexCommand \url[http://mysql.org/]{http://mysql.org/} \end_inset \emph on REQUIRED (if sqlite is not available) \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard zlib \begin_inset LatexCommand \url[http://www.zlib.net/]{http://www.zlib.net/} \end_inset \emph on OPTIONAL, HIGHLY RECOMMENDED \end_layout \begin_layout Standard Zlib is a compression library that is available on most systems, we need it for the database autocreation functionality. Make sure to install the zlib development package providing zlib.h, if it is not available you will need to create the MediaTomb sqlite3/MySQL database manually. \end_layout \begin_layout Standard \begin_inset ERT status collapsed \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard libmagic \emph on OPTIONAL, RECOMMENDED \end_layout \begin_layout Standard This is the 'file' package, it is used to determine the mime type of the media. If you don't have this you will have to enter file extension to mime type mappings manually in your config file. \end_layout \begin_layout Standard \begin_inset ERT status collapsed \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard js - SpiderMonkey JavaScript Engine \begin_inset LatexCommand \url[http://www.mozilla.org/js/spidermonkey/]{http://www.mozilla.org/js/spidermonkey/} \end_inset \shape italic \shape default \emph on OPTIONAL, RECOMMENDED \end_layout \begin_layout Standard This package is necessary to allow the user defined creation of virtual containers. The import.js script defines the layout of your media, the default import script will create a structure sorted by Audio/Photo/Video, it will make use of the gathered metadata (like ID3 tags) to sort your music by Artist/Album /Genre/Year , etc. The import script can be adjusted and modified - it allows you to create the layout that you want. \end_layout \begin_layout Standard \begin_inset ERT status collapsed \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard taglib \begin_inset LatexCommand \url[http://developer.kde.org/~wheeler/taglib.html]{http://developer.kde.org/~wheeler/taglib.html} \end_inset \emph on OPTIONAL, RECOMMENDED \end_layout \begin_layout Standard This library retrieves metadata from mp3, ogg and flac files. You will need it if you want to have virtual objects for those files (i.e. nice content layout). \end_layout \begin_layout Description \series bold Note: \series default It makes no sense to use taglib and id3lib at the same time, the configure script will first look for taglib, if taglib detection fails it will search for id3lib. You can also force the script to take the library of your choice, overriding the default setting. \end_layout \begin_layout Standard \begin_inset ERT status collapsed \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard id3lib \begin_inset LatexCommand \url[http://id3lib.sourceforge.net/]{http://id3lib.sourceforge.net/} \end_inset (at least version 3.8.3) \shape italic \shape default \emph on OPTIONAL, RECOMMENDED (if taglib is not available) \end_layout \begin_layout Standard This library retrieves id3 tags from mp3 files. \end_layout \begin_layout Standard \begin_inset ERT status collapsed \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard libexif \begin_inset LatexCommand \url[http://libexif.sourceforge.net/]{http://libexif.sourceforge.net/} \end_inset \emph on OPTIONAL, RECOMMENDED \end_layout \begin_layout Standard You will need this library if you want to extract metadata from images, this will allow you to have virtual containers for your Photos, sorted by various attributes like Date, etc. It also enables thumbnail support: if EXIF thumbnails are present in your images they will also be offered via UPnP. \end_layout \begin_layout Standard \begin_inset ERT status collapsed \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard libextractor \begin_inset LatexCommand \url[http://gnunet.org/libextractor/]{http://gnunet.org/libextractor/} \end_inset \emph on OPTIONAL \end_layout \begin_layout Standard This library tries to gather metadata from all kinds of files (also .avi and .asf). The drawback is, that it can be very slow at scanning video files. We also noticed that it uses a lot of memory when reading files, the result is, that media import becomes extremely slow. It is up to you if you want to use it or not, you may try the 'extract' utility that is provided with the library to check if there is any metadata that can be extracted from your media prior to enabling this feature in MediaTomb. By default libextractor is disabled, use ./configure --enable-libextractor to activate it. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard In order to use the web UI you will need to have javascript enabled in your web browser. \end_layout \begin_layout Standard The UI has been tested and works with the recent versions of : \end_layout \begin_layout Itemize Firefox/Mozilla \end_layout \begin_layout Itemize Opera \end_layout \begin_layout Standard Tested and does not work with the recent versions of: \end_layout \begin_layout Itemize Konqueror \end_layout \begin_layout Itemize Safari \end_layout \begin_layout Standard Limited functionality with: \end_layout \begin_layout Itemize Internet Explorer 6 and 7 \end_layout \begin_layout Section Compiling From Source \end_layout \begin_layout Subsection Standard Method \end_layout \begin_layout Standard If you don't care about the details - make sure you have installed the required packages and the appropriate development headers and simply run \end_layout \begin_layout Code $ ./configure \end_layout \begin_layout Code $ make \end_layout \begin_layout Code $ make install \end_layout \begin_layout Standard This should compile and install MediaTomb, the resulting binary is ready to run. \end_layout \begin_layout Subsection Configure Options \end_layout \begin_layout Standard The MediaTomb configure script provides a large variety of options, allowing you to specify the additional libraries that will be used, features that will be compiled or disabled, workarounds for known bugs in some distributions and so on. Some options are straightforward, some require deeper knowledge - make sure you know what you are doing :) \end_layout \begin_layout Subsubsection Install Location Of Architecture Independent Files \end_layout \begin_layout Code --prefix=PREFIX \end_layout \begin_layout Description Default: /usr/local/ \end_layout \begin_layout Standard Install all architecture independent files - all .js files and .png images for the Web UI, the import.js script, the service description XML files - in the directory of your choice. This is especially useful if you do not want to perform a system-wide installat ion, but want to install MediaTomb only for your user. \end_layout \begin_layout Description Important: the prefix path will be compiled into the binary; the binary will still be relocatable, but you move those files you will have to point MediaTomb to the proper location by specifying it in the server configuration file. \end_layout \begin_layout Subsubsection Static Build \end_layout \begin_layout Code --enable-static \end_layout \begin_layout Description Default: disabled \end_layout \begin_layout Standard Build a static binary. This may be useful if you plan to install a precompiled MediaTomb binary on a system that does not have all the required libraries and where installatio n of those libraries is not possible due to reasons beyond your control. \end_layout \begin_layout Description Note: if you enable this option, make sure that you have all static versions of the appropriate libraries installed on your system. The configure script may not detect that those are missing - in this case you will get linker errors. Some distributions, for example Fedora Core, do not ship static library versions. \end_layout \begin_layout Subsubsection Automatically Create Database \end_layout \begin_layout Code --enable-db-autocreate \end_layout \begin_layout Description Default: enabled \end_layout \begin_layout Standard Automatically create the database if it is missing (for example upon a first time launch). Disabling this will make the resulting binary a little smaller, however you will have to take care of the database creation yourself by invoking the appropriate .sql scripts that are provided with the package. \end_layout \begin_layout Description Note: the server configuration file has to be setup correctly. Either sqlite or MySQL has to be chosen in the storage section, for sqlite the database file has to point to a writable location, for MySQL the user has to be setup with a valid password and permissions and the database \begin_inset Quotes sld \end_inset mediatomb \begin_inset Quotes srd \end_inset has to exist. \end_layout \begin_layout Subsubsection Debug Malloc/Realloc Of Zero bytes \end_layout \begin_layout Code --enable-debug-malloc0 \end_layout \begin_layout Description Default: disabled \end_layout \begin_layout Standard This feature is only for debugging purposes, whenever a malloc or realloc with a value of zero bytes is encountered, the server will terminate with abort() \end_layout \begin_layout Subsubsection Use Atomic Assembler Code For x86 Single CPU systems \end_layout \begin_layout Code --enable-atomic-x86-single \end_layout \begin_layout Description Default: disabled \end_layout \begin_layout Standard Use assembler code suited for single CPU x86 machines. This may improve performance, but your binary will not function properly on SMP systems. If you specify this for a non x86 architecture the binary will not run at all. If you wonder about the purpose of assembler code in a mediaserver application: we need it for atomic operations that are required for reference counting. The pthread library will be used as a fallback for other architectures, but can also be forced by a designated configure option. This however, will have the worst performance. \end_layout \begin_layout Standard By default x86 SMP code will be used on x86 systems - it will reliably work on both SMP and single CPU systems, but will not be as fast as the atomic-x86-s ingle option on uniprocessor machines. \end_layout \begin_layout Subsubsection Use Pthread Code For Atomic Operations \end_layout \begin_layout Code --enable-atomic-pthread \end_layout \begin_layout Description Default: auto detect \end_layout \begin_layout Standard This is the default setting for non x86 architectures, we may add assembler optimizations for other architectures as well, but currently only x86 optimizat ions are available. This option may also be safely used on x86 machines - the drawback is poor performance, compared to assembler optimized code. \end_layout \begin_layout Subsubsection X_MS_MediaReceiverRegistrar Support \end_layout \begin_layout Code --enable-mrreg-service \end_layout \begin_layout Description Default: disabled \end_layout \begin_layout Standard This option will enable the compilation and support of the X_MS_MediaReceiverReg istrar UPnP service, this was implemented for future Xbox 360 support. If you have a renderer that requires this service, you can safely enable it. It will always return true to IsValidated and IsAuthorized requests. \end_layout \begin_layout Subsubsection Fseeko Check \end_layout \begin_layout Code --disable-fseeko-check \end_layout \begin_layout Description Default: enabled \end_layout \begin_layout Standard This is a workaround for a bug in some Debian distributions, disable this check if you know that your system has large file support, but configure fails to detect it. For more information see: ADD LINK HERE \end_layout \begin_layout Subsubsection Largefile Support \end_layout \begin_layout Code --disable-largefile \end_layout \begin_layout Description Default: auto \end_layout \begin_layout Standard By default largefile support will be auto detected by configure, however you can disable it if you do not want it or if you experience problems with it on your system. \end_layout \begin_layout Subsubsection Redefinition Of Malloc And Realloc \end_layout \begin_layout Code --disable-rpl-malloc \end_layout \begin_layout Description Default: enabled \end_layout \begin_layout Standard Autoconf may redefine malloc and realloc functions to rpl_malloc and rpl_realloc , usually this will happen if the autotools think that you are compiling against a non GNU C library. Since malloc and realloc may behave different on other systems, this gives us the opportunity to write wrapper functions to handle special cases. However, this redefinition may get triggered when cross compiling, even if you are compiling against the GNU C lib. If this is the case, you can use this option to disable the redefinition. \end_layout \begin_layout Subsubsection SQLite Support \end_layout \begin_layout Code --enable-sqlite3 \end_layout \begin_layout Description Default: enabled \end_layout \begin_layout Standard The SQLite database is very easy in installation and use, you do not have to setup any users, permissions, etc. A database file will be simply created as specified in the MediaTomb configurat ion. At least SQLite version 3 is required. \end_layout \begin_layout Subsubsection MySQL Support \end_layout \begin_layout Code --enable-mysql \end_layout \begin_layout Description Default: enabled \end_layout \begin_layout Standard MySQL is a very powerful database, however it requires some additional setup. You will find information on how to setup MediaTomb with MySQL in the Installat ion section. \end_layout \begin_layout Subsubsection SpiderMonkey LibJS Support \end_layout \begin_layout Code --enable-libjs \end_layout \begin_layout Description Default: enabled \end_layout \begin_layout Standard SpiderMonkey is Mozilla's JavaScript engine, it plays a very important role in MediaTomb. We use it to create a nice virtual container layout based on the metadata that is extracted from your media. We also allow the user to create custom import scripts, so everyone has the possibility to adapt the layout to ones personal needs. Read more about this in the installation section. \end_layout \begin_layout Standard The main problem with this library is, that it is called differently on various distributions and that it is installed in different locations. For example, it is called js on Fedora, but is available under the name of smjs on Debian. If configure fails to find your js headers and libraries you can point it to the desired locations (see options below). \end_layout \begin_layout Subsubsection Filemagic Support \end_layout \begin_layout Code --enable-libmagic \end_layout \begin_layout Description Default: enabled \end_layout \begin_layout Standard This library determines the file type and provides us with the appropriate mime type information. It is very important to correctly determine the mime type of your media - this information will be sent to your renderer. Based on the mime type information, the renderer will decide if it can play/display the particular file or not. If auto detection returns strange mime types, you may want to do a check using the 'file' command (the 'file' package must be installed on your system). Assuming that you want to check somefile.avi enter the following in your terminal: \end_layout \begin_layout Code $ file -i somefile.avi \end_layout \begin_layout Standard This will print the detected mime type, this is exactly the information that we use in MediaTomb. You can override auto detection by defining appropriate file extension to mime type mappings in your configuration file. You can also edit the mime type information of an imported object manually via the web UI. \end_layout \begin_layout Subsubsection Id3lib Support \end_layout \begin_layout Code --enable-id3lib \end_layout \begin_layout Description Default: enabled, preferred over taglib \end_layout \begin_layout Standard This library will parse id3 tags of your MP3 files, the gathered information will be saved in the database and provided via UPnP. Further, the gathered metadata will be used by the import script to create a nice container layout (Audio/Artist/Album, etc.) \end_layout \begin_layout Subsubsection Taglib Support \end_layout \begin_layout Code --enable-taglib \end_layout \begin_layout Description Default: disabled if id3lib is available \end_layout \begin_layout Standard This library will parse id3 tags of your MP3 files as well as information provided with flac files. It claims to be faster than id3lib, but it also seems to have some drawbacks. We had some cases where it crashed when trying to parse tags of certain MP3 files on embedded systems, we had reports and observed that it had problems parsing the sample rates. We also did some valgrinding and detected memory leaks. Our feeling is, that you will have more stable results with id3lib, however it is up to you to enable or disable this library. By default id3lib will be taken if both libraries are present on the system. \end_layout \begin_layout Subsubsection Libexif Support \end_layout \begin_layout Code --enable-libexif \end_layout \begin_layout Description Default: enabled \end_layout \begin_layout Standard The exif library will gather metadata from your photos, it will also find exif thumbnails which are created automatically by most digital camera models. The gathered data will be used by the import script, the thumbnails will be offered as additional resources via UPnP. \end_layout \begin_layout Subsubsection Libextractor Support \end_layout \begin_layout Code --enable-libextractor \end_layout \begin_layout Description Default: disabled \end_layout \begin_layout Standard Libextractor is a library that attempts to parse all sorts of files, this includes exif data, id3 tags and much more. It can also deal with .AVI and .ASF files which is useful when your video files have the appropriate metadata. The drawback is - it is slow, especially slow on scanning big video files, so it slows down the import process considerably. For this reason this library is disabled by default. \end_layout \begin_layout Subsubsection MediaTomb Debug Output \end_layout \begin_layout Code --enable-tombdebug \end_layout \begin_layout Description Default: disabled \end_layout \begin_layout Standard This option enables debug output, the server will print out a lot of information which is mainly interesting to developers. Use this if you are trying to trace down a bug or a problem, the additional output may give you some clues. \end_layout \begin_layout Subsubsection UPnP Library Debug Output \end_layout \begin_layout Code --enable-upnpdebug \end_layout \begin_layout Description Default: disabled \end_layout \begin_layout Standard This option enables debug output of the UPnP SDK. You should not need it under normal circumstances. \end_layout \begin_layout Subsubsection Log Output \end_layout \begin_layout Code --disable-log \end_layout \begin_layout Description Default: enabled \end_layout \begin_layout Standard This option allows you to suppress all log output from the server. \end_layout \begin_layout Subsubsection Package Search Directory \end_layout \begin_layout Code --with-search=DIR \end_layout \begin_layout Description Default: /opt/local/ on Darwin, /usr/local/ on all other systems \end_layout \begin_layout Standard Some systems may have whole sets of packages installed in an alternative location, for example Darwinports on OSX get installed to /opt/local/. This option tells the configure script to additionally search for headers and libraries of various packages in DIR/include and DIR/lib. \end_layout \begin_layout Subsubsection Specifying Header And Library Locations Of Various Packages \end_layout \begin_layout Standard You can specify the exact location of particular headers and libraries. Some packages use extra programs that tell us the appropriate flags that are needed for compilation - like mysql_config. You can also specify the exact location of those programs. The parameters are self explanatory, in case of headers and libraries the DIR parameter is the directory where those headers and libraries are located. \end_layout \begin_layout Code --with-sqlite3-h=DIR search for sqlite3 headers only in DIR \end_layout \begin_layout Code --with-sqlite3-libs=DIR search for sqlite3 libraries only in DIR \end_layout \begin_layout Code --with-mysql-cfg=mysql_config absolute path/name of mysql_config \end_layout \begin_layout Code --with-js-h=DIR search for js (spidermonkey) headers in DIR \end_layout \begin_layout Code --with-js-libs=DIR search for js (spidermonkey) libraries in DIR \end_layout \begin_layout Code --with-magic-h=DIR search for filemagic headers in DIR \end_layout \begin_layout Code --with-magic-libs=DIR search for filemagic headers in DIR \end_layout \begin_layout Code --with-exif-h=DIR search for libexif headers in DIR \end_layout \begin_layout Code --with-exif-libs=DIR search for libexif libraries in DIR \end_layout \begin_layout Code --with-taglib-cfg=taglib-config absolute path/name of taglib-config \end_layout \begin_layout Code --with-id3lib-h=DIR search for id3lib headers in DIR \end_layout \begin_layout Code --with-id3lib-libs=DIR search for id3lib libraries in DIR \end_layout \begin_layout Code --with-zlib-h=DIR search for zlib headers in DIR \end_layout \begin_layout Code --with-zlib-libs=DIR search for zlib libraries in DIR \end_layout \begin_layout Code --with-iconv-h=DIR search for iconv headers in DIR \end_layout \begin_layout Code --with-iconv-libs=DIR search for iconv libraries in DIR \end_layout \begin_layout Code --with-extractor-h=DIR search for extractor headers in DIR \end_layout \begin_layout Code --with-extractor-libs=DIR search for extractor libraries in DIR \end_layout \begin_layout Subsubsection The devconf Script \end_layout \begin_layout Standard If you are doing some development work and some debugging, you will probably want to compile with the -g flag and also disable optimization. The devconf script does exactly that. In addition, it accepts command line parameters that are passed to the configure script. \end_layout \begin_layout Section Initial Installation \end_layout \begin_layout Subsection Network Setup \end_layout \begin_layout Standard Some systems require a special setup on the network interface. If MediaTomb exits with UPnP Error -117, or if it does not respond to M-SEARCH requests from the renderer (i.e. MediaTomb is running, but your renderer device does not show it) you should try the following settings (the lines below assume that MediaTomb is running on a Linux machine, on network interface eth1): \end_layout \begin_layout Code # route add -net 239.0.0.0 netmask 255.0.0.0 eth1 \end_layout \begin_layout Code # ifconfig eth1 allmulti \end_layout \begin_layout Standard Those settings will be applied automatically by the init.d startup script. \end_layout \begin_layout Standard You should also make sure that your firewall is not blocking port UDP port 1900 (required for SSDP) and UDP/TCP port of MediaTomb. By default MediaTomb will select a free port starting with 49152, however you can specify a port of your choice in the configuration file. \end_layout \begin_layout Subsection First Time Launch \end_layout \begin_layout Standard When starting MediaTomb for the first time, a .mediatomb directory will be created in your home. Further, a default server configuration file, called config.xml will be generated in that directory. \end_layout \begin_layout Subsubsection Using Sqlite Database \end_layout \begin_layout Standard If you are using sqlite - you are ready to go, the database file will be created automatically and will be located ~/.mediatomb/mediatomb.db If needed you can adjust the database file name and location in the server configuration file. \end_layout \begin_layout Subsubsection Using MySQL Database \end_layout \begin_layout Standard If MediaTomb was compiled with support for both databases, sqlite will be chosen as default because the initial database can be created and used without any user interaction. If MediaTomb was compiled only with MySQL support, the appropriate config.xml file will be created in the ~/.mediatomb directory, but the server will then terminate, because user interaction is required. \end_layout \begin_layout Standard MediaTomb has to be able to connect to the MySQL server and at least the (empty) database has to exist. To create the database and provide MediaTomb with the ability to connect to the MySQL server you need to have the appropriate permissions. Note that user names and passwords in MySQL have nothing to do with UNIX accounts, MySQL has it's own user names/passwords. Connect to the MySQL database as \begin_inset Quotes sld \end_inset root \begin_inset Quotes srd \end_inset or any other user with the appropriate permissions: \end_layout \begin_layout Code $ mysql [-u ] [-p] \end_layout \begin_layout Standard (You'll probably need to use \begin_inset Quotes sld \end_inset -u \begin_inset Quotes srd \end_inset to specify a different MySQL user and \begin_inset Quotes sld \end_inset -p \begin_inset Quotes srd \end_inset to specify a password.) \end_layout \begin_layout Standard Create a new database for MediaTomb: (substitute \begin_inset Quotes sld \end_inset \begin_inset Quotes srd \end_inset with the name of the database) \end_layout \begin_layout Code mysql> CREATE DATABASE ; \end_layout \begin_layout Standard (You can also use \begin_inset Quotes sld \end_inset mysqladmin \begin_inset Quotes srd \end_inset instead.) \end_layout \begin_layout Standard Give MediaTomb the permissions to access the database: \end_layout \begin_layout Code mysql> GRANT ALL ON .* \end_layout \begin_layout Code TO ''@'' \end_layout \begin_layout Code IDENTIFIED BY ''; \end_layout \begin_layout Standard If you don't want to set a password, omit \begin_inset Quotes sld \end_inset IDENTIFIED BY .. \begin_inset Quotes srd \end_inset completely. You could also use the MySQL \begin_inset Quotes sld \end_inset root \begin_inset Quotes srd \end_inset user with MediaTomb directly, but this is not recommended. \end_layout \begin_layout Standard To create a database and a user named \begin_inset Quotes sld \end_inset mediatomb \begin_inset Quotes srd \end_inset (who is only able to connect via \begin_inset Quotes sld \end_inset localhost \begin_inset Quotes srd \end_inset ) without a password (the defaults) use: \end_layout \begin_layout Code mysql> CREATE DATABASE mediatomb; \end_layout \begin_layout Code mysql> GRANT ALL ON mediatomb.* TO 'mediatomb'@'localhost'; \end_layout \begin_layout Standard If MediaTomb was compiled with database auto creation the tables will be created automatically during the first startup. All table names have a \begin_inset Quotes sld \end_inset mt_ \begin_inset Quotes srd \end_inset prefix, so you can theoretically share the database with a different applicatio n. However, this is not recommended. \end_layout \begin_layout Standard If database auto creation wasn't compiled in (configure was run with the \begin_inset Quotes sld \end_inset --disable-db-autocreate \begin_inset Quotes srd \end_inset or zlib.h was not available) you have to create the tables manually: \end_layout \begin_layout Code $ mysql [-u ] [-p] \backslash \end_layout \begin_layout Code < \backslash \end_layout \begin_layout Code /share/mediatomb/mysql.sql \end_layout \begin_layout Standard After creating the database and making the appropriate changes in your MediaTomb config file you are ready to go - launch the server, and everything should work. \end_layout \begin_layout Section Command Line Options \end_layout \begin_layout Standard There is a number of options that can be passed via command line upon server start up, for a short summary you can invoke MediaTomb with the following parameter: \end_layout \begin_layout Code $ mediatomb --help \end_layout \begin_layout Description Note: the command line options override settings in the configuration file! \end_layout \begin_layout Subsection IP Address \end_layout \begin_layout Code --ip or -i \end_layout \begin_layout Standard The server will bind to the given IP address, currently we can not bind to multiple interfaces so binding to 0.0.0.0 will not be possible. \end_layout \begin_layout Subsection Port \end_layout \begin_layout Code --port or -p \end_layout \begin_layout Standard Specify the server port that will be used for the web user interface, for serving media and for UPnP requests, minimum allowed value is 49152. If this option is omitted a default port will be chosen, however, in this case it is possible that the port will change upon server restart. \end_layout \begin_layout Subsection Configuration File \end_layout \begin_layout Code --config or -c \end_layout \begin_layout Standard By default MediaTomb will search for a file named \begin_inset Quotes sld \end_inset config.xml \begin_inset Quotes srd \end_inset in the ~/.mediatomb directory. This option allows you to specify a config file by the name and location of your choice. The file name must be absolute. \end_layout \begin_layout Subsection Daemon Mode \end_layout \begin_layout Code --daemon or -d \end_layout \begin_layout Standard Run the server in background, MediaTomb will shutdown on SIGTERM, SIGINT and restart on SIGHUP. \end_layout \begin_layout Subsection Write PID File \end_layout \begin_layout Code --pidfile or -P \end_layout \begin_layout Standard Specify a file that will hold the server process ID, the filename must be absolute. \end_layout \begin_layout Subsection Run Under Different User Name \end_layout \begin_layout Code --user or -u \end_layout \begin_layout Standard Run MediaTomb under the specified user name, this is especially useful in combination with the daemon mode. \end_layout \begin_layout Subsection Run Under Different Group \end_layout \begin_layout Code --group or -g \end_layout \begin_layout Standard Run MediaTomb under the specified group, this is especially useful in combinatio n with the daemon mode. \end_layout \begin_layout Subsection Add Content \end_layout \begin_layout Code --add or -a \end_layout \begin_layout Standard Add the specified directory or file name to the database without UI interaction. The path must be absolute, if path is a directory then it will be added recursively. If path is a file, then only the given file will be imported. \end_layout \begin_layout Subsection Log To File \end_layout \begin_layout Code --logfile or -l \end_layout \begin_layout Standard Do not output log messages to stdout, but redirect everything to a specified file. \end_layout \begin_layout Subsection Display Command Line Summary \end_layout \begin_layout Code --help or -h \end_layout \begin_layout Standard Print a summary about the available command line options. \end_layout \begin_layout Section Configuration File \end_layout \begin_layout Standard MediaTomb is highly configurable and allows the user to set various options and preferences that define the servers behavior. Rather than enforcing certain features upon the user, we prefer to offer a number of choices where possible. The heart of MediaTomb configuration is the config.xml file, which is located in the ~/.mediatomb directory. If the configuration file is not found in the default location and no configura tion was specified on the command line, MediaTomb will generate a default config.xml file in the ~/.mediatomb directory. The file is in the XML format and can be edited by a simple text editor, here is the list of all available options: \end_layout \begin_layout Itemize " \series bold Required \series default " means that the server will not start if the tag is missing in the configuratio n. \end_layout \begin_layout Itemize " \series bold Optional \series default " means that the tag can be left out of the configuration file. \end_layout \begin_layout Standard The root tag of MediaTomb configuration is: \end_layout \begin_layout Code \end_layout \begin_layout Subsection Server Settings \end_layout \begin_layout Standard These settings define the server configuration, this includes UPnP behavior, selection of database, accounts for the UI as well as installation locations of shared data. \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Required \end_layout \begin_layout Standard This section defines the server configuration parameters. \end_layout \begin_layout Standard Child tags: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code 0 \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default \emph default : \emph on 0 (automatic) \end_layout \begin_layout Standard Specifies the port where the server will be listening for HTTP requests. Note, that because of the implementation in the UPnP SDK only ports above 49152 are supported. The value of zero means, that a port will be automatically selected by the SDK. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code 192.168.0.23 \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default \emph default : \emph on first available interface. \end_layout \begin_layout Standard Specifies the IP address to bind to, by default one of the available interfaces will be selected. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code MediaTomb \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default \emph default : \emph on MediaTomb \end_layout \begin_layout Standard Server friendly name, you will see this on your devices that you use to access the server. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code http://mediatomb.org/ \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default \emph default : \emph on http://mediatomb.cc/ \end_layout \begin_layout Standard This tag sets the manufacturer URL of a UPnP device, a custom setting may be necessary to trick some renderers in order to enable special features that otherwise are only active with the vendor implemented server. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code MediaTomb \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: MediaTomb \end_layout \begin_layout Standard This tag sets the model name of a UPnP device, a custom setting may be necessary to trick some renderers in order to enable special features that otherwise are only active with the vendor implemented server. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code 80/index.html \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default \emph default : \emph on \begin_inset Quotes sld \end_inset / \begin_inset Quotes srd \end_inset \end_layout \begin_layout Standard The presentation URL defines the location of the servers user interface, usually you do not need to change this however, vendors who want to ship our server along with their NAS devices may want to point to the main configura tion page of the device. \end_layout \begin_layout Standard Attributes: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code append-to=... \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: \begin_inset Quotes sld \end_inset none \begin_inset Quotes srd \end_inset \end_layout \begin_layout Standard The append-to attribute defines how the text in the presentationURL tag should be treated. \end_layout \begin_layout Standard The allowed values are: \end_layout \begin_layout Code append-to="none" \end_layout \begin_layout Standard Use the string exactly as it appears in the presentationURL tag. \end_layout \begin_layout Code append-to="ip" \end_layout \begin_layout Standard Append the string specified in the presentationURL tag to the ip address of the server, this is useful in a dynamic ip environment where you do not know the ip but want to point the URL to the port of your web server. \end_layout \begin_layout Code append-to="port" \end_layout \begin_layout Standard Append the string specified in the presentationURL tag to the server ip and port, this may be useful if you want to serve some static pages using the built in web server. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Required \end_layout \begin_layout Standard \emph on Default \emph default : \emph on automatically generated if the tag is empty \end_layout \begin_layout Standard Unique Device Name, according to the UPnP spec it must be consistent throughout reboots. You can fill in something yourself, but we suggest that you leave this tag empty - it will be filled out and saved automatically after the first launch of the server. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code /home/your_user_name/.mediatomb \end_layout \begin_layout Standard \emph on Required \end_layout \begin_layout Standard \emph on Default: ~/.mediatomb \end_layout \begin_layout Standard Server home - the server will search for the data that it needs relative to this directory - basically for the sqlite database file. The mediatomb.html bookmark file will also be generated in that directory. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code /usr/share/mediatomb/web \end_layout \begin_layout Standard \emph on Required \end_layout \begin_layout Standard \emph on Default: depends on the installation prefix that is passed to the configure script. \end_layout \begin_layout Standard Root directory for the web server, this is the location where device description documents, UI html and js files, icons, etc. are stored. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code /home/myuser/mystuff \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: empty (disabled) \end_layout \begin_layout Standard Files from this directory will be served as from a regular web server. They do not need to be added to the database, but they are also not served via UPnP browse requests. Directory listing is not supported, you have to specify full paths. \end_layout \begin_layout Description Example: the file something.jar is located in /home/myuser/mystuff/javasubdir/som ething.jar on your filesystem. Your ip address is 192.168.0.23, the server is running on port 50500. Assuming the above configuration you could download it by entering this link in your web browser: http://192.168.0.23:50500/content/serve/javasubdir/somet hing.jar \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code 180 \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: \emph default \emph on 180, this is according to the UPnP specification. \end_layout \begin_layout Standard Interval for broadcasting SSDP:alive messages \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code mediatomb.html \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: mediatomb.html \end_layout \begin_layout Standard The bookmark file offers an easy way to access the user interface, it is especially helpful when the server is not configured to run on a fixed port. Each time the server is started, the bookmark file will be filled in with a redirect to the servers current IP address and port. To use it, simply bookmark this file in your browser, the default location is ~/.mediatomb/mediatomb.html \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard This section holds the user defined HTTP headers that will be added to all HTTP responses that come from the server. \end_layout \begin_layout Standard Child tags: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Code \end_layout \begin_layout Code ... \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard Specify a header to be added to the response. If you have a DSM-320 use to fix the .AVI playback problem. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: \emph default \emph on disabled \end_layout \begin_layout Standard This will limit title and description length of containers and items in UPnP browse replies, this feature was added a s workaround for the TG100 bug which can only handle titles no longer than 100 characters. A negative value will disable this feature, the minimum allowed value is "4" because three dots will be appended to the string if it has been cut off to indicate that limiting took place. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard This section defines various user interface settings. \end_layout \begin_layout Paragraph* WARNING! \end_layout \begin_layout Standard The server has an integrated filesystem browser, that means that anyone who has access to the UI can browse your filesystem (with user permissions under which the server is running) and also download your data! If you want maximum security - disable the UI completely! Account authentication offers simple protection that might hold back your kids, but it is not secure enough for use in an untrusted environment! \end_layout \begin_layout Description Note: since the server is meant to be used in a home LAN environment the UI is enabled by default and accounts are deactivated, thus allowing anyone on your network to connect to the user interface. \end_layout \begin_layout Standard Attributes: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code enabled=... \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: yes \end_layout \begin_layout Standard Enables ( \begin_inset Quotes sld \end_inset yes \begin_inset Quotes srd \end_inset ) or disables ( \begin_inset Quotes sld \end_inset no \begin_inset Quotes srd \end_inset ) the web user interface. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code poll-interval=... \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: 2 \end_layout \begin_layout Standard The poll-interval is an integer value which specifies how often the UI will poll for tasks. The interval is specified in seconds, only values greater than zero are allowed. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code poll-when-idle=... \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: no \end_layout \begin_layout Standard The poll-when-idle attribute influences the behavior of displaying current tasks: - when the user does something in the UI (i.e. clicks around) we always poll for the current task and will display it - if a task is active, we will continue polling in the background and update the current task view accordingly - when there is no active task (i.e. the server is currently idle) we will stop the background polling and only request updates upon user actions, but not when the user is idle (i.e. does not click around in the UI) \end_layout \begin_layout Standard Setting poll-when-idle to "yes" will do background polling even when there are no current tasks; this may be useful if you defined multiple users and want to see the tasks the other user is queuing on the server while you are actually idle. \end_layout \begin_layout Standard The tasks that are monitored are: \end_layout \begin_layout Itemize adding files or directories \end_layout \begin_layout Itemize removing items or containers \end_layout \begin_layout Itemize automatic rescans \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard Child tags: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard This section holds various account settings. \end_layout \begin_layout Standard Attributes: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code enabled=... \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: yes \end_layout \begin_layout Standard Specifies if accounts are enabled ( \begin_inset Quotes sld \end_inset yes \begin_inset Quotes srd \end_inset ) or disabled ( \begin_inset Quotes sld \end_inset no \begin_inset Quotes srd \end_inset ). \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code session-timeout=... \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: 30 \end_layout \begin_layout Standard The session-timeout attribute specifies the timeout interval in minutes. The server checks every five minutes for sessions that have timed out, therefore in the worst case the session times out after session-timeout + 5 minutes. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard Accounts can be defined as shown below: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Code \end_layout \begin_layout Code .... \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard There can be multiple users, however this is mainly a feature for the future. Right now there are no per-user permissions. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: 25 \end_layout \begin_layout Standard This sets the default number of items per page that will be shown when browsing the database in the web UI. \end_layout \begin_layout Standard The values for the items per page drop down menu can be defined in the following manner: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Code \end_layout \begin_layout Code \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Default: 10, 25, 50, 100 \end_layout \begin_layout Description Note: this list must contain the default value, i.e. if you define a default value of 25, then one of the \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Required \end_layout \begin_layout Standard Specifies the storage driver, currently sqlite3 and mysql are supported. Each storage driver has it's own configuration parameters. \end_layout \begin_layout Standard Attributes: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code driver=... \end_layout \begin_layout Standard \emph on Required \end_layout \begin_layout Standard \emph on Default: sqlite3 \end_layout \begin_layout Standard Allowed values are \begin_inset Quotes sld \end_inset sqlite3 \begin_inset Quotes srd \end_inset or \begin_inset Quotes sld \end_inset mysql \begin_inset Quotes srd \end_inset , the available options depend on the selected driver. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code driver="sqlite3" \end_layout \begin_layout Standard There is only one child tag for sqlite: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code mediatomb.db \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: \emph default \emph on mediatomb.db \end_layout \begin_layout Standard The database location is relative to the server's home, if the sqlite database does not exist it will be created automatically. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code driver="mysql" \end_layout \begin_layout Standard \begin_inset LatexCommand \label{config-mysql} \end_inset Below are the child tags for MySQL: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code localhost \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: "localhost" \end_layout \begin_layout Standard This specifies the host where your MySQL database is running. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code root \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: "mediatomb" \end_layout \begin_layout Standard This option sets the user name that will be used to connect to the database. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: no password \end_layout \begin_layout Standard Defines the password for the MySQL user. If the tag doesn't exist MediaTomb will use no password, if the tag exists, but is empty MediaTomb will use an empty password. MySQL has a distinction between no password and an empty password. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code mediatomb \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: "mediatomb" \end_layout \begin_layout Standard Name of the database that will be used by MediaTomb. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Subsection Import Settings \end_layout \begin_layout Standard The import settings define various options on how to aggregate the content. \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard This tag defines the import section. \end_layout \begin_layout Standard Attributes: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code hidden-files=... \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: no \end_layout \begin_layout Standard This attribute defines if files starting with a dot will be imported into the database ( \begin_inset Quotes sld \end_inset yes \begin_inset Quotes srd \end_inset ). Autoscan can override this attribute on a per directory basis. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard Child tags: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code ISO-8859-1 \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: \emph default \emph on if nl_langinfo() function is present, this setting will be auto detected based on your system locale, else set to ISO-8859-1 \end_layout \begin_layout Standard Defines the charset of the filesystem. For example, if you have file names in Cyrillic KOI8-R encoding, then you should specify that here. The server uses UTF-8 internally, this import parameter will help you to correctly import your data. \end_layout \begin_layout Standard \begin_inset ERT status collapsed \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code ISO-8859-1 \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: \emph default \emph on if nl_langinfo() function is present, this setting will be auto detected based on your system locale, else set to ISO-8859-1 \end_layout \begin_layout Standard Same as above, but defines the charset of the metadata (i.e. id3 tags, Exif information, etc.) \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard Defines options for the virtual container layout; the so called \begin_inset Quotes sld \end_inset virtual container layout \begin_inset Quotes srd \end_inset is the way how the server organizes the media according to the extracted metadata. For example, it allows sorting audio files by Album, Artist, Year and so on. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code type=... \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: builtin \end_layout \begin_layout Standard Specifies what will be used to create the virtual layout, possible values are: \end_layout \begin_layout Itemize builtin: a default layout will be created by the server \end_layout \begin_layout Itemize js: a user customizable javascript will be used (MediaTomb must be compiled with js support) \end_layout \begin_layout Itemize disabled: only PC-Directory structure will be created, i.e. no virtual layout \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Required if virtual layout type is \begin_inset Quotes sld \end_inset js \emph default \begin_inset Quotes srd \end_inset \end_layout \begin_layout Standard \emph on Default: \emph default \emph on ${prefix}/share/mediatomb/js/import.js, where ${prefix} is your installation prefix directory. \end_layout \begin_layout Standard Points to the script invoked upon media import. For more details read doc/scripting-intro.txt \end_layout \begin_layout Standard Attributes: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code charset=... \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: UTF-8 \end_layout \begin_layout Standard Specifies the import script encoding. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code /path/to/my/magic-file \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: System default \end_layout \begin_layout Standard Specifies an alternative file for filemagic, containing mime type information. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard Specifies a list of default autoscan directories. \end_layout \begin_layout Standard This section defines persistent autoscan directories. It is also possible to define autoscan directories in the UI, the difference is that autoscan directories that are defined via the config file can not be removed in the UI. Even if the directory gets removed on disk, the server will try to monitor the specified location and will re add the removed directory if it becomes available/gets created again. \end_layout \begin_layout Standard Child tags: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Code \end_layout \begin_layout Code ... \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard Defines an autoscan directory and it's parameters. \end_layout \begin_layout Standard The attributes specify various autoscan options: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code location=... \end_layout \begin_layout Standard \emph on Required \end_layout \begin_layout Standard Absolute path to the directory that shall be monitored. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code mode=... \end_layout \begin_layout Standard \emph on Required \end_layout \begin_layout Standard Scan mode, currently only "timed" is supported, future releases will introduce other modes - like inotify. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code interval=... \end_layout \begin_layout Standard \emph on Required for \begin_inset Quotes sld \end_inset timed \begin_inset Quotes srd \end_inset mode \end_layout \begin_layout Standard Scan interval in seconds. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code level=... \end_layout \begin_layout Standard \emph on Required \end_layout \begin_layout Standard Either "full" or "basic". Basic mode will only check if any files have been added or were deleted from the monitored directory, full mode will remember the last modification time and re add the media that has changed. Full mode might be useful when you want to monitor changes in the media, like id3 tags and alike. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code recursive=... \end_layout \begin_layout Standard \emph on Required \end_layout \begin_layout Standard Values of "yes" or "no" are allowed, specifies if autoscan shall monitor the given directory including all sub directories. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code hidden-files=... \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: \emph default \emph on value specified in \end_layout \begin_layout Standard Allowed values: "yes" or "no", process hidden files, overrides the hidden-files value in the tag. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard Defines various mapping options for importing media, currently two subsections are supported. \end_layout \begin_layout Standard This section defines mime type and upnp:class mappings, it is vital if filemagic is not available - in this case media type auto detection will fail and you will have to set the mime types manually by matching the file extension. It is also helpful if you want to override auto detected mime types or simply skip filemagic processing for known file types. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard This section holds the file name extension to mime type mappings. \end_layout \begin_layout Standard Attributes: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code ignore-unknown=... \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard \emph on Default: \emph default \emph on no \end_layout \begin_layout Standard If ignore-unknown is set to "yes", then only the extensions that are listed in this section are imported. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard Child tags: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard Specifies a mapping from a certain file name extension (everything after the last dot ".") to mime type. \end_layout \begin_layout Description Note: this improves the import speed, because invoking libmagic to discover the right mime type of a file is omitted for files with extensions listed here. \end_layout \begin_layout Description Note: extension is case sensitive, this will probably need to be fixed. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard This section holds the mime type to upnp:class mappings. \end_layout \begin_layout Standard Child tags: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard Specifies a mapping from a certain mime type to upnp:class in the Content Directory. The mime type can either be entered explicitly "audio/mpeg" or using a wildcard after the slash "audio/*". The values of "from" and "to" attributes are case sensitive. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard This section holds options for the various supported import libraries, it is useful in conjunction with virtual container scripting. \end_layout \begin_layout Standard UPnP defines certain tags to pass along metadata of the media (like title, artist, year, etc.), however some media provides more metadata and exceeds the scope of UPnP. This additional metadata can be used to fine tune the server layout, it allows the user to create a more complex container structure using a customized import script. The metadata that can be extracted depends on the library, currently we support libebexif and libextractor, the libraries provide a default set of keys that can be passed in the options below. The data according to those keys will the be extracted from the media and imported into the database along with the item. When processing the item, the import script will have full access to the gathered metadata, thus allowing the user to organize the data with the use of the extracted information. A practical example would be: if have more than one digital camera in your family you could extract the camera model from the Exif tags and sort your photos in a structure of your choice, like: \end_layout \begin_layout Standard Photos/MyCamera1/All Photos \end_layout \begin_layout Standard Photos/MyCamera1/Date \end_layout \begin_layout Standard Photos/MyCamera2/All Photos \end_layout \begin_layout Standard Photos/MyCamera2/Date \end_layout \begin_layout Standard etc. \end_layout \begin_layout Standard Child tags: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard Options for the exif library. \end_layout \begin_layout Standard Child tags: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard Currently only adding keywords to auxdata is supported. For a list of keywords/tags see the libexif documentation. Auxdata can be read by the import java script to gain more control over the media structure. \end_layout \begin_layout Standard Child tags: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Code \end_layout \begin_layout Code ... \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard If the library was able to extract the data according to the given keyword, it will be added to auxdata. You can then use that data in your import scripts. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard A sample configuration for the example described above would be: \end_layout \begin_layout Code \end_layout \begin_layout Code \end_layout \begin_layout Code \end_layout \begin_layout Code \end_layout \begin_layout Code \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard Options for the extractor library. \end_layout \begin_layout Standard Child tags: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard Currently only adding keywords to auxdata is supported. For a list of keywords/tags see the libextractor documentation. \end_layout \begin_layout Standard Child tags: \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Code \end_layout \begin_layout Code \end_layout \begin_layout Code ... \end_layout \begin_layout Standard \emph on Optional \end_layout \begin_layout Standard If the library was able to extract the data according to the given keyword, it will be added to auxdata. You can then use that data in your import scripts. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Standard \end_layout \end_inset \end_layout \begin_layout Section Supported Devices \end_layout \begin_layout Paragraph* Attention Hardware Manufacturers: \end_layout \begin_layout Standard If you want to improve compatibility between MediaTomb and your renderer device or if you are interested in a port of MediaTomb for your NAS device please e-mail to: \end_layout \begin_layout Subsection MediaRenderers \end_layout \begin_layout Standard MediaTomb supports all UPnP compliant MediaRenderers, however there can always be various problems that depend on the particular device implementation. We always try to implement workarounds to compensate for failures and limitatio ns of various renderers. \end_layout \begin_layout Standard This is the list of client devices that MediaTomb has been tested with and that are known to work. Please drop us a mail if you are using MediaTomb with a device that is not in the list, report any success and failure. We will try to fix the issues and will add the device to the list. \end_layout \begin_layout Subsubsection Acer \end_layout \begin_layout Itemize AT3705-MGW \end_layout \begin_layout Subsubsection Denon \end_layout \begin_layout Itemize AVR 4306 \end_layout \begin_layout Subsubsection D-Link \end_layout \begin_layout Itemize DSM-320 \end_layout \begin_layout Itemize DSM-320RD \end_layout \begin_layout Itemize DSM-520 \end_layout \begin_layout Standard Some additional settings in MediaTomb configuration are required to enable special features for the DSM renderers. If you have a DSM-320 and are experiencing problems during AVI playback, add the following to the server section of your config.xml: \end_layout \begin_layout Code \end_layout \begin_layout Code \end_layout \begin_layout Code \end_layout \begin_layout Subsubsection Linksys \end_layout \begin_layout Itemize WMLS11B (Wireless-B Music System) \end_layout \begin_layout Subsubsection Netgear \end_layout \begin_layout Itemize EVA700 \end_layout \begin_layout Subsubsection Philips \end_layout \begin_layout Itemize Streamium SL-300i \end_layout \begin_layout Itemize Streamium SL-400i \end_layout \begin_layout Itemize Streamium MX-6000i \end_layout \begin_layout Itemize SLA-5520 \end_layout \begin_layout Subsubsection Siemens \end_layout \begin_layout Itemize Gigaset M740AV \end_layout \begin_layout Subsubsection Telegent \end_layout \begin_layout Itemize TG100 \end_layout \begin_layout Standard The TG100 client has a problem browsing containers, where item titles exceed 101 characters. We implemented a server-side workaround which allows you to limit the lengths of all titles and descriptions. Use the following settings in the server section of your configuration file: \end_layout \begin_layout Code 101 \end_layout \begin_layout Subsection Network Attached Storage Devices \end_layout \begin_layout Standard We provide a bitbake metadata file for the OpenEmbedded environment, it allows to easily cross compile MediaTomb for various platforms. We have successfully tested MediaTomb on ARM and MIPSel based devices, so it should be possible to install and run the server on various Linux based NAS products that are available on the market. \end_layout \begin_layout Subsubsection Excito \end_layout \begin_layout Itemize Bubba Mini Server \end_layout \begin_layout Section Running The Server \end_layout \begin_layout Standard When you run MediaTomb for the first time a default configuration will be created in the ~/.mediatomb directory. If you are using the sqlite database no further intervention is necessary, if you are using MySQL you will have to make some adjustments (see Configuratio n section for more details). To start the server simply run "mediatomb" from the console, to shutdown cleanly press Ctrl-C. At start up MediaTomb will print a link to the web UI. \end_layout \begin_layout Description Note: Internet Explorer support is limited and not yet finished. It is very difficult to support this browser because of a huge number of bugs in its javascript implementation. If you don't believe us - just visit \begin_inset LatexCommand \url[http://selfhtml.org/]{http://selfhtml.org/} \end_inset and see how often IE is mentioned in not following the specs or simply not working with certain functions and features. We recommend Firefox. \end_layout \begin_layout Standard If you want to run a second server from the same PC, make sure to use a different configuration file with a different udn and a different database. \end_layout \begin_layout Standard After server launch the bookmark file is created in the ~/.mediatomb directory. You now can manually add the bookmark ~/.mediatomb/mediatomb.html in your browser. This will redirect you to the UI if the server is running. \end_layout \begin_layout Standard Assuming that you enabled the UI, you should now be able to get around quite easily. \end_layout \begin_layout Standard We also support the daemon mode which allows to start the server in background, the --user and --group parameters should be used to run the server under an unprivileged account. A script for starting/stopping the server is provided. \end_layout \begin_layout Section Legal \end_layout \begin_layout Paragraph* THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK! \end_layout \begin_layout Subsection Copyright \end_layout \begin_layout Paragraph* Copyright (C) 2005 \end_layout \begin_layout Standard Gena Batyan \end_layout \begin_layout Standard Sergey Bostandzhyan \end_layout \begin_layout Paragraph* Copyright (C) 2006-2007 \end_layout \begin_layout Standard Gena Batyan \end_layout \begin_layout Standard Sergey Bostandzhyan \end_layout \begin_layout Standard Leonhard Wimmer \end_layout \begin_layout Subsection License \end_layout \begin_layout Standard MediaTomb is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. MediaTomb is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License version 2 along with MediaTomb; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. \end_layout \begin_layout Section Acknowledgments \end_layout \begin_layout Standard We are using the following code in our tree: \end_layout \begin_layout Itemize uuid from E2fsprogs 1.35 under GNU GPL, Copyright (C) 1996, 1997, 1998 Theodore Ts'o. Some functions from the UPnP SDK were conflicting with libuuid, so we had to take the sources in and do some renaming. \end_layout \begin_layout Itemize md5 implementation by L. Peter Deutsch , Copyright (C) 1999 Aladdin Enterprise s. All rights reserved. (See source headers for further details) \end_layout \begin_layout Itemize md5 javascript implementation distributed under BSD License, Copyright (C) Paul Johnston 1999 - 2002. http://pajhome.org.uk/crypt/md5 \end_layout \begin_layout Itemize Prototype JavaScript Framework http://www.prototypejs.org/ (c) 2005-2007 Sam Stephenson, MIT-style license. \end_layout \begin_layout Itemize (heavily modified version of) NanoTree http://nanotree.sourceforge.net/ (c) 2003 (?) Martin Mouritzen ; LGPL \end_layout \begin_layout Itemize IE PNG fix from http://webfx.eae.net/dhtml/pngbehavior/pngbehavior.html \end_layout \begin_layout Itemize tombupnp is based on pupnp (http://pupnp.sf.net) which is based on libupnp (http://upnp.sf.net), originally distributed under the BSD license, Copyright (c) 2000-2003 Intel Corporation. Note that all changes to libupnp code that were made by the MediaTomb team are covered by the LGPL license. \end_layout \begin_layout Section Contributions \end_layout \begin_layout Itemize Initial version of the MediaTomb start up script was contributed by Iain Lea \end_layout \begin_layout Itemize TagLib support patch was contributed by Benhur Stein \end_layout \begin_layout Itemize tombupnp is kept in sync with the latest pupnp patches, see documentation in the tombupnp directory \end_layout \end_body \end_document