GeeXboX uShare
A free UPnP A/V & DLNA Media Server for Linux

This page is sponsored by and Top Hosting Center, enterprise level web hosting companies
that specializes in business web hosting and cloud server technology.


top Introduction

uShare is a UPnP (TM) A/V & DLNA 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. 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.

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

top Latest News

By lack of spare time, motivation and interest, uShare development is currently discontinued (this may change though). Don't expect release anytime soon :-(

Latest release of uShare is 1.1a.

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.

top 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
pkg-config is a helper tool used when compiling applications and libraries.
It helps you insert the correct compiler options on the command line.

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

The following DLNA library is required for proper DLNA support:

libdlna, 0.2.3.
The libdlna library is used to provides DLNA profiles informations. libdlna can be downloaded from

top 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.

Example :

CFLAGS="-Os" ./configure --prefix=/usr
If you want to enable DLNA support, run:
      ./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.

top Usage

At first you need to be sure that you have setup a multicast route for UPnP messages. If you don't but have a default route attributed, then this later will be used. Otherwise, simply declare a new route for UPnP multicasts (for example using eth0 interface) :
route add -net netmask eth0
uShare runs from the console only. It supports the usual --help option which displays usage and option information.
   -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 (default is './')
   -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 expects at least one 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 :
See the manual page for more details :
man ushare

top Supported File Formats List

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.

top Download

The currently available uShare release is 1.1a.
Sources can be downloaded here.

Fedora Package
If you're using Fedora FC4 GNU/Linux distribution, you can also grab the binary for i386.
Development Tree
The latest uShare development tree can be grabbed using Mercurial, a revision control system, similar in purpose to tools such as CVS, SCCS, and Subversion. It is used to keep track of the changes made to a source tree and to help programmers combine and otherwise manipulate changes made by multiple people or at different times.

There are currently 2 ways of accessing the Mercurial tree: via command-line or web interface (to just have a look to some changes on a specific file, for example). You can directly access to the web interface with your browser from:

uShare Mercurial

In order to access to Mercurial via command line, create and enter a new directory and do the following (be sure that you have installed the mercurial package).
Old Releases
Old releases of uShare can be found on our releases depository.

top Feedback

The author of uShare and this document, Benjamin Zores, can be contacted by e-mail.

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

top 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.

DLNA implementation is not yet complete or perfect. Some files may not be streamed or recognized. The specifications themselves are pretty weak in terms of files support and thus, it's possible you won't ever be able to stream your files, even with a perfect implementation.

top Press

Below are a few press articles were uShare has been mentionned:
Below is a short list of UPnP related software :