Files with apostrophe in the filename cannot be played
I am using upmpdcli 1.7.0 (libupnpp 0.22.4) on a Raspberry Pi 1B (Raspbian 11.6). I use Symfonium (https://symfonium.app/) as control point and Kodi (Matrix, 19.5) as UPnP server. I am unable to play songs that have an apostrophe ' in the filename. The developer of Symfonium, whom I am in close contact with, said that the apostrophe does not necessarily need to be URL encoded, and his app accordingly does not encode it when passing the URL to upmpdcli. It seems upmpdcli cannot deal with it then.
This seems to be the relevant log snippet - please let me know if you need more logs. For reference, the issues has been posted with the Symfonium support here: https://support.symfonium.app/t/files-with-apostrophe-in-the-file-name-cannot-be-played-via-upnp/1452/7
:4:libupnpp/upnpplib.cxx:208::LibUPnP: serveronly 1 ifnames [] inip [] port 0
:3:libupnpp/upnpplib.cxx:244::LibUPnP: Using IPV4 192.168.26.204 port 49152 IPV6 port 49152
:4:libupnpp/device/device.cxx:541::UpnpDevice::addService: [urn:upnp-org:serviceId:ContentDirectory]
:4:libupnpp/device/device.cxx:541::UpnpDevice::addService: [urn:upnp-org:serviceId:ConnectionManager]
:4:src/main.cxx:194::Media server event loop
:4:src/mpdcli.cxx:131::MPDCLi::openconn: mpd protocol version: 0.22.4
:4:src/mpdcli.cxx:140::MPDCli::startEventLoop
:4:libupnpp/device/device.cxx:541::UpnpDevice::addService: [urn:upnp-org:serviceId:AVTransport]
:4:libupnpp/device/device.cxx:541::UpnpDevice::addService: [urn:upnp-org:serviceId:RenderingControl]
:4:libupnpp/device/device.cxx:541::UpnpDevice::addService: [urn:upnp-org:serviceId:ConnectionManager]
:4:src/main.cxx:759::Renderer event loop
:4:src/mpdcli.cxx:189::MPDCli::pollerCtl: mpd is not playing
:4:libupnpp/device/device.cxx:437::UPNP_CONTROL_ACTION_REQUEST: GetProtocolInfo args:
:4:src/conman.cxx:97::UpMpdConMan::getProtocolInfo
:4:libupnpp/device/device.cxx:480::Response data: Source =
Sink = http-get:*:audio/L16:DLNA.ORG_PN=LPCM,http-get:*:application/flac:*,http-get:*:application/x-flac:*,http-get:*:application/ogg:*,http-get:*:audio/flac:*,http-get:*:audio/x-flac:*,http-get:*:audio/aac:*,http-get:*:audio/x-aiff:*,http-get:*:audio/aif:*,http-get:*:audio/aiff:*,http-get:*:audio/dff:*,http-get:*:audio/x-dff:*,http-get:*:audio/dsd:*,http-get:*:audio/x-dsd:*,http-get:*:audio/dsf:*,http-get:*:audio/x-dsf:*,http-get:*:audio/m4a:*,http-get:*:audio/x-m4a:*,http-get:*:audio/matroska:*,http-get:*:audio/x-matroska:*,http-get:*:audio/mp1:*,http-get:*:audio/mp3:*,http-get:*:audio/mp4:*,http-get:*:audio/mpeg:*,http-get:*:audio/x-mpeg:*,http-get:*:audio/ogg:*,http-get:*:audio/vorbis:*,http-get:*:audio/x-ape:*,http-get:*:audio/ape:*,http-get:*:audio/x-monkeys-audio:*,http-get:*:audio/wav:*,http-get:*:audio/x-wav:*,http-get:*:audio/wave:*,http-get:*:audio/x-ms-wma:*,http-get:*:audio/x-ogg:*,http-get:*:audio/x-scpls:*,http-get:*:audio/x-vorbis+ogg:*,http-get:*:audio/x-vorbis:*,http-get:*:audio/x-wavpack:*,http-get:*:video/mp4:*
:4:libupnpp/device/device.cxx:437::UPNP_CONTROL_ACTION_REQUEST: GetTransportInfo args: InstanceID = 0
:4:libupnpp/device/device.cxx:480::Response data: CurrentTransportState = STOPPED
CurrentTransportStatus = OK
CurrentSpeed = 1
:4:libupnpp/device/device.cxx:437::UPNP_CONTROL_ACTION_REQUEST: GetVolume args: InstanceID = 0
Channel = Master
:4:libupnpp/device/device.cxx:480::Response data: CurrentVolume = 75
:4:libupnpp/device/device.cxx:437::UPNP_CONTROL_ACTION_REQUEST: Stop args: InstanceID = 0
:4:src/avtransport.cxx:649::AVTransport::playcontrol State: 1 what 0
:4:libupnpp/device/device.cxx:480::Response data:
:4:libupnpp/device/device.cxx:437::UPNP_CONTROL_ACTION_REQUEST: GetPositionInfo args: InstanceID = 0
:4:libupnpp/device/device.cxx:480::Response data: Track = 0
TrackDuration = 00:00:00
TrackMetaData =
TrackURI =
RelTime = 0:00:00
AbsTime = 0:00:00
RelCount = 0
AbsCount = 0
:4:libupnpp/device/device.cxx:437::UPNP_CONTROL_ACTION_REQUEST: GetMute args: InstanceID = 0
Channel = Master
:4:libupnpp/device/device.cxx:480::Response data: CurrentMute = 0
:4:libupnpp/device/device.cxx:437::UPNP_CONTROL_ACTION_REQUEST: GetVolume args: InstanceID = 0
Channel = Master
:4:libupnpp/device/device.cxx:480::Response data: CurrentVolume = 75
:4:libupnpp/device/device.cxx:437::UPNP_CONTROL_ACTION_REQUEST: Stop args: InstanceID = 0
:4:src/avtransport.cxx:649::AVTransport::playcontrol State: 1 what 0
:4:libupnpp/device/device.cxx:480::Response data:
:4:libupnpp/device/device.cxx:437::UPNP_CONTROL_ACTION_REQUEST: Stop args: InstanceID = 0
:4:src/avtransport.cxx:649::AVTransport::playcontrol State: 1 what 0
:4:libupnpp/device/device.cxx:480::Response data:
:4:libupnpp/device/device.cxx:437::UPNP_CONTROL_ACTION_REQUEST: GetTransportInfo args: InstanceID = 0
:4:libupnpp/device/device.cxx:480::Response data: CurrentTransportState = STOPPED
CurrentTransportStatus = OK
CurrentSpeed = 1
:4:libupnpp/device/device.cxx:437::UPNP_CONTROL_ACTION_REQUEST: GetPositionInfo args: InstanceID = 0
:4:libupnpp/device/device.cxx:480::Response data: Track = 0
TrackDuration = 00:00:00
TrackMetaData =
TrackURI =
RelTime = 0:00:00
AbsTime = 0:00:00
RelCount = 0
AbsCount = 0
:4:libupnpp/device/device.cxx:437::UPNP_CONTROL_ACTION_REQUEST: GetVolume args: InstanceID = 0
Channel = Master
:4:libupnpp/device/device.cxx:480::Response data: CurrentVolume = 75
:4:libupnpp/device/device.cxx:437::UPNP_CONTROL_ACTION_REQUEST: SetAVTransportURI args: InstanceID = 0
CurrentURI = http://192.168.26.203:8080/vfs/%2Fmedia%2FMEATPI%2FMusik%2FRock_Pop_Indie%2FCarpenters%2F1970A%20-%20Close%20to%20You%2F01%20We've%20Only%20Just%20Begun.mp3
CurrentURIMetaData = <DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:sec="http://www.sec.co.kr/" xmlns:dc="http://purl.org/dc/elements/1.1/"><item restricted="1" id="018eb543-6650-4686-87e8-c04046a43de1" parentID="0"><upnp:album>Close to You</upnp:album><upnp:class>object.item.audioItem.musicTrack</upnp:class><upnp:genre>Rock/Pop/Indie</upnp:genre><upnp:artist>Carpenters</upnp:artist><res duration="0:03:05.000" protocolInfo="http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000">http://192.168.26.203:8080/vfs/%2Fmedia%2FMEATPI%2FMusik%2FRock_Pop_Indie%2FCarpenters%2F1970A%20-%20Close%20to%20You%2F01%20We've%20Only%20Just%20Begun.mp3</res><upnp:originalTrackNumber>1</upnp:originalTrackNumber><upnp:albumArtURI>http://192.168.26.22:44463/96116d29427e8c129dc39f1e49e738ba/%2Fstorage%2F12A0-126B%2FAndroid%2Fdata%2Fapp.symfonik.music.player%2Fcache%2Fimages%2F7%2F74AC2884FADD5125251DD0536B05E9D0.jpg#FromSymfonium</upnp:albumArtURI><dc:title>We've Only Just Begun</dc:title></item></DIDL-Lite>
:4:src/avtransport.cxx:441::Set(next)AVTransportURI: next 0 uri http://192.168.26.203:8080/vfs/%2Fmedia%2FMEATPI%2FMusik%2FRock_Pop_Indie%2FCarpenters%2F1970A%20-%20Close%20to%20You%2F01%20We've%20Only%20Just%20Begun.mp3 metadata[<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:sec="http://www.sec.co.kr/" xmlns:dc="http://purl.org/dc/elements/1.1/"><item restricted="1" id="018eb543-6650-4686-87e8-c04046a43de1" parentID="0"><upnp:album>Close to You</upnp:album><upnp:class>object.item.audioItem.musicTrack</upnp:class><upnp:genre>Rock/Pop/Indie</upnp:genre><upnp:artist>Carpenters</upnp:artist><res duration="0:03:05.000" protocolInfo="http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000">http://192.168.26.203:8080/vfs/%2Fmedia%2FMEATPI%2FMusik%2FRock_Pop_Indie%2FCarpenters%2F1970A%20-%20Close%20to%20You%2F01%20We've%20Only%20Just%20Begun.mp3</res><upnp:originalTrackNumber>1</upnp:originalTrackNumber><upnp:albumArtURI>http://192.168.26.22:44463/96116d29427e8c129dc39f1e49e738ba/%2Fstorage%2F12A0-126B%2FAndroid%2Fdata%2Fapp.symfonik.music.player%2Fcache%2Fimages%2F7%2F74AC2884FADD5125251DD0536B05E9D0.jpg#FromSymfonium</upnp:albumArtURI><dc:title>We've Only Just Begun</dc:title></item></DIDL-Lite>]
:2:src/upmpd.cxx:340::checkContentFormat: uri not found in metadata resource list
:2:src/avtransport.cxx:450::set(Next)AVTransportURI: unsupported format: uri http://192.168.26.203:8080/vfs/%2Fmedia%2FMEATPI%2FMusik%2FRock_Pop_Indie%2FCarpenters%2F1970A%20-%20Close%20to%20You%2F01%20We've%20Only%20Just%20Begun.mp3 metadata [<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:sec="http://www.sec.co.kr/" xmlns:dc="http://purl.org/dc/elements/1.1/"><item restricted="1" id="018eb543-6650-4686-87e8-c04046a43de1" parentID="0"><upnp:album>Close to You</upnp:album><upnp:class>object.item.audioItem.musicTrack</upnp:class><upnp:genre>Rock/Pop/Indie</upnp:genre><upnp:artist>Carpenters</upnp:artist><res duration="0:03:05.000" protocolInfo="http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000">http://192.168.26.203:8080/vfs/%2Fmedia%2FMEATPI%2FMusik%2FRock_Pop_Indie%2FCarpenters%2F1970A%20-%20Close%20to%20You%2F01%20We've%20Only%20Just%20Begun.mp3</res><upnp:originalTrackNumber>1</upnp:originalTrackNumber><upnp:albumArtURI>http://192.168.26.22:44463/96116d29427e8c129dc39f1e49e738ba/%2Fstorage%2F12A0-126B%2FAndroid%2Fdata%2Fapp.symfonik.music.player%2Fcache%2Fimages%2F7%2F74AC2884FADD5125251DD0536B05E9D0.jpg#FromSymfonium</upnp:albumArtURI><dc:title>We've Only Just Begun</dc:title></item></DIDL-Lite>]
:2:libupnpp/device/device.cxx:471::UpnpDevice: Action failed: code -101
:4:libupnpp/device/device.cxx:437::UPNP_CONTROL_ACTION_REQUEST: Stop args: InstanceID = 0
:4:src/avtransport.cxx:649::AVTransport::playcontrol State: 1 what 0
:4:libupnpp/device/device.cxx:480::Response data:
:4:libupnpp/device/device.cxx:437::UPNP_CONTROL_ACTION_REQUEST: GetTransportInfo args: InstanceID = 0
:4:libupnpp/device/device.cxx:480::Response data: CurrentTransportState = STOPPED
CurrentTransportStatus = OK
CurrentSpeed = 1
:4:libupnpp/device/device.cxx:437::UPNP_CONTROL_ACTION_REQUEST: SetNextAVTransportURI args: InstanceID = 0
NextURI = http://192.168.26.203:8080/vfs/%2Fmedia%2FMEATPI%2FMusik%2FRock_Pop_Indie%2FCarpenters%2F1970A%20-%20Close%20to%20You%2F03%20Maybe%20It's%20You.mp3
NextURIMetaData = <DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:sec="http://www.sec.co.kr/" xmlns:dc="http://purl.org/dc/elements/1.1/"><item restricted="1" id="a5692e78-f0ec-4fbc-bded-c2899eea3e01" parentID="0"><upnp:album>Close to You</upnp:album><upnp:class>object.item.audioItem.musicTrack</upnp:class><upnp:genre>Rock/Pop/Indie</upnp:genre><upnp:artist>Carpenters</upnp:artist><res duration="0:03:06.000" protocolInfo="http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000">http://192.168.26.203:8080/vfs/%2Fmedia%2FMEATPI%2FMusik%2FRock_Pop_Indie%2FCarpenters%2F1970A%20-%20Close%20to%20You%2F03%20Maybe%20It's%20You.mp3</res><upnp:originalTrackNumber>3</upnp:originalTrackNumber><upnp:albumArtURI>http://192.168.26.22:44463/96116d29427e8c129dc39f1e49e738ba/%2Fstorage%2F12A0-126B%2FAndroid%2Fdata%2Fapp.symfonik.music.player%2Fcache%2Fimages%2F7%2F74AC2884FADD5125251DD0536B05E9D0.jpg#FromSymfonium</upnp:albumArtURI><dc:title>Maybe It's You</dc:title></item></DIDL-Lite>
:4:src/avtransport.cxx:441::Set(next)AVTransportURI: next 1 uri http://192.168.26.203:8080/vfs/%2Fmedia%2FMEATPI%2FMusik%2FRock_Pop_Indie%2FCarpenters%2F1970A%20-%20Close%20to%20You%2F03%20Maybe%20It's%20You.mp3 metadata[<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:sec="http://www.sec.co.kr/" xmlns:dc="http://purl.org/dc/elements/1.1/"><item restricted="1" id="a5692e78-f0ec-4fbc-bded-c2899eea3e01" parentID="0"><upnp:album>Close to You</upnp:album><upnp:class>object.item.audioItem.musicTrack</upnp:class><upnp:genre>Rock/Pop/Indie</upnp:genre><upnp:artist>Carpenters</upnp:artist><res duration="0:03:06.000" protocolInfo="http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000">http://192.168.26.203:8080/vfs/%2Fmedia%2FMEATPI%2FMusik%2FRock_Pop_Indie%2FCarpenters%2F1970A%20-%20Close%20to%20You%2F03%20Maybe%20It's%20You.mp3</res><upnp:originalTrackNumber>3</upnp:originalTrackNumber><upnp:albumArtURI>http://192.168.26.22:44463/96116d29427e8c129dc39f1e49e738ba/%2Fstorage%2F12A0-126B%2FAndroid%2Fdata%2Fapp.symfonik.music.player%2Fcache%2Fimages%2F7%2F74AC2884FADD5125251DD0536B05E9D0.jpg#FromSymfonium</upnp:albumArtURI><dc:title>Maybe It's You</dc:title></item></DIDL-Lite>]
:2:src/upmpd.cxx:340::checkContentFormat: uri not found in metadata resource list
:2:src/avtransport.cxx:450::set(Next)AVTransportURI: unsupported format: uri http://192.168.26.203:8080/vfs/%2Fmedia%2FMEATPI%2FMusik%2FRock_Pop_Indie%2FCarpenters%2F1970A%20-%20Close%20to%20You%2F03%20Maybe%20It's%20You.mp3 metadata [<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:sec="http://www.sec.co.kr/" xmlns:dc="http://purl.org/dc/elements/1.1/"><item restricted="1" id="a5692e78-f0ec-4fbc-bded-c2899eea3e01" parentID="0"><upnp:album>Close to You</upnp:album><upnp:class>object.item.audioItem.musicTrack</upnp:class><upnp:genre>Rock/Pop/Indie</upnp:genre><upnp:artist>Carpenters</upnp:artist><res duration="0:03:06.000" protocolInfo="http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000">http://192.168.26.203:8080/vfs/%2Fmedia%2FMEATPI%2FMusik%2FRock_Pop_Indie%2FCarpenters%2F1970A%20-%20Close%20to%20You%2F03%20Maybe%20It's%20You.mp3</res><upnp:originalTrackNumber>3</upnp:originalTrackNumber><upnp:albumArtURI>http://192.168.26.22:44463/96116d29427e8c129dc39f1e49e738ba/%2Fstorage%2F12A0-126B%2FAndroid%2Fdata%2Fapp.symfonik.music.player%2Fcache%2Fimages%2F7%2F74AC2884FADD5125251DD0536B05E9D0.jpg#FromSymfonium</upnp:albumArtURI><dc:title>Maybe It's You</dc:title></item></DIDL-Lite>]
:2:libupnpp/device/device.cxx:471::UpnpDevice: Action failed: code -101
:4:libupnpp/device/device.cxx:437::UPNP_CONTROL_ACTION_REQUEST: GetPositionInfo args: InstanceID = 0
:4:libupnpp/device/device.cxx:480::Response data: Track = 0
TrackDuration = 00:00:00
TrackMetaData =
TrackURI =
RelTime = 0:00:00
AbsTime = 0:00:00
RelCount = 0
AbsCount = 0
:4:libupnpp/device/device.cxx:437::UPNP_CONTROL_ACTION_REQUEST: GetVolume args: InstanceID = 0
Channel = Master
:4:libupnpp/device/device.cxx:480::Response data: CurrentVolume = 75