UPMPDCLI.CONF(5)
π upmpdcli.conf(5) β Upmpdcli π
πΈ NAME πΈ
upmpdcli.conf β the upmpdcli.conf documentation, bestie. Thatβs the whole name section, short and iconic π
β¨ DESCRIPTION β¨
okay so listen: upmpdcli.conf is literally the configuration file for upmpdcli(1). Its location has to be pointed out to the program either through the UPMPD_CONFIG environment variable or through the -c command line option. No vibes-based guessing, it needs one of those π«Ά
Each line in the config file contains a setting name and its value, like this:
logfilename = /tmp/upmpdcli.log
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. Very βread the sample, queenβ energy π
You should have a look at the online manual for more complete information: http://www.lesbonscomptes.com/upmpdcli/upmpdcli-manual.html π
π PARAMETERS π
logfilename = fnβ Log file name. Defaults tostderr. This can also be specified as-d logfilename. Some plugins use different files orstderrto log their messages to. πloglevel = intβ Log level. Can also be specified as-l loglevel. Some plugins have their own settings that control log verbosity. πupnplogfilename = fnβ Enable low levellibnpupnplogging and set output name. Set to empty forstderr. This log is not active if this variable is not set at all. Use an empty value for the messages to go tostderr. πupnploglevel = intβ Log level for the low level UPnP lib. For historical reasons the matching values are1less than equivalent values for the upmpdcli log.4is very verbose. πpkgdatadir = dfnβ XML and other constant data storage directory. Default:$prefix/share/upmpdcli(e.g.:/usr/share/upmpdcli). π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 changecachedirin this case). π¦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). β¨upnpip = stringβ IP V4 address to use for UPnP, alternative to using an interface name. πupnpport = intβ Port number used for UPnP.libupnp/pupnpdefaults to using the first free port after49152. Note that clients do not need to know about the value, which is automatically discovered. π«Άuseipv6 = boolβ Enable use of IPV6. By default we only use IPV4. πΈ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 theohproductroomvalue instead. πavfriendlyname = stringβ Specific friendly name for the UPnP/AV Media Renderer. The default is to append-avto thefriendlynamevalue. πupnpav = boolβ Enable UPnP AV services (0/1). This is set by default, but it may be useful to switch it off to avoid cluttering the Renderer choices if you only use OpenHome. βopenhome = boolβ Enable OpenHome services (0/1). This defaults to1, as OpenHome queuing is superior for most usages. There should be little reason to turn it off. πlumincompat = boolβ Disable the OpenHome Credentials service. At some point, this was necessary to enable Lumin to seeupmpdcliinstances: for some unknown reason, Lumin1.10did not discoverupmpdcliwith Credentials enabled. πohinfotexttodata = boolβ Store metadata into the OpenHomemetatextvariable. The OpenHome Info service are supposed to hold different data, mostly for radios, with permanent radio data (icon, url, radio name) set in theMetadatavariable, and information about the current title recorded in theMetatextvariable. 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). πΈ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 to0if a control point or media server sends good audio data with bad metadata. π₯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 a64x6432bits-per-pixelpngfile. Default:$pkgdatadir/icon.png. The icon will only be read once, when upmpdcli starts up. π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 istrue, because I donβt see this as a real issue in the general case. πopensslcmd = fnβ Path to the openssl command. The OHCredentials service needsopenssl 1.1.xor newer. Path to the openssl command to use if the system one (in/usr/bin) is too old. Not set by default. π¦cachedir = dfnβ Directory used to store cached data. Only used for the OpenHome queue metadata for now. The default value is~/.cache/upmpdclifor normal users or/var/cache/upmpdcliwhenupmpdcliis started as root. π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. π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. πmpdhost = stringβ Host MPD runs on. Defaults tolocalhost. This can also be specified as-h host. πmpdport = intβ IP port used by MPD. Can also be specified as-p port. Defaults to the normal MPD port,6600. πmpdpassword = stringβ MPD password. Password for connecting to MPD (only necessary if password access is enabled in the MPD configuration file). π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. π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. π₯onstart = fnβ Command to run when playback is about to begin. Specify the full path to the program, e.g./usr/bin/logger. β¨onplay = fnβ Command to run when MPD state switches to"PLAY". Specify the full path to the program, e.g./usr/bin/logger. πonpause = fnβ Command to run when MPD state switches to"PAUSE". Specify the full path to the program, e.g./usr/bin/logger. πΈonstop = fnβ Command to run when MPD state switches to"STOP". Specify the full path to the program, e.g./usr/bin/logger. π¦onstandby = fnβ Command to run when thesetstandbyaction is called. Specify the full path to the program. It is called with one0/1argument to change the standby state (1for 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. π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 ofonvolumechangeandgetexternalvolume. ποΈgetexternalvolume = fnβ Command to run for reading the sound volume. The command should write a0-100numeric value to stdout. πonvolumechange = fnβ Command to run to set the volume. Used whenexternalvolumecontrolis set. Specify the full path to the program, which is called with the volume as the first argument, e.g./some/script 85. πavtautoplay = stringβ Automatically fake a Play command when track is set. The UPnP/AVSetAVTransportURI, 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 receivingSetAVTransportURI. This is needed by some control points which do not send the Play command. π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.ProductRoomis 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 sameProductRoomname. πradiolist(fn) β bestie, this is the path to an external file full of radio station definitions π and here's the tea: you can define your radio stations in this main config file, in an external file, or literally both at once. The external file is the whole point of the vibe β it makes it way easier to hand the same setup to a bunch of machines, keeps things readable, and yep, it's the default now. Peep the distributed file (the name's below π) for the deets on how a radio station actually gets defined. Oh and heads up: if you do wanna define radios right here in the main config file, they MUST come at the very end of the file β that's non-negotiable β because they're defined as subsections, and the last one just keeps going all the way to the end of the file. no cap πradioscripts(fn) β the radio metadata scripts directory, aka where the scripts that fetch channel metadata live. Default is/usr/share/upmpdcli/radio_scripts. Important little note: the scripts are always looked for first in the locations defined by$PATHπ¦ohmanufacturername(string) β the manufacturer name. that's it. that's the whole thing β¨ohmanufacturerinfo(string) β manufacturer information.ohmanufacturerurl(string) β URL for the manufacturer's web site.ohmanufacturerimageuri(string) β the Uri for the manufacturer's logo πohmodelname(string) β model name.ohmodelinfo(string) β model information.ohmodelurl(string) β URL for the model's web site.ohmodelimageuri(string) β Uri for the model's icon.ohproductname(string) β the user-visible product name π by default this is set toModelName.ohproductinfo(string) β product information.ohproducturl(string) β URL for the product web site. This may be the UPnP presentation page πohproductimageuri(string) β Uri for the product image.ohmetapersist(bool) β save queue metadata to disk,0/1style. This is what lets your metadata info survive across restarts, the default is1, and honestly there is no reason to turn it off π«Άohmetasleep(int) β minimum interval, in seconds, between two cache saves. Bumping this up may improve playlist load speed on a slow device (slay for your crusty hardware). The default behaviour is to start a new save as soon as the previous one is done β that's if the list changed again in between.msfriendlyname(string) β the friendly name for the Media Server (if it's enabled). Default vibe is to append-mediaserverto thefriendlynamevalue β¨msrootalias(string) β the Media Server root alias Object ID π₯ use the specified Media Server container as root. When the Control Point connects it'll show you this container directly, which saves you from having to skip over the top levels if you don't use them (e.g. the active plugin list when there's only one plugin). The value is an UPnP object ID, which β tragic β is not generally obtainable from Control Points. But the commonly useful values are super simple:0$uprcl$β direct access to the Local Media root0$uprcl$foldersβ direct access to the Local Media [folders] tree
An alias must begin with 0 (that's 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 of it would depend on the plugin type π
plgmicrohttphost(string) β the hostname/IP address used in proxy URLs. Default is to use the same host/address as the UPnP server. Switching tolocalhost/127.0.0.1instead loses your ability to stream to a remote renderer β but it does give you portable playlists, so, tradeoffs πplgmicrohttpport(int) β IP port for the Subsonic, Tidal, or Qobuz local HTTP service. The URLs for tracks streamed from these services point to a localmicrohttpdHTTP server running on this here port. It uses redirection to the actual service URL, or proxying from it, while streaming. Default is49149πplgproxymethod(string) β decides whether we proxy (copy from the service to the renderer) or redirect the streaming services' streams π This setting is all about how responses from a streaming service get handled β think Subsonic, Tidal, Qobuz. The URLs these services hand out are usually short-lived, which means they literally can't be part of a playlist. So upmpdcli hides these resources behind a stable URL that gets presented to the renderer (the player).
With the "redirect" default setting, that stable URL becomes an HTTP 302 redirection pointing to the original streaming resource. The renderer has to resolve that redirection and then it can stream from the original location. Some renderers β e.g. AV receivers β are just not able to follow an HTTP redirection π
With the "proxy" setting, the original URL stays concealed and there's no redirection at all. upmpdcli reads the music from the remote service and serves it to the renderer in parallel. It requires more resources compared to redirection and is less efficient, but some renderers simply don't support HTTP redirection, so here we are π
msiconpath(fn) β path to the Media Server icon. The image will be displayed by Control Points that support it. But because of current (and probably permanent) upmpdcli limitations, the image file must be a 64x64 32-bits-per-pixel png file. Default:'$pkgdatadir/icon.png'. Also the icon is only read once, when upmpdcli starts up πΈwebserverdocumentroot(string) β the path from which the UPnP HTTP server will serve files. The values go:0= none,1= auto, or an absolute path = use it. Some Mediaserver plugins need this, e.g. for serving icon files or cached data. Default value is1, which results in an actual path of/var/cache/upmpdcli/wwwor~/.cache/upmpdcli/wwwβ¨hrauser(string) β Hra user name. Like, your Hra login name πhrapass(string) β Hra password. The password for your Hra account. keep it secret, keep it safe πhralang(string) β Hra language setting (en/de). Some Highresaudio messages will be set in the appropriate language π¬hratitle(string) β Plugin Title. This gets displayed as the plugin entry in the Media Server root directory πqobuzuser(string) β Qobuz user name, and the value may be bogus π Basically your Qobuz login name β but here's the thing, it must be set to activate the Media Server plugin, and the actual value is not used. So yes, you can put nonsense. iconic.qobuzformatid(cstr) β Qobuz stream quality.5for mp3/320,6for FLAC,7FLAC 24/96,27for hi-res (if your subscription allows streaming each of the formats) π§qobuzrenumtracks(bool) β Qobuz track renumbering. Renumbers tracks by counting elements, which avoids issues with Kodi. Enabled by default π¦qobuzexplicititemnumbers(bool) β explicit item numbers in brackets. Adds item numbers in square brackets in lists, mostly for kodi compatibility/usability. Disabled by default πqobuzprependartisttoalbum(bool) β artist name before albums in album lists. Prepend artist to album in album lists, mostly for kodi compatibility/usability. Disabled by default.qobuztitle(string) β Plugin Title. This will be displayed as the plugin entry in the Media Server root directory πtidaluser(string) β bogus user name variable π It decides if the service should be started. Set it to any arbitrary value and you're good.tidaltokentype(string) β Oath2 authentication token type. The type of token used for OAUTH2 authentication β typicallyBearerπtidalaudioquality(cstr) β Tidal maximum stream quality.LOWfor mp3/96,HIGHfor mp3/320,LOSSLESSfor FLAC 16/44,HI_RESfor FLAC up to 24/48,HI_RES_LOSSLESSfor hi-res FLAC files (if your subscription allows streaming each of the formats) π₯tidaltitle(string) β Plugin Title. This will be displayed as the plugin entry in the Media Server root directory πtidalprependnumberinitemlist(bool) β use item numbers in album lists for kodi compatibility. Kodi always tries to sort things, and with this parameter we force it to show the entries in the desired order π€ periodt.tidalenableimagecaching(bool) β enables image caching, requireswebdocumentroot. Lets the plugin cache images for Artists and Albums β requireswebdocumentrootand some disk space, recommended πtidalsearchlimit(int) β Tidal search limit. Sets the maximum number of items returned by search, defaults to15πtidaloverridecountrycode(string) β override the country code. This lets you specify the desired two-letter country code π When not specified, it should default to the country code of the profile.tidaltrackidregex(string) β track id regex expression. The expression used to validate thetrack_idintrackuri. Do not set it unless you know what you are doing β οΈ like, seriously, don't.tidalverboselogging(bool) β enables verbose logging, defaults to0(no). Turns on more verbose logging, which might be useful for testing πuprcluser(string) β bogus user name variable, used for consistency with the other Media Server plugins to decide if the service should be started (so yeah, do set it if you want a Media Server). You probably also want to setuprclautostart=1so that initialisation kicks off as soon as the program does πuprcltitle(string) β Plugin Title. This will be displayed as the plugin entry in the Media Server root directory β¨uprclmediadirs(string) β media directories. This is a space-separated list of directories to explore for music files π΅ It's used directly as the recoll"topdirs"value, so you can use double-quote quoting for paths with embedded spaces. If it's not set, we'll try to usecontentDirsfrom the Minim config. An error will occur if both are empty πuprclnoradioconf(bool) β don't make the local radio list as a playlist. By default uprcl will process the local radio list and make it available as a playlist (in the Playlists top container). That can slow down initialisation and is useless if the upradios plugin is also running, so you can disable it with this variable πuprclhostport= string β the host AND port where the Uprcl HTTP server serves your media files, bestie. Uprcl runs a whole separate HTTP server built on the Python Bottle framework + the Waitress server π. That server listens on this address and port, and the same address:port gets baked into the URLs we hand out. If you don't set this variable, we default to port9090and the same address as the server used for the other services (eitherplgmicrohttphostor the first ipv4 address used by the upnp layer. not. β yes the page literally says "not." there, we're keeping it, iconic π). Example:192.168.1.1:9090. Since it's lowkey reasonable to use the same address as the upnp layer, check outuprclporttoo if you only wanna specify the port.uprclport= string β the Uprcl HTTP server port for serving media files π. This is the port we listen on for media requests. The listen address is eitherplgmicrohttphostif that's set, or the first ipv4 address used by the upnp layer. Ignored ifuprclhostportis set (hostport ate and left no crumbs).uprclconfdir= dfn β the uprcl Recoll index directory β¨. Usually not defined at all, and it defaults to/var/cache/upmpdcli/uprcl. The name is a lil misleading ngl, because there's barely any real configuration data in there: it's mostly programmatically generated from actual configuration found elsewhere (but also peek atuprclconfrecolluserπ).uprclconfrecolluser= fn β the name of the user Recoll config additions file π . This is a file full of extra parameters for the uprclrecoll.conffile, and its contents get appended before indexing. Default is/var/cache/upmpdcli/uprcl/recoll.conf.user. If you set it, it should be an absolute path, no exceptions.uprclminimconfig= fn β the name of a Minim Server configuration file πΈ. If set, this is the Minim Server config file we fetch parameters likealiasTags, etc. from (see the manual). Not set by default, and totally optional.uprclnotagview= bool β suppress the folder "Tag View" entries π¦. The "Tag View" entry lets you browse a subdirectory by tags. It can be genuinely quite useful, but it's also a problem with some Control Points, or with certain kinds of usage. So: your call.uprclnoindexing= bool β don't run the indexer on startup π. Mostly for gaining time when you're restarting the server over and over for debugging. Speedrun vibes.
upradiosuser= string β a bogus user name variable π. It exists for consistency with the other Media Server plugins, which use it to decide if the service should be started β so yeah, do set it if you want to see the radio list π».upradiostitle= string β the plugin Title π. This is what shows up as the plugin entry in the Media Server root directory.upradiosmaxthreads= int β the 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 this process up, and this is the max thread count. Parallel slay.
radio-browseruser= string β a bogus user name variable π. It decides if the service should be started. Set it to any arbitrary value, literally anything, we don't care.radio-browsertitle= string β the plugin Title π. Displayed as the plugin entry in the Media Server root directory.radio-browseripinfotoken= string β your IPInfo token β. Set your ipinfo token in order to have the shortcut to the local radios.radio-browsercountry= string β the preferred country π. Set this to the preferred country in order to have the shortcut to the local radios. This is the alternative to using the ipinfo token. The value is specified in the form of a country code, e.g.FR,IT, etc.
radio-paradiseuser= string β a bogus user name variable π. Decides if the service should be started. Set it to any arbitrary value.radio-paradisetitle= string β the plugin Title π. Displayed as the plugin entry in the Media Server root directory.
mother-earth-radiouser= string β a bogus user name variable π. Decides if the service should be started. Set it to any arbitrary value.mother-earth-radiotitle= string β the plugin Title π. Displayed as the plugin entry in the Media Server root directory.
subsonicuser= string β the SubSonic user name π«Ά. Decides if the service should be started. Set it to the appropriate user name.subsonicpassword= string β the SubSonic password π. Required for SubSonic authentication. Set it to the appropriate password.subsoniclegacyauth= bool β SubSonic legacy authentication mode π. Required for SubSonic authentication with some servers (e.g.lms). Set to1to enable.subsonicuseragent= string β the SubSonic user agent π§. Lets you specify the user agent in http requests; defaults toupmpdcli.subsonicskipuseragent= bool β force the user agent to be empty π. You might wanna enable this one in case the default user agent causes some trouble. YMMV, bestie.subsonicbaseurl= string β the SubSonic server base url πΈ. The URL of the server, without the port. Specifyhttporhttps.subsonicport= int β the SubSonic server port π. The port of the SubSonic server.subsonicserverpath= string β the SubSonic server path π¦. Optional β use only if the server is exposed on a specific path.subsonicitemsperpage= int β SubSonic items per page β¨. Number of items per page for SubSonic.subsoniccachetimeoutartists= int β SubSonic cache timeout for artists π. Cache timeout for artists, defaults to600.subsonicappendyeartoalbumcontainer= bool β append year to album container β. If enabled, the year will be appended to the album as a container. Enabled by default.subsonicappendyeartoalbumview= bool β append year to album view π. If enabled, the year will be appended to the album view. Disabled by default.subsonicappendyeartoalbumsearchres= bool β append year to album as search result π. If enabled, the year will be appended to the album as a search result. Disabled by default.subsonicappendrolestoartist= bool β append roles to artists π€. If enabled, the artist roles will be appended to artist entries. Enabled by default.subsonictranscodecodec= string β enable transcoding π₯. If a value is set, it will be used as the codec for the transcoding process. The value should be the file extension of the desired format (without the leading dot), e.g."mp3"or"flac", as this will provide the ground for communicating the correct MIME type to the renderer.
This is a free-form text that's used in the communication between the Subsonic server (e.g. Navidrome) and upmpdcli. The server must have the corresponding entry for this format value to start the assigned transcoding command.
Transcoding doesn't happen for files that are already in the required format. Periodt.
subsonictranscodemaxbitrate= int β set max bitrate for transcoding ποΈ. If a value is set, it will be used as the max bitrate for the transcoding process.subsonicserversidescrobbling= bool β enable server-side scrobbling π. If enabled, we will scrobble the song when streaming starts. Disabled by default.subsonicprependnumberinalbumlist= bool β add a progressive number to album in album lists π’. Mostly for Kodi compatibility and usability. Enabled by default.subsonictaginitialpageenabledir= bool β Subsonic enable Internet Radios π». Enables Internet Radios. Disabled by default, because upmpdcli offers multiple ways of handling Internet Radios.subsonicshowemptyfavorites= bool β Subsonic show empty Favorites entries β. Force entries for Favorites, even if there are no Favorites. Disabled by default.subsonicshowemptyplaylists= bool β Subsonic show empty Playlists entry π§. Force entry for Playlists, even if there are no Playlists. Disabled by default.subsonictitle= string β the plugin Title π. Displayed as the plugin entry in the Media Server root directory.subsonicallowappendgenreinalbumview= bool β Subsonic show genres in album view π. Show Genres in album view. Disabled by default.subsonicallowgenreinalbumcontainer= bool β Subsonic show genres in album container entry π. Show Genres in album container, used in album lists. Disabled by default.subsonicenableimagecaching= bool β enables image caching, requireswebdocumentrootπΌοΈ. Allows the plugin to cache images from the server; requireswebdocumentrootand some disk space. Recommended.subsonicenablecachedimageagelimit= bool β enables pruning for image cache, requireswebdocumentrootπ§Ή. Allows the plugin to remove old cache images from the server. Recommended.subsoniccachedimagemaxagedays= int β age limit for image files in image cache in days π . Sets the maximum image file age in days, relevant when pruning is enabled.subsonicallowartistcoverart= bool β enables use of cover art from artists, enabled by default π¨. Set it to0in order to avoid usingcoverArtfrom artists, which can be expensive/slow against Navidrome if Spotify is enabled.subsonicenablemaintenancefeatures= bool β enables maintenance features, e.g. list albums without MusicBrainz Id π οΈ. Set it to1in order to enable library maintenance features. Disabled by default.subsonicartistalbumnewestfirst= bool β show artist albums from newest to older if left empty or set to1π. Allows you to change the sort order for artist albums. Set it to0if you want the order to be ascending instead of descending (default).subsonicmaxrandomsonglistsize= int β number of songs in Random Songs (list) π². Set the maximum number of songs in Random Songs (list), defaults to250, cannot be more than 500.
bbcuser= string β a bogus user name variable π. Set this to activate the plugin; the value is ignored.bbcprogrammedays= string β past days in BBC Sounds catalog listing ποΈ. This controls how many days are listed in the station displays.bbctitle= string β the plugin Title π. Displayed as the plugin entry in the Media Server root directory.
sclogfilename= fn β log file name forsc2mpd(defaultstderr) π. The value must not be the same as the one used forupmpdcli(except if empty). Don't do it, bestie, it will not slay.scloglevel= int β log verbosity forsc2mpdπ.scplaymethod = cstrβ the sc2mpd play method, eithermpdoralsa. With this set asalsa, 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.
β οΈ Foralsa, make sure that userupmpdclihas permission to access the audio devices !
schttpport = intβ port used by sc2mpd for MPD to connect to. Used only forscplaymethod=mpd. sc2mpd only accepts connections fromlocalhost.scalsadevice = stringβ Alsa device used by sc2mpd for playing audio. Only used forscplaymethod=alsa. Useaplay -Lto see the possible values.sccvttype = cstrβ sc2mpd resampling method. Only used forscplaymethod=alsa. sc2mpd uses libsamplerate. The default method isSRC_SINC_FASTESTand 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 aboveSRC_SINC_FASTESTneeds a serious CPU.BEST_QUALITYuses approx 25% cpu on a core i7 4770T. Obviously too much, actually might not be sustainable (itβs almost 100% of 1 cpu).MEDIUM_QUALITYis around 10% on the same machine,FASTESTis 4-5%. Given that this is measured for the full process, probably a couple % for the conversion in fact.NONEwill turn resampling off: minimum CPU and best quality, but guaranteed glitches from time to time, depending on the clocks skew.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 whenscplaymethodisalsa.sc2mpd = stringβ path tosc2mpd. Only useful if it is not in/usr/binand the location is not in the$PATHfor the init scripts.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.scstreamcodec = stringβ codec to use for the network stream.
π¨ !!Standard Songcast receivers only support PCM!! Set to empty orPCMto support foreign receivers. Or useFLACorOPUSfor lower network load.
scsenderpath = fnβ path to starter script. This is normallyscmakempdsenderwhich starts the auxiliary mpd and the sender process. Empty and searched in thePATHby default.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.scsendermpdport = intβlocalhostport to be used by the auxiliary mpd.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.scscriptgracesecs = intβ grace period to wait for a script process to exit before it is forcely killed. In seconds. Default2 S.
π SEE ALSO π
okay thatβs the whole page bestie π this one is UPMPDCLI.CONF(5) from upmpdcli 1.8.8, dated Mar 04, 2024 β periodt β¨
π¦ where this page comes from
- alpine 3.24: upmpdcli-doc 1.9.17-r0 Β· LGPL-2.1-or-later
- arch rolling: upmpdcli 1.9.17-2 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms