|
a |
|
b/doc/upmpdcli.txt |
|
|
1 |
= Upmpdcli: an UPnP Renderer Front-End to the Music Player Daemon
|
|
|
2 |
|
|
|
3 |
[[upmpdcli.intro]]
|
|
|
4 |
== Introduction
|
|
|
5 |
|
|
|
6 |
*upmpdcli* is an UPnP Media Renderer front-end to *mpd*, the Music Player
|
|
|
7 |
Daemon. It turns *mpd* into an UPnP Media Renderer.
|
|
|
8 |
|
|
|
9 |
*upmpdcli* is open-source, free and licensed under the GPL. It is written
|
|
|
10 |
in C++ and uses the *libupnp* (1.6) and *libmpdclient* libraries.
|
|
|
11 |
|
|
|
12 |
The typical setup is a home network with:
|
|
|
13 |
|
|
|
14 |
- An UPnP media server (e.g. *Minidlna*, *Mediatomb*, or some commercial
|
|
|
15 |
device).
|
|
|
16 |
- An UPnP control point (e.g. *Audionet* or *Bubble UPnP* running on a
|
|
|
17 |
tablet or phone).
|
|
|
18 |
- *mpd* running on some Linux device (e.g. Raspberry PI hooked up to your
|
|
|
19 |
bedroom stereo).
|
|
|
20 |
- *upmpdcli* running on any Linux computer on the network (the same as
|
|
|
21 |
*mpd* or not). It will be discovered by the UPnP control point in a
|
|
|
22 |
standard fashion.
|
|
|
23 |
|
|
|
24 |
In this usage, *mpd* does not manage the audio files directly and its
|
|
|
25 |
configured music directory will typically be empty. It fetches them from
|
|
|
26 |
the Media Server through HTTP, using the *curl* input plugin, and does not
|
|
|
27 |
need a local tags database.
|
|
|
28 |
|
|
|
29 |
_What's the point ?_ If you are running an UPnP network with multiple
|
|
|
30 |
devices, you may prefer to use a single control application (UPnP-based)
|
|
|
31 |
for everything. *mpd* is a very capable and robust music-playing application,
|
|
|
32 |
which runs well on small computers (e.g. Raspberry PI or other "plug" type
|
|
|
33 |
computers). However it needs a specific control application.
|
|
|
34 |
|
|
|
35 |
*upmpdcli* lets you control your *mpd*-based players with your UPnP control
|
|
|
36 |
point.
|
|
|
37 |
|
|
|
38 |
[[upmpdcli.config]]
|
|
|
39 |
== Configuration
|
|
|
40 |
|
|
|
41 |
See the man page for command line details. In most situations, *upmpdcli*
|
|
|
42 |
will be run as follows:
|
|
|
43 |
|
|
|
44 |
upmpdcli -D -c /etc/upmpdcli.conf
|
|
|
45 |
|
|
|
46 |
The `-D` option tells *upmpdcli* to fork and run in background. The `-c`
|
|
|
47 |
option specifies a configuration file.
|
|
|
48 |
|
|
|
49 |
The configuration file has a simple `name = value` format.
|
|
|
50 |
|
|
|
51 |
The configuration parameters can be set from the command line, a
|
|
|
52 |
configuration file, or the environment in this order of priority. It would
|
|
|
53 |
be rather confusing to use a mix of methods, so you should probably chose
|
|
|
54 |
one.
|
|
|
55 |
|
|
|
56 |
The following parameters can be set:
|
|
|
57 |
|
|
|
58 |
|========================
|
|
|
59 |
|What|Command line|Environment|Config variable
|
|
|
60 |
|Configuration file name|-c config|$UPMPD_CONFIG|
|
|
|
61 |
|Host name or IP address where *mpd* runs|-h mpdhost|$UPMPD_HOST|mpdhost
|
|
|
62 |
|TCP port for *mpd*|-p mpdport|$UPMPD_PORT|mpdport
|
|
|
63 |
|Do we own the *mpd* queue and fearlessly clear it|-o 0/1||ownqueue
|
|
|
64 |
|UPnP "friendly name" for the device. This gets displayed in network search
|
|
|
65 |
results.|-f friendlyname|$UPMPD_FRIENDLYNAME|friendlyname
|
|
|
66 |
|Log file name. Leave empty for stderr|-d logfilename||logfilename
|
|
|
67 |
|Verbosity level (0-4)|-l loglevel||loglevel
|
|
|
68 |
|===========================
|
|
|
69 |
|
|
|
70 |
[[upmpdcli.boot]]
|
|
|
71 |
== Boot time startup
|
|
|
72 |
|
|
|
73 |
*upmpdcli* will will try to change its `uid` to user `upmpdcli` if it is
|
|
|
74 |
started by root. It will refuse to run if the user does not exist.
|
|
|
75 |
|
|
|
76 |
If started by `root`, *upmpdcli* will also write its process id to
|
|
|
77 |
`/var/run/upmpdcli.pid`.
|
|
|
78 |
|
|
|
79 |
This should make it reasonably easy to write an init script for the
|
|
|
80 |
daemon. Such a script exists in the `debian` directory inside the source
|
|
|
81 |
tree.
|
|
|
82 |
|
|
|
83 |
[[upmpdcli.downloads]]
|
|
|
84 |
== Source code, packages
|
|
|
85 |
|
|
|
86 |
The source repository is on link:http://www.github.com/medoc92/upmpdcli[GitHub].
|
|
|
87 |
|
|
|
88 |
See the link:http://www.lesbonscomptes.com/upmpdcli[home page] for pointers
|
|
|
89 |
to releases and built packages.
|
|
|
90 |
|
|
|
91 |
[[upmpdcli.building]]
|
|
|
92 |
== Building
|
|
|
93 |
|
|
|
94 |
For building from source, you will need a recent `C++` compiler (`C++11`),
|
|
|
95 |
and the development packages for *libupnp* version 1.6, and *libmpdclient*.
|
|
|
96 |
|
|
|
97 |
If you are using the source from Github, you will also need the
|
|
|
98 |
autoconf/automake/libtool trio. Use the `autogen.sh` script to set things
|
|
|
99 |
up.
|
|
|
100 |
|
|
|
101 |
Otherwise, the procedure is standard and there are currently no specific
|
|
|
102 |
configure options:
|
|
|
103 |
|
|
|
104 |
configure --prefix=/usr
|
|
|
105 |
make
|
|
|
106 |
sudo make install
|
|
|
107 |
|