.TH "UPMPDCLI.CONF" "5" "Mar 04, 2024" "1.8.8" "Upmpdcli" .SH NAME upmpdcli.conf \- upmpdcli.conf documentation .SH DESCRIPTION .sp \fBupmpdcli.conf\fP is the configuration file for \fBupmpdcli(1)\fP\&. Its location must be indicated to the program either through the UPMPD_CONFIG environment variable or through the \-c command line option. .sp Each line in the configuration file contains a setting name and its value, e.g.: .sp \fBlogfilename = /tmp/upmpdcli.log\fP .sp Almost all configuration variables have suitable defaults, and the program distribution includes a sample file, typically installed to /etc, where variables are listed and commented. .sp You should have a look at the online manual for more complete information: \fI\%http://www.lesbonscomptes.com/upmpdcli/upmpdcli-manual.html\fP .SH PARAMETERS .TP .BI "logfilename = "fn Log file name. Defaults to stderr. This can also be specified as -d logfilename. .TP .BI "loglevel = "int Log level. Can also be specified as -l loglevel. .TP .BI "upnplogfilename = "fn Log file name for the low level UPnP lib (libnpupnp). This log is not active if this variable is not set at all. Use an empty value for the messages to go to stderr. .TP .BI "upnploglevel = "int Log level for the low level UPnP lib. For historical reasons the matching values are 1 less than equivalent values for the upmpdcli log. 4 is very verbose. .TP .BI "pkgdatadir = "dfn XML and other constant data storage directory. Default: '$prefix/share/upmpdcli' (e.g.: '/usr/share/upmpdcli'). .TP .BI "pidfile = "fn Name of the lock file used to store the current process pid. Only used if the process is launched by user root. Used by the init system, and to avoid multiple instances. The only reason to change the value is if you actually want to have several instances running (also change cachedir in this case). .TP .BI "upnpiface = "cstr Network interface(s) to use for UPnP. This can be left empty to use the first found suitable interface, or set to a single "*" character for using all interfaces. Else set it to a space-separated list of interface names (use double quotes if the names have embedded space characters). .TP .BI "upnpip = "string IP V4 address to use for UPnP, alternative to using an interface name. .TP .BI "upnpport = "int Port number used for UPnP. libupnp/pupnp defaults to using the first free port after 49152. Note that clients do not need to know about the value, which is automatically discovered. .TP .BI "useipv6 = "bool Enable use of IPV6. By default we only use IPV4. .TP .BI "friendlyname = "string "Friendly Name" for the Media Renderer. This will be displayed by most Control Points to identify the Renderer. Some OpenHome Control Points may display the 'ohproductroom' value instead. .TP .BI "avfriendlyname = "string Specific friendly name for the UPnP/AV Media Renderer. The default is to append "-av" to the friendlyname value. .TP .BI "upnpav = "bool Enable UPnP AV services (0/1). This is set by default, but it may useful to switch it off to avoid cluttering the Renderer choices if you only use OpenHome. .TP .BI "openhome = "bool Enable OpenHome services (0/1). This defaults to 1, as OpenHome queuing is superior for most usages. There should be little reason to turn it off. .TP .BI "lumincompat = "bool Disable the OpenHome Credentials service. At some point, this was necessary to enable Lumin to see upmpdcli instances: for some unknown reason, Lumin 1.10 did not discover upmpdcli with Credentials enabled. .TP .BI "ohinfotexttodata = "bool Store metadata into the OpenHome "metatext" variable. The OpenHome Info service are supposed to hold different data, mostly for radios, with permanent radio data (icon, url, radio name) set in the "Metadata" variable, and information about the current title recorded in the "Metatext" variable. Setting this option will have upmpdcli store any non-empty Metatext data in the Metadata variable. This will help some players display the album art for the current title (e.g. Kazoo). .TP .BI "checkcontentformat = "bool Check that input format is supported. Extract the protocolinfo information from the input metadata and check it against our supported formats. Set this option to 0 if a control point or media server sends good audio data with bad metadata. .TP .BI "iconpath = "fn Path to the Renderer icon. The image will be displayed by Control Points which support it. The UPnP protocol has provisions for a renderer to send the URL to a descriptive icon as part of the device description. Due to current (and probably permanent) *upmpdcli* limitations, the image file *must* be a 64x64 32 bits-per-pixel png file. Default: '$pkgdatadir/icon.png'. The icon will only be read once, when upmpdcli starts up. .TP .BI "saveohcredentials = "bool Save the streaming services login parameters to disk. This allows sharing the password with the upmpdcli media server streaming service proxy, if you are also using it. Avoids having to enter the password in the regular configuration file. Depending on your situation, you may see this as a security risk. The default is true, because I don't see this as a real issue in the general case. .TP .BI "opensslcmd = "fn Path to the openssl command The OHCredentials service needs openssl 1.1.x or newer. Path to the openssl command to use if the system one (in /usr/bin) is too old. Not set by default. .TP .BI "cachedir = "dfn Directory used to store cached data Only used for the OpenHome queue metadata for now. The default value is ~/.cache/upmpdcli for normal users or /var/cache/upmpdcli when upmpdcli is started as root. .TP .BI "presentationhtml = "fn Path to the presentation HTML document You can change it to replace the default presentation page. The page will only be read once, when upmpdcli starts up. It can't presently be used for status updates (but I guess that you could put a redirect in there, to something more dynamic served by a real HTTP server). Default: '$pkgdatadir/presentation.html'. .TP .BI "enablel16 = "bool Advertise L16 format support L16 is a raw linear 16 bits audio stream and the source of many issues because it does not include identifying information. It used to be disabled by default, because of an mpd bug resulting in a lot of noise. It's now on by default, but can still be disabled if needed. It seems that it sometimes interfers badly with the win10 "cast to device" feature, so you may try to turn it off if you have problems with this. .TP .BI "mpdhost = "string Host MPD runs on. Defaults to localhost. This can also be specified as -h host .TP .BI "mpdport = "int IP port used by MPD Can also be specified as -p port. Defaults to the normal MPD port, 6600 .TP .BI "mpdpassword = "string MPD password. Password for connecting to MPD (only necessary if password access is enabled in the MPD configuration file). .TP .BI "mpdtimeoutms = "int MPD connection timeout in milliseconds. If this is not zero, dialogs with mpd will timeout after the value. This will allow upmpdcli to stay responsive (return errors) if MPD ever becomes stuck. .TP .BI "ownqueue = "bool Set if we own the MPD queue. If this is set (on by default), we own the MPD queue and will fearlessly clear it. Can also be specified as -q 0|1. .TP .BI "onstart = "fn Command to run when playback is about to begin. Specify the full path to the program, e.g. /usr/bin/logger. .TP .BI "onplay = "fn Command to run when MPD state switches to "PLAY". Specify the full path to the program, e.g. /usr/bin/logger. .TP .BI "onpause = "fn Command to run when MPD state switches to "PAUSE". Specify the full path to the program, e.g. /usr/bin/logger. .TP .BI "onstop = "fn Command to run when MPD state switches to "STOP". Specify the full path to the program, e.g. /usr/bin/logger. .TP .BI "onstandby = "fn Command to run when the setstandby action is called. Specify the full path to the program. It is called with one 0/1 argument to change the standby state (1 for activating standby), and with no argument to query the state. In all cases, it should print the standby state (0/1) to stdout before exiting. .TP .BI "externalvolumecontrol = "fn Use external command to manage the the sound volume (0/1). This is used in the case where MPD is unable to control the volume, but some other command can, for example if you have an external amp on which it is possible to set and read the volume through scripts. If set, the calls to MPD to set and read the volume will be replaced by executions of 'onvolumechange' and 'getexternalvolume' .TP .BI "getexternalvolume = "fn Command to run for reading the sound volume. The command should write a 0-100 numeric value to stdout. .TP .BI "onvolumechange = "fn Command to run to set the volume. Used when 'externalvolumecontrol' is set. Specify the full path to the program, which is called with the volume as the first argument, e.g. /some/script 85. .TP .BI "avtautoplay = "string Automatically fake a Play command when track is set. The UPnP/AV SetAVTransportURI, used to set the track to play, normally does not change the current transport state: an explicit Play command is required to start playing if the transport was stopped. Setting this parameter will synthetize a Play command after receiving SetAVTransportURI. This is needed by some control points which do not send the Play command. .TP .BI "ohproductroom = "string The name of the room where the Product is located. Set to "Main Room" by default, displayed in place of the "friendly name" by some control points. ProductRoom is used to group the Product with other related Products in the same physical room (e.g. a source with a pre-amp). Products which are physically linked must always share the same ProductRoom name. .TP .BI "radiolist = "fn Path to an external file with radio definitions. Radio stations can be defined in this file (main configuration file), or in an external file (or both). Using an external file can ease distribution to multiple machines, makes things clearer and is now the default. See the distributed file (name below) for information on how to define a radio station. In case you want to define radios in the main configuration file, they MUST occur at the end of the file (because they are defined as subsections, the last of which extends to the end of the file). .TP .BI "radioscripts = "fn Radio metadata scripts directory. Path of a directory where the scripts used for fetching the channel metadata are located. The default is /usr/share/upmpdcli/radio_scripts. Note that the scripts are always first looked for in the locations defined by $PATH. .TP .BI "ohmanufacturername = "string Manufacturer name. .TP .BI "ohmanufacturerinfo = "string Manufacturer information. .TP .BI "ohmanufacturerurl = "string URL for manufacturer web site. .TP .BI "ohmanufacturerimageuri = "string Uri for manufacturer's logo. .TP .BI "ohmodelname = "string Model name. .TP .BI "ohmodelinfo = "string Model information. .TP .BI "ohmodelurl = "string URL for model web site. .TP .BI "ohmodelimageuri = "string Uri for model's icon. .TP .BI "ohproductname = "string User-visible product name. By default this is set to ModelName. .TP .BI "ohproductinfo = "string Product information. .TP .BI "ohproducturl = "string URL for product web site. This may be the UPnP presentation page. .TP .BI "ohproductimageuri = "string Uri for product image. .TP .BI "ohmetapersist = "bool Save queue metadata to disk (0/1). This allows persistence of the metadata information across restarts, the default is 1, and there is no reason to turn it off. .TP .BI "ohmetasleep = "int Mimimum interval (Seconds) between two cache saves. Increasing this may improve playlist load speed on a slow device. The default is to start a new save as soon as the previous one is done (if the list changed again inbetween). .TP .BI "msfriendlyname = "string Friendly name for the Media Server (if enabled). The default is to append "-mediaserver" to the friendlyname value. .TP .BI "msrootalias = "string Media Server root alias Object ID. Use the specified Media Server container as root. The Control Point will directly show this container when connecting, which will avoid having to skip over the top levels if you don't use them. (E.g. the active plugin list if there is only one plugin). The value is an UPnP object ID, which is unfortunately not generally obtainable from Control Points. However the commonly useful values are simple: - `0$uprcl$` Direct access to the Local Media root - `0$uprcl$folders` Direct access to the Local Media [folders] tree. An alias must begin with `0` (which is the mandatory UPnP root object ID), followed by `$pluginname$` where _pluginname_ could be any subdirectory of `/usr/share/upmpdcli/cdplugins` except `pycommon` (e.g. `uprcl`, `qobuz`, `upradios`...), and the rest would depend on the plugin type. .TP .BI "plgmicrohttphost = "string Hostname/IP address used in proxy URLs. The default is to use the same host/address as the UPnP server. Using localhost/127.0.0.1 instead loses the ability to stream to a remote renderer, but allows for portable playlists. .TP .BI "plgmicrohttpport = "int IP port for the tidal/qobuz local HTTP service. The URLs for tracks streamed from these services point to a local microhttpd server running on this port (it uses redirection to the actual service URL when actually streaming). The default is 49149. .TP .BI "plgproxymethod = "string Decide if we proxy (copy: fetch/serve), or redirect the streaming services streams. Using redirect is much more efficient, but the proxy has a facility to retry when a stream is dropped by the service, which seems to happen esp. with Qobuz. .TP .BI "msiconpath = "fn Path to the Media Server icon. The image will be displayed by Control Points which support it. Due to current (and probably permanent) *upmpdcli* limitations, the image file *must* be a 64x64 32 bits-per-pixel png file. Default: '$pkgdatadir/icon.png'. The icon will only be read once, when upmpdcli starts up. .TP .BI "webserverdocumentroot = "fn Directory from which the internal HTTP server will directly serve files This is disabled by default for compatibility with older versions which never served files directly from the filesystem. Some Mediaserver plugins ask to enable it, e.g. for serving icon files (normally from directories under /usr/share/upmpdcli/www). .TP .BI "hrauser = "string Hra user name. Your Hra login name. .TP .BI "hrapass = "string Hra password. The password for your Hra account. .TP .BI "hralang = "string Hra language setting (en/de). Some Highresaudio messages will be set in the appropriate language. .TP .BI "hratitle = "string Plugin Title. This will be displayed as the plugin entry in the Media Server root directory. .TP .BI "qobuzuser = "string Qobuz user name. Your Qobuz login name. .TP .BI "qobuzpass = "string Qobuz password. The password for your Qobuz account. .TP .BI "qobuzformatid = "cstr Qobuz stream quality. 5 for mp3/320, 6 for FLAC, 7 FLAC 24/96, 27 for hi-res (if your subscription allows streaming each of the formats). .TP .BI "qobuzrenumtracks = "bool Qobuz track renumbering. Renumber tracks by counting elements, avoiding issues with Kodi. Enabled by default. .TP .BI "qobuzexplicititemnumbers = "bool Explicit item numbers in brackets. Add item numbers in square brackes in lists, mostly for kodi compatibility/usability. Disabled by default. .TP .BI "qobuzprependartisttoalbum = "bool Artist name before albums in album lists. Prepend artist to album in album lists, mostly for kodi compatibility/usability. Disabled by default. .TP .BI "qobuztitle = "string Plugin Title. This will be displayed as the plugin entry in the Media Server root directory. .TP .BI "tidaluser = "string Bogus user name variable. Decides if the service should be started. Set it to any arbitrary value. .TP .BI "tidaltokentype = "string Authentication token type. The type of token used for authentication, typically Bearer. .TP .BI "tidalaccesstoken = "string Access Token. The access token used for authentication. .TP .BI "tidalrefreshtoken = "string Refresh Token. The refresh token used for authentication. .TP .BI "tidalexpirytime = "string Token expiry time. The expiry time, as an epoch-based floating point number, of the token used for authentication. .TP .BI "tidalaudioquality = "cstr Tidal maximum stream quality. LOW for mp3/96, HIGH for mp3/320, LOSSLESS for FLAC 16/44, HI_RES for MQA, HI_RES_LOSSLESS for hi-res FLAC files (if your subscription allows streaming each of the formats). .TP .BI "tidaltitle = "string Plugin Title. This will be displayed as the plugin entry in the Media Server root directory. .TP .BI "tidalprependnumberinitemlist = "bool Use item numbers in album lists for kodi compatibility Kodi always tries to sort things, with this parameter we force it to show the entries in the desired order. .TP .BI "uprcluser = "string Bogus user name variable. Used for consistency with other Media Server plugins to decide if the service should be started (so, do set it if you want a Media Server). You probably also want to set uprclautostart=1 so that initialisation starts as soon as the program does. .TP .BI "uprcltitle = "string Plugin Title. This will be displayed as the plugin entry in the Media Server root directory. .TP .BI "uprclhostport = "string Uprcl HTTP server host and port for serving media files. Uprcl uses a separate HTTP server based on the Python Bottle framework and Waitress server. The HTTP server will listen on this address and port, which will also be inserted on the URLs we produce. If the variable is not set, we will use port 9090 and the same address as the server used for other services (either plgmicrohttphost or the first ipv4 address used by the upnp layer. not. Example: 192.168.1.1:9090. As it is reasonable to use the same address as the upnp layer, see also uprclport for just specifying the port. .TP .BI "uprclport = "string Uprcl HTTP server port for serving media files. Port to use for listening for media requests. The listen address will be either plgmicrohttphost if it is set, or the first ipv4 address used by the upnp layer. Ignored if uprclhostport is set. .TP .BI "uprclconfdir = "dfn uprcl Recoll index directory This is usually not defined and defaults to /var/cache/upmpdcli/uprcl. The name is a bit misleading because there is little real configuration data in there: it's mostly programmatically generated from actual configuration found elsewhere (but also see uprclconfrecolluser). .TP .BI "uprclconfrecolluser = "fn Name of the user Recoll config additions file This is the name of a file with additional parameters for the uprcl recoll.conf file, to which the contents will be appended before indexing. The default is /var/cache/upmpdcli/uprcl/recoll.conf.user. If set, should be an absolute path. .TP .BI "uprclminimconfig = "fn Name of the Minim Server configuration file If set, this is the name of a Minim Server configuration file from which we should fetch parameters like aliasTags, etc. (See the manual). Not set by default, and optional. .TP .BI "uprclmediadirs = "string Media directories This is a space-separated list of directories to explore for music files. This is used directly as the recoll "topdirs" value, so you can use double-quote quoting for paths with embedded spaces. If not set, we will try to use contentDirs from the Minim config. An error will occur if both are empty. .TP .BI "uprclnotagview = "bool Suppress folder "Tag View" entries. The "Tag View" entry allow browsing a subdirectory by tags. It can be quite useful but also a problem with some Control Points, or kinds of usage. .TP .BI "uprclpaths = "string Path translations. Translations from real paths to ones relative to the HTTP server doc tree. If this is not set, uprcl will use a null translation for each of the uprclmediadirs entries. .TP .BI "upradiosuser = "string Bogus user name variable. Used for consistency with other Media Server plugins to decide if the service should be started (so, do set it if you want to see the radio list). .TP .BI "upradiostitle = "string Plugin Title. This will be displayed as the plugin entry in the Media Server root directory. .TP .BI "upradiosmaxthreads = "int Maximum number of threads to use while initializing the radio list Most radios are defined by playlist files which may need several network interactions before the actual URL usable by the control point can be reached. We use multiple threads to speed up this process, this is the maximum thread count. .TP .BI "radio-browseruser = "string Bogus user name variable. Decides if the service should be started. Set it to any arbitrary value. .TP .BI "radio-browsertitle = "string Plugin Title. This will be displayed as the plugin entry in the Media Server root directory. .TP .BI "radio-paradiseuser = "string Bogus user name variable. Decides if the service should be started. Set it to any arbitrary value. .TP .BI "radio-paradisetitle = "string Plugin Title. This will be displayed as the plugin entry in the Media Server root directory. .TP .BI "mother-earth-radiouser = "string Bogus user name variable. Decides if the service should be started. Set it to any arbitrary value. .TP .BI "mother-earth-radiotitle = "string Plugin Title. This will be displayed as the plugin entry in the Media Server root directory. .TP .BI "subsonicuser = "string SubSonic User name variable. Decides if the service should be started. Set it to the appropriate user name. .TP .BI "subsonicpassword = "string SubSonic Password variable. Required for SubSonic authentication. Set it to the appropriate password. .TP .BI "subsoniclegacyauth = "bool SubSonic legacy authentication mode. Required for SubSonic authentication with some servers (e.g. lms). Set to 1 to enable. .TP .BI "subsonicbaseurl = "string SubSonic server base url. URL of the server, without the port. Specify http or https .TP .BI "subsonicport = "int SubSonic server port. The port of the SubSonic server .TP .BI "subsonicitemsperpage = "int SubSonic items per page Number of items per page for SubSonic .TP .BI "subsonicappendyeartoalbum = "bool Append year to album If enabled, the year will be appended to the album in the lists. Enabled by default. .TP .BI "subsonictranscodecodec = "string Enable transcoding If a value is set, it will be used as the codec for the transcoding process .TP .BI "subsonictranscodemaxbitrate = "int Set max bitrate for transcoding If a value is set, it will be used as the max bitrate for the transcoding process .TP .BI "subsonicserversidescrobbling = "bool Enable server-side scrobbling If enabled, we will scrobble the song when streaming starts. Disabled by default. .TP .BI "subsonicprependnumberinalbumlist = "bool Add a progressive number to album in album lists. Mostly for Kodi compatibility and usability. Enabled by default. .TP .BI "subsonictaginitialpageenabledir = "int Subsonic enable Internet Radios Enables Internet Radios. Disabled by default, upmpdcli offers multiple ways of handling Internet Radios .TP .BI "subsonictitle = "string Plugin Title. This will be displayed as the plugin entry in the Media Server root directory. .TP .BI "bbcuser = "string Bogus user name variable. Set this to activate the plugin, the value is ignored. .TP .BI "bbcprogrammedays = "string Past days in BBC Sounds catalog listing. This controls how many days are listed in the station displays. .TP .BI "bbctitle = "string Plugin Title. This will be displayed as the plugin entry in the Media Server root directory. .TP .BI "sclogfilename = "fn Log file name for sc2mpd (default stderr) The value *must not* be the same as the one used for upmpdcli (except if empty). .TP .BI "scloglevel = "int Log verbosity for sc2mpd. .TP .BI "scplaymethod = "cstr sc2mpd play method (mpd/alsa). With this set as 'alsa', sc2mpd will send the audio directly to the sound driver, which is the only way to really avoid skips and control the synchronization in multi-room setups. *For 'alsa', make sure that user upmpdcli has permission to access the audio devices !* .TP .BI "schttpport = "int Port used by sc2mpd for MPD to connect to. Used only for scplaymethod=mpd. sc2mpd only accepts connections from localhost. .TP .BI "scalsadevice = "string Alsa device used by sc2mpd for playing audio. Only used for scplaymethod=alsa. Use 'aplay -L' to see the possible values. .TP .BI "sccvttype = "cstr sc2mpd resampling method. Only used for scplaymethod=alsa. sc2mpd uses libsamplerate. The default method is SRC_SINC_FASTEST and a Rasberry Pi 1 is fast enough to use it. Possible values: SRC_SINC_BEST_QUALITY, SRC_SINC_MEDIUM_QUALITY, SRC_SINC_FASTEST, SRC_ZERO_ORDER_HOLD, SRC_LINEAR. See the libsamplerate documentation for descriptions. Anything above SRC_SINC_FASTEST needs a serious CPU. BEST_QUALITY uses approx 25% cpu on a core i7 4770T. Obviously too much, actually might not be sustainable (it's almost 100% of 1 cpu). MEDIUM_QUALITY is around 10% on the same machine, FASTEST is 4-5%. Given that this is measured for the full process, probably a couple % for the conversion in fact. NONE will turn resampling off: minimum CPU and best quality, but guaranteed glitches from time to time, depending on the clocks skew. .TP .BI "scusempdvolume = "bool Scale songcast stream based on mpd volume value Allow controlling the volume from the Control Point by scaling the stream according to the mpd volume value. Only works when scplaymethod is 'alsa'. .TP .BI "sc2mpd = "string Path to sc2mpd. Only useful if it is not in /usr/bin and the location is not in the $PATH for the init scripts. .TP .BI "screceiverstatefile = "string Path to a screceiver state file. If set, the sender uri and metadata will be read from the file when initializing the Songcast Receiver service and written to the file when a Sender is set for the service. Useful for preserving the sender information between restarts. .TP .BI "scstreamcodec = "string !!Standard Songcast receivers only support PCM!! Codec to use for the network stream. Set to empty or PCM to support foreign receivers. Or use FLAC or OPUS for lower network load. .TP .BI "scsenderpath = "fn Path to starter script This is normally scmakempdsender which starts the auxiliary mpd and the sender process. Empty and searched in the PATH by default. .TP .BI "scstreamscaled = "bool Scale the Songcast stream. If set, MPD software volume control will be applied to the stream. True by default: using a Control Point to set the volume on the upmpdcli instance which started the Sender affects the volume for all Receivers. .TP .BI "scsendermpdport = "int localhost port to be used by the auxiliary mpd. .TP .BI "scripts_dir = "dfn External sources script directory. Location for the scripts used to set up additional external sources. See the Songcast Sender support documentation page. .TP .BI "scscriptgracesecs = "int Grace period to wait for a script process to exit before it is forcely killed. In seconds. Default 2 S. .SH SEE ALSO .sp \fBupmpdcli(1)\fP