GeeXboX uShare - Introduction
=============================

GeeXboX uShare is a UPnP (TM) A/V Media Server. It implements the server
component that provides UPnP media devices with information on available
multimedia files. uShare uses the built-in http server of libupnp to
stream the files to clients.

GeeXboX uShare is able to provide access to both images, videos, music
or playlists files (see below for a complete file format support list).
It does not act as an UPnP Media Adaptor and thus, can't transcode
streams to fit the client requirements.

uShare is written in C for the GeeXboX project (see http://www.geexbox.org/).
It is designed to provide access to multimedia contents to GeeXboX but can of
course be used by any other UPnP client device.
It should compile and run on any modern POSIX compatible system such as Linux.

GeeXboX uShare is free software - it is licensed under the terms of the GNU
General Public License (GPL).

Copyright and License
=====================

GeeXboX uShare is copyright (C) 2005-2007 Benjamin Zores.

This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.

This program 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 along
with this program; if not, write to the Free Software Foundation, Inc., 51
Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Note that uShare links with libupnp, which is licensed under the
terms of a modified BSD license (i.e. the original BSD license without the
advertising clause). This license is compatible with the GNU GPL.

Homepage
========

Web site and file area for uShare is hosted on GeeXboX server :

   http://ushare.geexbox.org/

The latest version of uShare should always be available on this site.

Requirements
============

The following programs are required to build uShare:

 * GNU C Compiler (gcc), 2.95 or later.

   The GNU C Compiler is part of the GNU Compiler Collection which can be
   downloaded from http://gcc.gnu.org/.

 * pkg-config.

   pkg-config is a helper tool used when compiling applications and libraries.
   It helps you insert the correct compiler options on the command line.
   (see http://pkg-config.freedesktop.org/wiki/ ).

The following UPnP library is required to build and run uShare :

 * Linux SDK for UPnP Devices (libupnp), 1.4.2 or later

   The libupnp library is used to communicate using the UPnP protocol.
   libupnp can be downloaded from http://pupnp.sourceforge.net/.

The following DLNA library is required for proper DLNA support :

 * libdlna, 0.2.1 or later

   The libdlna library is used to provides DLNA profiles informations.
   libdlna can be downloaded from http://libdlna.geexbox.org/.

Building and Installation
=========================

Compile uShare by running configure and then make. This should
produce an executable ushare in the src subdirectory, which can be
used right away. No extra files need to be installed.

You can pass the CFLAGS you want to configure including -DDEBUG in order
to activate support for debug messages in uShare.

Example :

CFLAGS="-Os" ./configure --prefix=/usr
make

You can enable DLNA support by doing a:
./configure --enable-dlna

If you want to install uShare on your system, run :

make install-strip

This will copy the executable and manual page into their appropriate
directories (/usr/bin and /usr/man/man1 in this example).

For more information regarding configure and make, see the INSTALL document.

Usage
=====

uShare runs from the console only. It supports the usual --help option
which displays usage and option information.

Usage: ushare [-n name] [-i interface] [-c directory] [[-c directory] ...]
Options:
 -n, --name=NAME        Set UPnP Friendly Name (default is 'uShare')
 -i, --interface=IFACE  Use IFACE Network Interface (default is 'eth0')
 -f, --cfg=FILE         Config file to be used
 -p, --port=PORT        Forces the HTTP server to run on PORT
 -q, --telnet-port=PORT Forces the TELNET server to run on PORT
 -c, --content=DIR      Share the content of DIR directory.
 -w, --no-web           Disable the control web page (enabled by default)
 -t, --no-telnet        Disable the TELNET control (enabled by default)
 -o, --override-iconv-err       If iconv fails parsing name, still add to media contents (hoping the renderer can handle it)
 -v, --verbose          Set verbose display
 -x, --xbox             Use XboX 360 compliant profile
 -d, --dlna             Use DLNA compliant profile (PlayStation3 needs this)
 -D, --daemon           Run as a daemon.
 -V, --version          Display the version of uShare and exit
 -h, --help             Display this help

uShare gets its configuration from the /etc/ushare.conf file.
You can force configuration options through command line.

uShare expects one or several directory argument (-c argument),
specifying where multimedia files are stored. You should probably also use
the -i option to specify which interface uShare should listen on.

   ushare -c /shares
   ushare -c /shares1 --content=/shares2

You can also perform remote control of uShare UPnP Media Server through its
web interface. This let you define new content locations at runtime or
update the currently shared one in case the filesystem has changed.
Just go to :

   http://ip_address:port/web/ushare.html

See the manual page for more details :

   man ushare

Supported File Formats List
===========================

- Video files : asf, avi, dv, divx, wmv, mjpg, mjpeg, mpeg, mpg, mpe,
                mp2p, vob, mp2t, m1v, m2v, m4v, m4p, mp4ps, ts, ogm, mkv,
                rmvb, mov, qt

- Audio files : aac, ac3, aif, aiff, at3p, au, snd, dts, rmi, mp1, mp2, mp3,
                mp4, mpa, ogg, wav, pcm, lpcm, l16, wma, mka, ra, rm, ram

- Images files : bmp, ico, gif, jpeg, jpg, jpe, pcd, png, pnm, ppm,
                 qti, qtf, qtif, tif, tiff

- Playlist files : pls, m3u, asx

If you want uShare to support more file formats, simply add its properties
in the src/mime.c table. Do not forget to send a patch to update uShare.

Feedback
========

Please send bug reports, suggestions, ideas, comments or patches to :

   ushare@geexbox.org

Known bugs and limitations
==========================

If you need to listen on more than one interface, you will have to start
multiple instances of the media server.

uShare keeps some information on files in memory.
If your multimedia collection is huge, this might be a problem.

Thanks
======

Many thanks to Oskar Liljeblad for its original work on GMediaServer
(which is much more functionnal in terms of UPnP A/V features that
uShare will ever be).

References
==========

Note that this list of references is not complete.

 * UPnP(TM) Standards (http://www.upnp.org/standardizeddcps/default.asp)

Trademarks
==========

UPnP(TM) is a trademark of the UPnP(TM) Implementers Corporation.

-
