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.
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.
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.
CFLAGS="-Os" ./configure --prefix=/usr
If you want to enable DLNA support, run:
If you want to install uShare on your system, run :
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.
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 220.127.116.11 netmask 255.0.0.0 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
-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.
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.
The currently available uShare release is 1.1a.
Sources can be downloaded here.
If you're using Fedora FC4 GNU/Linux distribution, you can also grab the binary for i386.
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:
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.